From: Brett Parker Date: Sat, 17 Mar 2018 15:30:24 +0000 (+0000) Subject: New upstream version 1.2.3 X-Git-Tag: upstream/1.2.3^0 X-Git-Url: https://git.sommitrealweird.co.uk/quagga-debian.git/commitdiff_plain/110ea29b8fe7d11de09e19382a9a5808cfb90d32?ds=sidebyside;hp=-c New upstream version 1.2.3 --- 110ea29b8fe7d11de09e19382a9a5808cfb90d32 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a8da62f..0000000 --- a/.gitignore +++ /dev/null @@ -1,45 +0,0 @@ -compile -config.log -config.h -config.cache -config.status -config.guess -config.sub -ltmain.sh -stamp-h -stamp-h[0-9]* -*-stamp -Makefile -INSTALL -.deps -depcomp -missing -install-sh -mkinstalldirs -autom4te*.cache -configure.lineno -configure -config.h.in -aclocal.m4 -Makefile.in -zebra-[0-9.][0-9.][0-9.]*.tar.gz -quagga-[0-9.][0-9.][0-9.]*.tar.gz -quagga-[0-9.][0-9.][0-9.]*.tar.gz.asc -.nfs* -libtool -.libs -.arch-inventory -.arch-ids -{arch} -build -.msg -.rebase-* -*~ -*.o -*.loT -m4/*.m4 -!m4/ax_sys_weak_alias.m4 -cscope.* -*.pb.h -*.pb-c.h -*.pb-c.c diff --git a/HACKING.md b/HACKING.md deleted file mode 100644 index 078de60..0000000 --- a/HACKING.md +++ /dev/null @@ -1,741 +0,0 @@ ---- -title: Conventions for working on Quagga -papersize: a4paper -geometry: a4paper,scale=0.82 -fontsize: 11pt -toc: true -date: \today -include-before: - \large This is a living document describing the processes and guidelines - for working on Quagga. You *must* read Section - ["REQUIRED READING"](#sec:required), before contributing to Quagga. - - Suggestions for updates, via the - [quagga-dev list](http://lists.quagga.net/mailman/listinfo/quagga-dev), - are welcome. \newpage -... - -\newpage - -OBJECTIVES {#sec:goals} -========== - -The objectives of the Quagga project are to develop and implement high -quality routing protocols and related software, maximising: - -* Free software: - * Quagga is and will remain a copyleft, free software project - * Some non-core parts may be available under compatible, permissive - licenses to facilitate code sharing, where contributors agree. - * The test and integration orchestration infrastructure shall be free - software, developed similarly to the rest of Quagga. Proprietary - conformance suites may be among the test tools orchestrated. -* Openness and transparency - * The business of the project shall be conducted on its public email - lists, to the greatest extent possible. - * The design of the software will be governed by open discussion on - the public email lists. - * Participants shall endeavour to be transparent about their interests - in the project, and any associations likely to be relevant. -* Ethical behaviour: - * The licenses of all copyright holders will be respected, and the - project will err in their favour where there is reasonable doubt or - legal advice to that effect. - * Participants will behave with respect for others, and in a manner that - builds and maintains the trust needed for productive collaboration. - -See also the Section on [CODE OF CONDUCT](#sec:codeconduct). - -Governance {#sec:governance} -========== - -Quagga is a Sociocracy, as it has been since its earliest days. - -Quagga was forked from GNU Zebra by Paul Jakma, who holds the domain name. -Governance was soon devolved to a collective group, the maintainers, -consisting of those who regularly contributed and reviewed code. The -details can easily be changed. - -You are free to use reason to _persuade_ others to adopt some alternative. -If, after that, you truly can not abide by what is mutually agreeable, you -are asked to do the honourable thing: take your copy of the code, make your -apologies, and be on your way with good grace. - -Those who repeatedly violate the [Code of Conduct](#sec:codeconduct) will be -asked to leave. - -Holding of project assets -------------------------- - -One or more mature, independent trustees, with technical and free software -experience, will be appointed as the executor(s) for key assets of the -project to ensure continuity, such as the domain name. - -Should a corporate vehicle ever be created to hold such assets it __must__: - -* Publish up to date accounts on a regular business. -* Generally operate openly and transparently. -* Have control distributed, with a significant degree of control held - independent of any contributors with business interests in the software. -* Carry out no other business itself that may be seen to conflict or compete - with the business of others in the community. -* Have all officers disclose all interests that could be - seen to have a bearing on the project, as far as is reasonable. - -It not clear at this time that the overheads and potential liabilities of -such a vehicle would be appropriate for this project. These principles -should though still be applied, where possible, to any non-corporate body -formed around the project. - -CODE OF CONDUCT {#sec:codeconduct} -=============== - -Participants will treat each other with respect and integrity. Participants -will build and treasure the trust that is required for parties to -successfully collaborate together on free software. Particularly when those -parties may have competing interests. The following principles and -guidelines should be followed to foster that trust: - -* Participants should be open about their goals, and their interests. - - Business associations with other participants should be disclosed, - so far as is reasonable and where applicable. E.g., if there is voting - on matters, or in endorsements or objections to contributions. - - Other associations and interests that may be relevant should be - disclosed, to the degree necessary to avoid any perception - by others of conflicts of interests or of deception. - - Be open about your goals, so as to maximise the common understanding - and minimise any misunderstandings and disputes. -* Design should be done in the open - - Do your design on list, ahead of significant implementation. Avoid - "Surprise!" development where possible. - - Where significant implementation work must be done behind closed - doors, accept that you may be asked to rework it, potentially from - scratch once you take it public. - - Get "buy in" from others ahead of time, to avoid disappointment. -* Interaction - - Feedback on design should be constructive, thoughtful and - understanding. - - Avoid personalising matters. Discuss the idea, the code, the abstract - subject and avoid unnecessary personal pronouns. - - Avoid language that paints either party into a corner. Leave some room - for doubt. Ask questions, rather than make assertions, where possible. -* Disputes should be resolved through calm, analytic discussion - - Separate out as much of the matter under dispute into principles that - can be agreed on, and into the objective domain (by measurement or - logic). - - Seek ways to resolve any remaining subjective differences by alternate - paths that can accommodate both sides, e.g., through abstraction or - modularisation. - - Aim for Win-Win. -* Respect others - - Avoid passive-aggressive behaviours. E.g., tit-for-tat - non-constructive behaviour. Be explicit. - - It is acceptable for management to allocate resources on development - according to their need. It is not acceptable to try use external, - management intervention to over-turn positions held by participants. - -REQUIRED READING {#sec:required} -================ - -Note well: By proposing a change to Quagga, by whatever means, you are -implicitly agreeing: - -- To licence your contribution according to the licence of any files in - Quagga being modified, _and_ according to the COPYING file in the - top-level directory of Quagga, other than where the contribution - explicitly and clearly indicates otherwise. - -- That it is your responsibility to ensure you hold whatever rights are - required to be able to contribute your changes under the licenses of the - files in Quagga being modified, and the top-level COPYING file. - -- That it is your responsibility to give with the contribution a full - account of all interests held and claims in the contribution; such as - through copyright, trademark and patent laws or otherwise; that are known - to you or your associates (e.g. your employer). - -Before contributing to Quagga, you *must* also read -[Section COMMIT MESSAGES](#sec:commit-messages). - -You _should_ ideally read the entire document, as it contains useful -information on the community norms and how to implement them. - -Please note that authorship and any relevant other rights information should -be _explicitly_ stated with the contribution. A "Signed-off-by" line is -_not_ sufficient. The "Signed-off-by" line is not used by the Quagga -project. - -You may document applicable copyright claims to files being modified or -added by your contribution. For new files, the standard way is to add a -string in the following format near the beginning of the file: - - Copyright (C) [, optional contact details] - -When adding copyright claims for modifications to an existing file, please -preface the claim with "Portions: " on a line before it and indent the -"Copyright ..." string. If such a case already exists, add your indented -claim immediately after. E.g.: - - Portions: - Copyright (C) .... - Copyright (C) [optional brief change description] - - -GUIDELINES FOR HACKING ON QUAGGA {#sec:guidelines} -================================ - -GNU coding standards apply. Indentation follows the result of -invoking GNU indent (as of 2.2.8a) with the -–nut argument. - -Originally, tabs were used instead of spaces, with tabs are every 8 columns. -However, tab’s interoperability issues mean space characters are now preferred for -new changes. We generally only clean up whitespace when code is unmaintainable -due to whitespace issues, to minimise merging conflicts. - -Be particularly careful not to break platforms/protocols that you -cannot test. - -Parsers or packet-writers of data from untrusted parties, particularly -remote ones, *MUST* use the lib/stream bounded-buffer abstraction, and use -its checked getters and putters. Twiddling of pointers based on contents of -untrusted data is _strongly_ discouraged - any such code is not acceptable, -unless there are very good reasons (e.g. compatibility with external or old -code that is not easily rewritten). - -New code should have good comments, which explain why the code is correct. -Changes to existing code should in many cases upgrade the comments when -necessary for a reviewer to conclude that the change has no unintended -consequences. - -Each file in the Git repository should have a git format-placeholder (like -an RCS Id keyword), somewhere very near the top, commented out appropriately -for the file type. The placeholder used for Quagga (replacing \ -with \$) is: - -`$QuaggaId: Format:%an, %ai, %h $` - -See line 2 of HACKING.tex, the source for this document, for an example. - -This placeholder string will be expanded out by the ‘git archive’ commands, -which is used to generate the tar archives for snapshots and releases. - -Please document fully the proper use of a new function in the header file -in which it is declared. And please consult existing headers for -documentation on how to use existing functions. In particular, please consult -these header files: - -lib/log.h logging levels and usage guidance - -[more to be added] - -If changing an exported interface, please try to deprecate the interface in -an orderly manner. If at all possible, try to retain the old deprecated -interface as is, or functionally equivalent. Make a note of when the -interface was deprecated and guard the deprecated interface definitions in -the header file, i.e.: - - /* Deprecated: 20050406 */ - #if !defined(QUAGGA_NO_DEPRECATED_INTERFACES) - #warning "Using deprecated (interface(s)|function(s))" - ... - #endif /* QUAGGA_NO_DEPRECATED_INTERFACES */ - -This is to ensure that the core Quagga sources do not use the deprecated -interfaces (you should update Quagga sources to use new interfaces, if -applicable), while allowing external sources to continue to build. -Deprecated interfaces should be excised in the next unstable cycle. - -Note: If you wish, you can test for GCC and use a function -marked with the ’deprecated’ attribute. However, you must provide the -warning for other compilers. - -If changing or removing a command definition, *ensure* that you -properly deprecate it - use the \_DEPRECATED form of the appropriate DEFUN -macro. This is *critical*. Even if the command can no longer -function, you *MUST* still implement it as a do-nothing stub. - -Failure to follow this causes grief for systems administrators, as an -upgrade may cause daemons to fail to start because of unrecognised commands. -Deprecated commands should be excised in the next unstable cycle. A list of -deprecated commands should be collated for each release. - -See also [Section SHARED LIBRARY VERSIONING](#sec:dll-versioning) below. - -YOUR FIRST CONTRIBUTIONS -======================== - -Routing protocols can be very complex sometimes. Then, working with an -Opensource community can be complex too, but usually friendly with -anyone who is ready to be willing to do it properly. - -- First, start doing simple tasks. Quagga’s patchwork is a good place - to start with. Pickup some patches, apply them on your git trie, - review them and send your ack’t or review comments. Then, a - maintainer will apply the patch if ack’t or the author will have to - provide a new update. It help a lot to drain the patchwork queues. - See - -- The more you’ll review patches from patchwork, the more the Quagga’s - maintainers will be willing to consider some patches you will be - sending. - -- start using git clone, pwclient - - - $ pwclient list -s new - ID State Name - -- ----- ---- - 179 New [quagga-dev,6648] Re: quagga on FreeBSD 4.11 (gcc-2.95) - 181 New [quagga-dev,6660] proxy-arp patch - [...] - - $ pwclient git-am 1046 - -HANDY GUIDELINES FOR MAINTAINERS -================================ - -Get your cloned trie: - - git clone vjardin@git.sv.gnu.org:/srv/git/quagga.git - -Apply some ack’t patches: - - pwclient git-am 1046 - Applying patch #1046 using 'git am' - Description: [quagga-dev,11595] zebra: route_unlock_node is missing in "show ip[v6] route " commands - Applying: zebra: route_unlock_node is missing in "show ip[v6] route " commands - -Run a quick review. If the ack’t was not done properly, you know who you have -to blame. - -Push the patches: - - git push - -Set the patch to accepted on patchwork - - pwclient update -s Accepted 1046 - -COMPILE-TIME CONDITIONAL CODE -============================= - -Please think very carefully before making code conditional at compile time, -as it increases maintenance burdens and user confusion. In particular, -please avoid gratuitous -–enable-… switches to the configure script - -typically code should be good enough to be in Quagga, or it shouldn’t be -there at all. - -When code must be compile-time conditional, try have the compiler make it -conditional rather than the C pre-processor - so that it will still be -checked by the compiler, even if disabled. I.e. this: - - if (SOME_SYMBOL) - frobnicate(); - -rather than: - - #ifdef SOME_SYMBOL - frobnicate (); - #endif /* SOME_SYMBOL */ - -Note that the former approach requires ensuring that SOME\_SYMBOL will -be defined (watch your AC\_DEFINEs). - -COMMIT MESSAGES {#sec:commit-messages} -====================================== - -The commit message requirements are: - -- The message *MUST* provide a suitable one-line summary followed by a - blank line as the very first line of the message, in the form: - - `topic: high-level, one line summary` - - Where topic would tend to be name of a subdirectory, and/or daemon, unless - there’s a more suitable topic (e.g. ’build’). This topic is used to - organise change summaries in release announcements. - -- It should have a suitable “body”, which tries to address the - following areas, so as to help reviewers and future browsers of the - code-base understand why the change is correct (note also the code - comment requirements): - - - The motivation for the change (does it fix a bug, if so which? - add a feature?) - - - The general approach taken, and trade-offs versus any other - approaches. - - - Any testing undertaken or other information affecting the confidence - that can be had in the change. - - - Information to allow reviewers to be able to tell which specific - changes to the code are intended (and hence be able to spot any accidental - unintended changes). - -- The commit message *must* give details of all the authors of the change, - beyond the person listed in the Author field. Any and all affiliations - which may have a bearing on copyright in any way should be clearly - stated, unless those affiliations are already obvious from other - details, e.g. from the email address. This would cover employment and - contracting obligations (give details). - - Note: Do not rely on "Signed-off-by" for this, be explicit. - -- If the change introduces a new dependency on any code or other - copyrighted material, please explicitly note this. Give details of what - that external material is, the copyright licence the material may be - used under, and the nature of the dependency. - -The one-line summary must be limited to 54 characters, and all other -lines to 72 characters. - -Commit message bodies in the Quagga project have typically taken the -following form: - -- An optional introduction, describing the change generally. - -- A short description of each specific change made, preferably: - - - file by file - - - function by function (use of “ditto”, or globs is allowed) - -Contributors are strongly encouraged to follow this form. - -This itemised commit messages allows reviewers to have confidence that the -author has self-reviewed every line of the patch, as well as providing -reviewers a clear index of which changes are intended, and descriptions for -them (C-to-english descriptions are not desirable - some discretion is -useful). For short patches, a per-function/file break-down may be -redundant. For longer patches, such a break-down may be essential. A -contrived example (where the general discussion is obviously somewhat -redundant, given the one-line summary): - -> zebra: Enhance frob FSM to detect loss of frob -> -> Add a new DOWN state to the frob state machine to allow the barinator to -> detect loss of frob. -> -> * frob.h: (struct frob) Add DOWN state flag. -> * frob.c: (frob_change) set/clear DOWN appropriately on state change. -> * bar.c: (barinate) Check frob for DOWN state. - -Please have a look at the git commit logs to get a feel for what the norms -are. - -Note that the commit message format follows git norms, so that “git log -–oneline” will have useful output. - -HACKING THE BUILD SYSTEM -======================== - -If you change or add to the build system (configure.ac, any Makefile.am, -etc.), please heck that the following things still work: - -- make dist - -- resulting dist tarball builds - -- out-of-tree builds - -This can be achieved by running 'make distcheck' - -The quagga.net site relies on make dist to work to generate snapshots. It -must work. Common problems are to forget to have some additional file -included in the dist, or to have a make rule refer to a source file without -using the srcdir variable. - -RELEASE PROCEDURE -================= - -To make a release: - -- Edit configure.ac, bump the version and commit the change with - a "release: - -- Create a fresh tar archive of the quagga.net repository, and do a - test build. Use git archive to ensure it consists of files in the - repository, and to carry out the keyword expansions. Do NOT do this in - a subdirectory of the Quagga sources, autoconf will think it’s a - sub-package and fail to include neccessary files. - - git archive ... | tar xC .. - - autoreconf -i && ./configure && make && make dist-gzip - -- Similarly test the dist tarball produced. This is the tarball to be - released. This is important. - -- Sign the dist tarball to be released - - gpg -u 54CD2E60 -a --detach-sign quagga-0.99.99.99.tar - -The 'release.sh' script, if finishes successfully, will print out -instructions on the files it has created and the details on remaining steps -to be carried out to complete the release. Which roughly are: - -- Upload the release tarball, its PGP signature, and the full changelog - to the public release area on Savannah - -- Add the version number on https://bugzilla.quagga.net/, under - Administration, Products, “Quagga”, Edit versions, Add a version. - -- Post a news entry on Savannah - -- Send a mail to quagga-dev and quagga-users - -If any errors occur, move tags as needed and start over again with the -release.sh script. Do not try to append stuff to tarballs, as this has -produced non-standards-conforming tarballs in the past. - -[TODO: collation of a list of deprecated commands. Possibly can be -scripted to extract from vtysh/vtysh\_cmd.c] - -TOOL VERSIONS -============= - -Require versions of support tools are listed in INSTALL.quagga.txt. -Required versions should only be done with due deliberation, as it can -cause environments to no longer be able to compile quagga. - -SHARED LIBRARY VERSIONING {#sec:dll-versioning} -========================= - -[this section is at the moment just gdt’s opinion] - -Quagga builds several shared libaries (lib/libzebra, ospfd/libospf, -ospfclient/libsopfapiclient). These may be used by external programs, -e.g. a new routing protocol that works with the zebra daemon, or -ospfapi clients. The libtool info pages (node Versioning) explain -when major and minor version numbers should be changed. These values -are set in Makefile.am near the definition of the library. If you -make a change that requires changing the shared library version, -please update Makefile.am. - -libospf exports far more than it should, and is needed by ospfapi -clients. Only bump libospf for changes to functions for which it is -reasonable for a user of ospfapi to call, and please err on the side -of not bumping. - -There is no support intended for installing part of zebra. The core -library libzebra and the included daemons should always be built and -installed together. - -GIT COMMIT SUBMISSION {#sec:git-submission} -===================== - -The preferred method for submitting changes is to provide git commits via a -publicly-accessible git repository, which the maintainers can easily pull. - -The commits should be in a branch based off the Quagga.net master - a -“feature branch”. Ideally there should be no commits to this branch other -than those in master, and those intended to be submitted. However, merge -commits to this branch from the Quagga master are permitted, though strongly -discouraged - use another (potentially local and throw-away) branch to test -merge with the latest Quagga master. - -Recommended practice is to keep different logical sets of changes on -separate branches - “topic” or “feature” branches. This allows you to still -merge them together to one branch (potentially local and/or “throw-away”) -for testing or use, while retaining smaller, independent branches that are -easier to merge. - -All content guidelines in [Section PATCH SUBMISSION](#sec:patch-submission) -apply. - -PATCH SUBMISSION {#sec:patch-submission} -================ - -- For complex changes, contributors are strongly encouraged to first - start a design discussion on the quagga-dev list *before* starting - any coding. - -- Send a clean diff against the ’master’ branch of the quagga.git - repository, in unified diff format, preferably with the ’-p’ - argument to show C function affected by any chunk, and with the -w - and -b arguments to minimise changes. E.g: - - git diff -up mybranch..remotes/quagga.net/master - - It is preferable to use git format-patch, and even more preferred to - publish a git repository (see - [Section GIT COMMIT SUBMISSION](#sec:git-submission)). - - If not using git format-patch, Include the commit message in the - email. - -- After a commit, code should have comments explaining to the reviewer - why it is correct, without reference to history. The commit message - should explain why the change is correct. - -- Include NEWS entries as appropriate. - -- Include only one semantic change or group of changes per patch. - -- Do not make gratuitous changes to whitespace. See the w and b - arguments to diff. - -- Changes should be arranged so that the least controversial and most - trivial are first, and the most complex or more controversial are - last. This will maximise how many the Quagga maintainers can merge, - even if some other commits need further work. - -- Providing a unit-test is strongly encouraged. Doing so will make it - much easier for maintainers to have confidence that they will be - able to support your change. - -- New code should be arranged so that it easy to verify and test. E.g. - stateful logic should be separated out from functional logic as much - as possible: wherever possible, move complex logic out to smaller - helper functions which access no state other than their arguments. - -- State on which platforms and with what daemons the patch has been - tested. Understand that if the set of testing locations is small, - and the patch might have unforeseen or hard to fix consequences that - there may be a call for testers on quagga-dev, and that the patch - may be blocked until test results appear. - - If there are no users for a platform on quagga-dev who are able and - willing to verify -current occasionally, that platform may be - dropped from the “should be checked” list. - -PATCH APPLICATION -================= - -- Only apply patches that meet the submission guidelines. - -- If the patch might break something, issue a call for testing on the - mailing-list. - -- Give an appropriate commit message (see above), and use the –author - argument to git-commit, if required, to ensure proper attribution - (you should still be listed as committer) - -- Immediately after commiting, double-check (with git-log and/or - gitk). If there’s a small mistake you can easily fix it with ‘git - commit –amend ..’ - -- When merging a branch, always use an explicit merge commit. Giving - –no-ff ensures a merge commit is created which documents “this human - decided to merge this branch at this time”. - -STABLE PLATFORMS AND DAEMONS -============================ - -The list of platforms that should be tested follow. This is a list -derived from what quagga is thought to run on and for which -maintainers can test or there are people on quagga-dev who are able -and willing to verify that -current does or does not work correctly. - -- BSD (Free, Net or Open, any platform) - -- GNU/Linux (any distribution, i386) - -- Solaris (strict alignment, any platform) - -- future: NetBSD/sparc64 - -The list of daemons that are thought to be stable and that should be -tested are: - -- zebra - -- bgpd - -- ripd - -- ospfd - -- ripngd - -Daemons which are in a testing phase are - -- ospf6d - -- isisd - -- watchquagga - -USEFUL URLs -=========== - -* The project homepage is at: - - - - -* Bugs can be reported via Bugzilla at: - - - -* Buildbot runs CI tests, and is at: - - - - It tests commits and jobs submitted on local changes via - 'buildbot try ...' for developers. - -* Patchwork tracks any patches emailed to the quagga-dev list, and is at: - - - - -BUILDBOT -======== - -The buildbot client can be used to test changes before committing, with -"buildbot try". - -- Ask for a buildbot account - -- Install the buildbot client - -- Configure it, e.g.: - - ~~~~~ - $ cat ~/.buildbot/options - try_master = 'radia.quagga.net:8031' - try_username = 'paul' - try_password = 'password123' - try_vc = 'git' - try_branch = 'master' - try_wait = True - $ buildbot try -c pb --get-builder-names - using 'pb' connect method - The following builders are available for the try scheduler: - build-fedora-24 - ... - ~~~~~ - -- You can then submit your local changes to try build: - - ~~~~ - $ buildbot try -c pb - ~~~~ - - or use the -b argument to limit to a specific builder (recommended). - - ~~~~~ - $ buildbot try -c pb -b build-distcheck - ~~~~~ - -- To test a series of locally committed change use git diff: - - ~~~~ - git diff .. | buildbot try -c pb --vc git \ - -b build-centos-7 --branch=volatile/next --diff=- -p 1 - ~~~~ \ No newline at end of file diff --git a/HACKING.pending b/HACKING.pending deleted file mode 100644 index 73d3194..0000000 --- a/HACKING.pending +++ /dev/null @@ -1,12 +0,0 @@ -This file contains pointers to work done on quagga that is not in the -quagga git repository or quagga bugzilla. - -* public git repositories - -** git remote add mtr http://github.com/tomhenderson/quagga-mtr.git - -Tom Henderson of Boeing has created a repository to work on -multi-topology routing support for OSPF. Work on this repository -takes place on the branch mtr, which has a branch point of 0.99.17 - -* posted patches diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..2099840 --- /dev/null +++ b/INSTALL @@ -0,0 +1,370 @@ +Installation Instructions +************************* + +Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, +Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command `./configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + 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, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + 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 you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' 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. + + Running `configure' might take a while. 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, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. 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. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +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 can use 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 `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer 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. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' 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. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + 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'. + + 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. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + 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 machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +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. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf limitation. Until the limitation is lifted, you can use +this workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--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. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..f051cbf --- /dev/null +++ b/Makefile.in @@ -0,0 +1,890 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ + COPYING COPYING.LIB ChangeLog INSTALL NEWS README TODO compile \ + config.guess config.sub install-sh ltmain.sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = lib qpb fpm @ZEBRA@ @BGPD@ @RIPD@ @RIPNGD@ @OSPFD@ @OSPF6D@ @NHRPD@ \ + @ISISD@ @PIMD@ @WATCHQUAGGA@ @VTYSH@ @OSPFCLIENT@ @DOC@ m4 @pkgsrcdir@ \ + redhat @SOLARIS@ tests + +DIST_SUBDIRS = lib qpb fpm zebra bgpd ripd ripngd ospfd ospf6d nhrpd \ + isisd watchquagga vtysh ospfclient doc m4 pkgsrc redhat tests \ + solaris pimd + +EXTRA_DIST = aclocal.m4 SERVICES TODO REPORTING-BUGS INSTALL.quagga.txt \ + update-autotools \ + vtysh/Makefile.in vtysh/Makefile.am \ + tools/zebra.el tools/multiple-bgpd.sh + +ACLOCAL_AMFLAGS = -I m4 +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +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: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt + +# 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. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -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 $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_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 + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +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 in build directory 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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +@HAVE_PANDOC_FALSE@clean-local: +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool clean-local cscope cscopelist-am ctags ctags-am \ + dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +@HAVE_PANDOC_TRUE@HACKING.pdf: HACKING.md +@HAVE_PANDOC_TRUE@ pandoc -o $@ $< + +@HAVE_PANDOC_TRUE@clean-local: +@HAVE_PANDOC_TRUE@ -$(LATEXMK) -C HACKING.tex + +# 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/README b/README index f1b25d8..be4951b 100644 --- a/README +++ b/README @@ -1,9 +1,12 @@ Quagga is free software that manages various IPv4 and IPv6 routing protocols. -Currently Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, +Currently Quagga supports the following protocols + +Unicast Routing:BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, and RIPng as well as very early support for IS-IS. - +Multicast Routing: PIM-SSM + See the file INSTALL.quagga.txt for building and installation instructions. See the file REPORTING-BUGS to report bugs. diff --git a/README.NetBSD b/README.NetBSD deleted file mode 100755 index 6bbc680..0000000 --- a/README.NetBSD +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -# $QuaggaId: Format:%an, %ai, %h$ $ - -# This file is helpful for building quagga from cvs on NetBSD, and -# probably on any system using pkgsrc. -# One should have readline installed already (pkgsrc/devel/readline). - -MAKE=make -# Quagga is currently documented not to require GNU make, but sometimes -# BSD make fails. Enable this if statement as a workaround. -if false; then - MAKE=gmake - echo "WARNING: using gmake to work around nonportable makefiles" -fi - -# Use /usr/quagga to be independent, and /usr/pkg to overwrite pkgsrc. -PREFIX=/usr/pkg - -case $1 in - - build) - # Omitted because it is now default: - # --enable-opaque-lsa - ./bootstrap.sh - LDFLAGS="-L/usr/pkg/lib -R/usr/pkg/lib" CPPFLAGS="-I/usr/pkg/include" \ - ./configure --prefix=${PREFIX} \ - --sysconfdir=/etc/zebra --localstatedir=/var/run/zebra \ - --enable-exampledir=${PREFIX}/share/examples/zebra \ - --enable-pkgsrcrcdir=${PREFIX}/etc/rc.d \ - --enable-vtysh - ${MAKE} - ;; - - install) - ${MAKE} install - ;; - - clean) - ${MAKE} clean - ;; - - *) - echo "Usage: README.NetBSD (build|install|clean)" - exit 1 - ;; - -esac diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..ff1bfe2 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,1502 @@ +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 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. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 11 (pkg-config-0.29.1) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + +# Copyright (C) 2002-2014 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. + +# 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. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2014 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. + +# 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. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2014 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. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +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])]) + +# Copyright (C) 1999-2014 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. + + +# 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", "OBJC", "OBJCXX", "UPC", or "GJC". +# 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 + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$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". + rm -rf conftest.dir + 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 + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + 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 + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # 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. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # 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. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + 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 + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + 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_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2014 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. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + 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. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. 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 " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/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"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2014 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 macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# 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_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])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]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# 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. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2014 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. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2014 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. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2014 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. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +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 +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2014 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. + +# 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 is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2014 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. + +# _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], +[m4_foreach_w([_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])]) + +# Copyright (C) 1999-2014 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. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2014 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. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 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. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# 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 ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + 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 + 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 + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + 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]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2014 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. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 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. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# 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="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2014 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. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2014 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. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/ax_sys_weak_alias.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) diff --git a/bgpd/.gitignore b/bgpd/.gitignore deleted file mode 100644 index 105be22..0000000 --- a/bgpd/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -Makefile -Makefile.in -*.o -bgpd -bgp_btoa -bgpd.conf -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.a -*.libs -.arch-inventory -.arch-ids -*~ -*.loT diff --git a/bgpd/IMPLEMENTATION.txt b/bgpd/IMPLEMENTATION.txt deleted file mode 100644 index fff360a..0000000 --- a/bgpd/IMPLEMENTATION.txt +++ /dev/null @@ -1,169 +0,0 @@ -$Id: IMPLEMENTATION.txt,v 1.2 2005/02/15 17:10:03 gdt Exp $ - -This file contains notes about the internals of the BGP -implementation. The initial impetus is understanding the memory usage -of Quagga'a BGP implementation. There may be some inaccuracies; it is -in the repository in the hopes that it will be significantly more -helpful than not. - -* FILES - -bgp_advertise.[hc]: - data structures: advertised prefixes, attributes - -bgp_aspath.[hc]: - struct aspath: - These are stored in a hash, apparently in wire format. - -bgp_attr.[hc]: - struct attr: contains all attributes - size(ILP32) 26 words/104 bytes (poor packing, v6/multicast is 10) - - bgp_attr_parse: origin, aspath, next hop probably most of interest - bgp_attr_origin: set flag bit - bgp_attr_aspath: put in refcounted hash table, so share pointer - bgp_attr_nexthop: store in attribute structure - -bgp_btoa.c: ? test program - -bgp_clist.[hc]: - data structures: community lists (including permit/deny state) - -bgp_community.[hc]: - data structures: community atttributes (multiple communities per struct) - -bgp_damp.[hc]: - per-route damping data, and damping control information - -bgp_debug.[hc]: - debugging support (vty config, dump of packets) - -bgp_dump.[hc]: - MRT-compatible dump format routines - -bgp_ecommunity.[hc]: - Extended communities attributes (multiple ecommmunities per struct) - -bgp_filter.[hc]: - AS path access list filtering - -bgp_fsm.[hc]: - Per-peer state machine for TCP connection, hold time, etc. - -bgp_main.c: - Daemon startup. - -bgp_mplsvpn.[hc]: - parsing of attribute structures for MPLS VPNs [need better description] - -bgp_network.[hc]: - Opening and binding of sockets, finding addresses for interfaces - -bgp_nexthop.[hc]: - data structures: Nexthop cache [not clear how used, if truly cache - in sense of memoization, or something else] - - importing EGP routes into IGP (thread created) - "scanning" (thread created) - bgp_scan: has useful clues to data structure complexity. Scanning - process iterates over database of received advertisements, and - builds 'cache' structure. - -bgp_open.[ch]: - Open messages, and capability negotiation - -bgp_packet.[hc] - sending and receiving of UPDATE/WITHDRAW - collision resolution for simultanteous opens - bgp_read: top-level read routine: reads whole packet (nonblocking) - and dispatches to per-message-type receive - - bgp_update_receive: - calls bgp_attr_parse - reads nrli into struct bgp_nrli update - - uninterning of aspath, community, ecommmunity, cluster, - transit which were interned in bgp_attr_parse - -bgp_regex.[ch]: - Glue to convert BGP regexps to standard (_ means many things). - -bgp_route.[hc]: - data structures: routes as received, static routes - Application of filters. Lots of route processing. - - bgp_nlri_parse: - sanity checks, then calls bgp_update with peer, prefix, attributes pointer - - bgp_update: bgp_update_main, then RS processing - - bgp_update_main: - find 'struct bgp_node *' for this afi/safi - look for route in table, then 'intern' attributes - ** interning is process of - looking for data in hash table, and putting there if missing, refcnt - using pointer to existing data - many validity checks - get new struct bgp_info (10 words/40 bytes) - call bgp_info_add with rn and bgp_info - call bgp_process - -bgp_routemap.c - implementation of route maps (match and set) - -bgp_snmp.c - SNMP glue. Not particularly interesting except to add variables or - debug SNMP. - -bgp_table.[hc] - data structures: struct bgp_table, struct bgp_node - allocation/lookup/utility operations - not a lot of protocol processin - -bgp_vty.[hc] - protocol-wide vty hooks - -bgp_zebra.[hc] - Processing interface events from zebra, redistribution of routes. - -bgpd.h - struct bgp_master: daemon main data structure - struct bgp: per-instance structure - struct peer_group - struct bgp_notify: (in-core representation of wire format?) - struct bgp_nexthop: (v4 and v6 addresses, *ifp) - struct bgp_rd: router distinguisher: 8 octects - struct bgp_filter: distribute, prefix, aslist, route_maps - struct peer: neighbor structure (very rich/complex) - struct bgp_nlri: reference to wire format - #define of protocol constants - attribute type codes - fsm states/events - timer values - -bgpd.c - instance/peer allocation - configuration - initialization/termination - -* DATA STRUCTURE SIZES - -Question: How much memory does quagga's bgpd use as a function of -state received from peers? - -It seems that a struct bgp_info is kept for each prefix. The "struct -attr *" is interned, and variables within that are interned. So, 40 -bytes are kept per received prefix, plus interned shared values. This -could be 36 if 'int suppress' where changed to a u_char and moved to -be with the other u_chars. Without MPLS, this could be 32 bytes. -Note that 8 bytes of this is linked list overhead, meaning that 24 -bytes are the raw per-prefix storage requirements. - -Also, a struct bgp_damp_info is apparently maintained per route; this -is fairly large (about 44 bytes). - -[TODO: the role of struct bgp_node.] - -* TIME COMPLEXITY - -It appears that received prefixes from each peer are stored in a -linked list. diff --git a/bgpd/Makefile.in b/bgpd/Makefile.in new file mode 100644 index 0000000..174101f --- /dev/null +++ b/bgpd/Makefile.in @@ -0,0 +1,889 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = bgpd$(EXEEXT) +bin_PROGRAMS = bgp_btoa$(EXEEXT) +subdir = bgpd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libbgp_a_AR = $(AR) $(ARFLAGS) +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_lcommunity.$(OBJEXT) bgp_mplsvpn.$(OBJEXT) \ + bgp_nexthop.$(OBJEXT) bgp_damp.$(OBJEXT) bgp_table.$(OBJEXT) \ + bgp_advertise.$(OBJEXT) bgp_vty.$(OBJEXT) bgp_mpath.$(OBJEXT) \ + bgp_encap.$(OBJEXT) bgp_encap_tlv.$(OBJEXT) bgp_nht.$(OBJEXT) +libbgp_a_OBJECTS = $(am_libbgp_a_OBJECTS) +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" \ + "$(DESTDIR)$(examplesdir)" +PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS) +am_bgp_btoa_OBJECTS = bgp_btoa.$(OBJEXT) +bgp_btoa_OBJECTS = $(am_bgp_btoa_OBJECTS) +bgp_btoa_DEPENDENCIES = libbgp.a ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_bgpd_OBJECTS = bgp_main.$(OBJEXT) +bgpd_OBJECTS = $(am_bgpd_OBJECTS) +bgpd_DEPENDENCIES = libbgp.a ../lib/libzebra.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libbgp_a_SOURCES) $(bgp_btoa_SOURCES) $(bgpd_SOURCES) +DIST_SOURCES = $(libbgp_a_SOURCES) $(bgp_btoa_SOURCES) $(bgpd_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +INSTALL_SDATA = @INSTALL@ -m 600 +AM_CFLAGS = $(WERROR) +noinst_LIBRARIES = libbgp.a +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_lcommunity.c \ + bgp_mplsvpn.c bgp_nexthop.c \ + bgp_damp.c bgp_table.c bgp_advertise.c bgp_vty.c bgp_mpath.c \ + bgp_encap.c bgp_encap_tlv.c bgp_nht.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_lcommunity.h \ + bgp_mplsvpn.h bgp_nexthop.h bgp_damp.h bgp_table.h \ + bgp_advertise.h bgp_snmp.h bgp_vty.h bgp_mpath.h \ + bgp_encap.h bgp_encap_tlv.h bgp_encap_types.h bgp_nht.h + +bgpd_SOURCES = bgp_main.c +bgpd_LDADD = libbgp.a ../lib/libzebra.la @LIBCAP@ @LIBM@ +bgp_btoa_SOURCES = bgp_btoa.c +bgp_btoa_LDADD = libbgp.a ../lib/libzebra.la @LIBCAP@ @LIBM@ +examplesdir = $(exampledir) +dist_examples_DATA = bgpd.conf.sample bgpd.conf.sample2 +EXTRA_DIST = BGP4-MIB.txt +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bgpd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu bgpd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libbgp.a: $(libbgp_a_OBJECTS) $(libbgp_a_DEPENDENCIES) $(EXTRA_libbgp_a_DEPENDENCIES) + $(AM_V_at)-rm -f libbgp.a + $(AM_V_AR)$(libbgp_a_AR) libbgp.a $(libbgp_a_OBJECTS) $(libbgp_a_LIBADD) + $(AM_V_at)$(RANLIB) libbgp.a +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +bgp_btoa$(EXEEXT): $(bgp_btoa_OBJECTS) $(bgp_btoa_DEPENDENCIES) $(EXTRA_bgp_btoa_DEPENDENCIES) + @rm -f bgp_btoa$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bgp_btoa_OBJECTS) $(bgp_btoa_LDADD) $(LIBS) + +bgpd$(EXEEXT): $(bgpd_OBJECTS) $(bgpd_DEPENDENCIES) $(EXTRA_bgpd_DEPENDENCIES) + @rm -f bgpd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bgpd_OBJECTS) $(bgpd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +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_btoa.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_encap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_encap_tlv.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_lcommunity.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_mpath.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_nht.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@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-libtool \ + clean-noinstLIBRARIES clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-dist_examplesDATA \ + uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool \ + clean-noinstLIBRARIES clean-sbinPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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_aspath.c b/bgpd/bgp_aspath.c index d813bfb..22be742 100644 --- a/bgpd/bgp_aspath.c +++ b/bgpd/bgp_aspath.c @@ -901,7 +901,7 @@ aspath_put (struct stream *s, struct aspath *as, int use32bit ) while ( (seg->length - written) > AS_SEGMENT_MAX) { assegment_header_put (s, seg->type, AS_SEGMENT_MAX); - assegment_data_put (s, seg->as, AS_SEGMENT_MAX, use32bit); + assegment_data_put (s, (seg->as+written), AS_SEGMENT_MAX, use32bit); written += AS_SEGMENT_MAX; bytes += ASSEGMENT_SIZE (AS_SEGMENT_MAX, use32bit); } diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index a79a03c..0c2806b 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -199,15 +199,17 @@ cluster_intern (struct cluster_list *cluster) } void -cluster_unintern (struct cluster_list *cluster) +cluster_unintern (struct cluster_list **cluster) { - if (cluster->refcnt) - cluster->refcnt--; + struct cluster_list *c = *cluster; + if (c->refcnt) + c->refcnt--; - if (cluster->refcnt == 0) + if (c->refcnt == 0) { - hash_release (cluster_hash, cluster); - cluster_free (cluster); + hash_release (cluster_hash, c); + cluster_free (c); + *cluster = NULL; } } @@ -357,15 +359,18 @@ transit_intern (struct transit *transit) } void -transit_unintern (struct transit *transit) +transit_unintern (struct transit **transit) { - if (transit->refcnt) - transit->refcnt--; + struct transit *t = *transit; + + if (t->refcnt) + t->refcnt--; - if (transit->refcnt == 0) + if (t->refcnt == 0) { - hash_release (transit_hash, transit); - transit_free (transit); + hash_release (transit_hash, t); + transit_free (t); + *transit = NULL; } } @@ -820,11 +825,11 @@ bgp_attr_unintern_sub (struct attr *attr) UNSET_FLAG(attr->flag, ATTR_FLAG_BIT (BGP_ATTR_LARGE_COMMUNITIES)); if (attr->extra->cluster) - cluster_unintern (attr->extra->cluster); + cluster_unintern (&attr->extra->cluster); UNSET_FLAG(attr->flag, ATTR_FLAG_BIT (BGP_ATTR_CLUSTER_LIST)); if (attr->extra->transit) - transit_unintern (attr->extra->transit); + transit_unintern (&attr->extra->transit); } } @@ -897,7 +902,7 @@ bgp_attr_flush (struct attr *attr) } } -/* Implement draft-scudder-idr-optional-transitive behaviour and +/* Implement some draft-ietf-idr-error-handling behaviour and * avoid resetting sessions for malformed attributes which are * are partial/optional and hence where the error likely was not * introduced by the sending neighbour. @@ -914,6 +919,11 @@ bgp_attr_malformed (struct bgp_attr_parser_args *args, u_char subcode, */ u_char *notify_datap = (length > 0 ? args->startp : NULL); + /* The malformed attribute shouldn't be passed on, should + * we decide to proceed with parsing the UPDATE + */ + UNSET_FLAG (args->attr->flag, ATTR_FLAG_BIT (args->type)); + /* Only relax error handling for eBGP peers */ if (peer->sort != BGP_PEER_EBGP) { @@ -970,7 +980,9 @@ bgp_attr_malformed (struct bgp_attr_parser_args *args, u_char subcode, return BGP_ATTR_PARSE_WITHDRAW; /* default to reset */ - return BGP_ATTR_PARSE_ERROR_NOTIFYPLS; + bgp_notify_send_with_data (peer, BGP_NOTIFY_UPDATE_ERR, subcode, + notify_datap, length); + return BGP_ATTR_PARSE_ERROR; } /* Find out what is wrong with the path attribute flag bits and log the error. @@ -2140,6 +2152,8 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size, memset (seen, 0, BGP_ATTR_BITMAP_SIZE); /* End pointer of BGP attribute. */ + assert (size <= stream_get_size (BGP_INPUT (peer))); + assert (size <= stream_get_endp (BGP_INPUT (peer))); endp = BGP_INPUT_PNT (peer) + size; /* Get attributes to the end of attribute length. */ @@ -2221,7 +2235,7 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size, bgp_notify_send_with_data (peer, BGP_NOTIFY_UPDATE_ERR, BGP_NOTIFY_UPDATE_ATTR_LENG_ERR, - startp, attr_endp - startp); + startp, endp - startp); return BGP_ATTR_PARSE_ERROR; } @@ -2320,7 +2334,7 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size, ret = BGP_ATTR_PARSE_ERROR; } - /* If hard error occured immediately return to the caller. */ + /* If hard error occurred immediately return to the caller. */ if (ret == BGP_ATTR_PARSE_ERROR) { zlog (peer->log, LOG_WARNING, diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h index 9ff074b..052acc7 100644 --- a/bgpd/bgp_attr.h +++ b/bgpd/bgp_attr.h @@ -187,10 +187,10 @@ extern unsigned long int attr_unknown_count (void); /* Cluster list prototypes. */ extern int cluster_loop_check (struct cluster_list *, struct in_addr); -extern void cluster_unintern (struct cluster_list *); +extern void cluster_unintern (struct cluster_list **); /* Transit attribute prototypes. */ -void transit_unintern (struct transit *); +void transit_unintern (struct transit **); /* Below exported for unit-test purposes only */ struct bgp_attr_parser_args { diff --git a/bgpd/bgp_damp.c b/bgpd/bgp_damp.c index ac64723..aa514ce 100644 --- a/bgpd/bgp_damp.c +++ b/bgpd/bgp_damp.c @@ -663,7 +663,7 @@ bgp_show_dampening_parameters (struct vty *vty, afi_t afi, safi_t safi) damp->suppress_value, VTY_NEWLINE); vty_out (vty, "Max suppress time: %ld min%s", damp->max_suppress_time / 60, VTY_NEWLINE); - vty_out (vty, "Max supress penalty: %u%s", + vty_out (vty, "Max suppress penalty: %u%s", damp->ceiling, VTY_NEWLINE); vty_out (vty, "%s", VTY_NEWLINE); } diff --git a/bgpd/bgp_debug.c b/bgpd/bgp_debug.c index ba79722..43faee7 100644 --- a/bgpd/bgp_debug.c +++ b/bgpd/bgp_debug.c @@ -29,6 +29,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "log.h" #include "sockunion.h" #include "filter.h" +#include "memory.h" #include "bgpd/bgpd.h" #include "bgpd/bgp_aspath.h" @@ -73,7 +74,8 @@ const struct message bgp_status_msg[] = { Clearing, "Clearing" }, { Deleted, "Deleted" }, }; -const int bgp_status_msg_max = BGP_STATUS_MAX; +#define BGP_DEBUG_MSG_MAX(msg) const int msg ## _max = array_size (msg) +BGP_DEBUG_MSG_MAX (bgp_status_msg); /* BGP message type string. */ const char *bgp_type_str[] = @@ -84,7 +86,8 @@ const char *bgp_type_str[] = "NOTIFICATION", "KEEPALIVE", "ROUTE-REFRESH", - "CAPABILITY" + "CAPABILITY", + NULL, }; /* message for BGP-4 Notify */ @@ -98,15 +101,15 @@ static const struct message bgp_notify_msg[] = { BGP_NOTIFY_CEASE, "Cease"}, { BGP_NOTIFY_CAPABILITY_ERR, "CAPABILITY Message Error"}, }; -static const int bgp_notify_msg_max = BGP_NOTIFY_MAX; +BGP_DEBUG_MSG_MAX (bgp_notify_msg); static const struct message bgp_notify_head_msg[] = { { BGP_NOTIFY_HEADER_NOT_SYNC, "/Connection Not Synchronized"}, { BGP_NOTIFY_HEADER_BAD_MESLEN, "/Bad Message Length"}, - { BGP_NOTIFY_HEADER_BAD_MESTYPE, "/Bad Message Type"} + { BGP_NOTIFY_HEADER_BAD_MESTYPE, "/Bad Message Type"}, }; -static const int bgp_notify_head_msg_max = BGP_NOTIFY_HEADER_MAX; +BGP_DEBUG_MSG_MAX (bgp_notify_head_msg); static const struct message bgp_notify_open_msg[] = { @@ -119,7 +122,7 @@ static const struct message bgp_notify_open_msg[] = { BGP_NOTIFY_OPEN_UNACEP_HOLDTIME, "/Unacceptable Hold Time"}, { BGP_NOTIFY_OPEN_UNSUP_CAPBL, "/Unsupported Capability"}, }; -static const int bgp_notify_open_msg_max = BGP_NOTIFY_OPEN_MAX; +BGP_DEBUG_MSG_MAX (bgp_notify_open_msg); static const struct message bgp_notify_update_msg[] = { @@ -136,7 +139,7 @@ static const struct message bgp_notify_update_msg[] = { BGP_NOTIFY_UPDATE_INVAL_NETWORK, "/Invalid Network Field"}, { BGP_NOTIFY_UPDATE_MAL_AS_PATH, "/Malformed AS_PATH"}, }; -static const int bgp_notify_update_msg_max = BGP_NOTIFY_UPDATE_MAX; +BGP_DEBUG_MSG_MAX (bgp_notify_update_msg); static const struct message bgp_notify_cease_msg[] = { @@ -150,7 +153,7 @@ static const struct message bgp_notify_cease_msg[] = { BGP_NOTIFY_CEASE_COLLISION_RESOLUTION, "/Connection collision resolution"}, { BGP_NOTIFY_CEASE_OUT_OF_RESOURCE, "/Out of Resource"}, }; -static const int bgp_notify_cease_msg_max = BGP_NOTIFY_CEASE_MAX; +BGP_DEBUG_MSG_MAX (bgp_notify_cease_msg); static const struct message bgp_notify_capability_msg[] = { @@ -159,7 +162,7 @@ static const struct message bgp_notify_capability_msg[] = { BGP_NOTIFY_CAPABILITY_INVALID_LENGTH, "/Invalid Capability Length"}, { BGP_NOTIFY_CAPABILITY_MALFORMED_CODE, "/Malformed Capability Value"}, }; -static const int bgp_notify_capability_msg_max = BGP_NOTIFY_CAPABILITY_MAX; +BGP_DEBUG_MSG_MAX (bgp_notify_capability_msg); /* Origin strings. */ const char *bgp_origin_str[] = {"i","e","?"}; diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 4198a8e..1ddd4ce 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -391,7 +391,7 @@ bgp_graceful_stale_timer_expire (struct thread *thread) return 0; } -/* Called after event occured, this function change status and reset +/* Called after event occurred, this function change status and reset read/write and timer thread. */ void bgp_fsm_change_status (struct peer *peer, int status) diff --git a/bgpd/bgp_fsm_4271.dot b/bgpd/bgp_fsm_4271.dot deleted file mode 100644 index c03939f..0000000 --- a/bgpd/bgp_fsm_4271.dot +++ /dev/null @@ -1,34 +0,0 @@ -digraph { - rankdir=LR - //concentrate=true - nojustify="true" - - Idle -> Connect [ label="ManualStart\l|AutomaticStart" ] - Idle -> Active [ label="ManualStart_with_PassiveTcpEstablishment\l|AutomaticStart_with_PassiveTcpEstablishment" ] - - Connect -> Idle [ label="ManualStop"] - Connect -> Connect [ label="ConnectRetryTimer_Expires\l|TcpConnection_Valid\l|Tcp_CR_Invalid\l|Tcp_CR_Acked && DelayOpen == True\l|TcpConnectionConfirmed && DelayOpen == True\l" ] - Connect -> OpenSent [ label="DelayOpenTimer_Expires\l|Tcp_CR_Acked && DelayOpen == False\l|TcpConnectionConfirmed && DelayOpen == False\l" ] - Connect -> Active [ label="TcpConnectionFails && DelayOpenTimer == \"running\"\l" ] - Connect -> Idle [ label="TcpConnectionFails && DelayOpenTimer == \"not running\"\l" ] - Connect -> OpenConfirm [ label="BGPOpen && DelayOpenTimer == \"running\"" ] - Connect -> Idle [ label="NotifMsg|*\l" ] - - Active -> Idle [ label="ManualStop\l|TcpConnectionFails\l|NotifMsg|*" ] - Active -> Connect [ label="ConnectRetryTimer_Expires" ] - Active -> OpenSent [ label="DelayOpenTimer_Expires" ] - Active -> Active [ label="(Tcp_CR_Acked\l|TcpConnectionConfirmed)\l&& DelayOpen = True" ] - Active -> OpenSent [ label="(Tcp_CR_Acked|TcpConnectionConfirmed)\l&& DelayOpen = False" ] - Active -> OpenConfirm [ label="BGPOpen && DelayOpenTimer == \"running\"" ] - - OpenSent -> Idle [ label="ManualStop\l|AutomaticStop\l|HoldTimer_Expires\l|NotifMsg\l|OpenCollisionDump\l" ] - OpenSent -> Active [ label="TcpConnectionFails" ] - OpenSent -> OpenConfirm [ label="BGPOpen" ] - - OpenConfirm -> Idle [ label="ManualStop\l|AutomaticStop\l|HoldTimer_Expires\l|TcpConnectionFails\l|NotifMsg\l|BGPOpen|*\l"] - OpenConfirm -> Established [ label="KeepAliveMsg|"] - OpenConfirm -> OpenConfirm [ label="KeepaliveTimer_Expires" ] - - Established -> Idle [ label="OpenCollisionDump|*"] - Established -> Established [ label="Tcp_CR_Invalid|KeepAliveMsg|UpdateMsg"] -} \ No newline at end of file diff --git a/bgpd/bgp_fsm_quagga.dot b/bgpd/bgp_fsm_quagga.dot deleted file mode 100644 index 2b9bee8..0000000 --- a/bgpd/bgp_fsm_quagga.dot +++ /dev/null @@ -1,59 +0,0 @@ -digraph { - rankdir=LR - //concentrate=true - nojustify="true" - - Idle - Connect - Active - OpenSent - OpenConfirm - Established - Clearing - Idle -> Deleted - Configured -> Idle - - Idle -> Connect [ label="BGP_Start\l/bgp_start\l" ] - Idle -> Idle [ label="BGP_Stop\l|TCP_connection_open\l|TCP_connection_closed\l|TCP_fatal_error\l/bgp_stop\l"] - - Connect -> Connect [ label="ConnectRetry_timer_expired\l/bgp_reconnect\l" ] - Connect -> Idle [ label="BGP_Stop\l|TCP_connection_open\l|Receive_NOTIFICATION_message\l/bgp_stop\l" ] - Connect -> Idle [ label="TCP_fatal_error\l/bgp_connect_fail\l" ] - Connect -> Idle [ label="Hold_Timer_expired\l|KeepAlive_timer_expired\l|Receive_OPEN_message\l|Receive_KEEPALIVE_message\l|Receive_UPDATE_message\l|Clearing_Completed\l/bgp_ignore"] - Connect -> OpenSent [ label="TCP_connection_open\l/bgp_connect_success\l" ] - Connect -> Active [ label="TCP_connection_open_failed\l/bgp_connect_fail\l" ] - - Active -> Idle [ label="BGP_Stop\l|TCP_connection_closed\l/bgp_stop\l" ] - Active -> Idle [ label="Receive_NOTIFICATION_message\l/bgp_stop_with_error\l" ] - Active -> Idle [ label="TCP_fatal_error\l|Hold_Timer_expired\l|KeepAlive_timer_expired\l|Receive_OPEN_message\l|Receive_KEEPALIVE_message\l|Receive_UPDATE_message\l|Clearing_Completed\l/bgp_ignore\l" ] - Active -> OpenSent [ label="TCP_connection_open\l/bgp_connect_success\l" ] - Active -> Connect [ label="ConnectRetry_timer_expiredl/bgp_start\l" ] - - Accept -> Active [ label="Raise TCP_connection_open on Active" ] - - OpenSent -> Idle [ label="BGP_Stop\l/bgp_stop\l" ] - OpenSent -> Idle [ label="ConnectRetry_timer_expired\l|Clearing_Completed\l|KeepAlive_timer_expired\l/bgp_ignore\l" ] - OpenSent -> Idle [ label="Hold_Timer_expired\l/bgp_fsm_holdtime_expire\l"] - OpenSent -> Idle [ label="Receive_KEEPALIVE_message\l|Receive_UPDATE_message\l/bgp_fsm_event_error" ] - OpenSent -> Idle [ label="Receive_NOTIFICATION_message\l/bgp_stop_with_error" ] - OpenSent -> Active [ label="TCP_connection_open\l|TCP_connection_closed\l|TCP_connection_open_failed\l|TCP_fatal_error\l/bgp_stop\l"] - OpenSent -> OpenConfirm [ label="Receive_OPEN_message\l/bgp_fsm_open" ] - - OpenConfirm -> Idle [ label="BGP_Stop\l|TCP_connection_open\l|TCP_connection_closed\l|TCP_connection_open_failed\l|TCP_fatal_error\l/bgp_stop\l"] - OpenConfirm -> Idle [ label="Hold_Timer_expired\l/bgp_fsm_holdtime_expire" ] - OpenConfirm -> Idle [ label="ConnectRetry_timer_expired\l|Receive_OPEN_message\l|Receive_UPDATE_message\l|Clearing_Completed\l/bgp_ignore"] - OpenConfirm -> Idle [ label="Receive_NOTIFICATION_message\l/bgp_stop_with_error\l" ] - OpenConfirm -> Established [ label="Receive_KEEPALIVE_message\l/bgp_establish\l" ] - - Established -> Clearing [ label="BGP_Stop\l|TCP_connection_open\l|TCP_connection_closed\l|TCP_connection_open_failed\l|TCP_fatal_error\l|ConnectRetry_timer_expired\l|Hold_Timer_expired\l|Receive_OPEN_message\l/bgp_stop\l"] - Established -> Idle [ label="Clearing_Completed\l/bgp_ignore" ] - Established -> Clearing [ label="Receive_NOTIFICATION_message\l/bgp_stop_with_error"] - - Clearing -> Idle [ label="Clearing_Completed\l/bgp_clearing_completed" ] - subgraph cluster_pre_collision_detect { - label="Prior to collision detection" - bgcolor=lightgray - Connect Accept Active OpenSent OpenConfirm - } - -} \ No newline at end of file diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c index af9c030..e5a4c60 100644 --- a/bgpd/bgp_main.c +++ b/bgpd/bgp_main.c @@ -346,7 +346,6 @@ main (int argc, char **argv) int daemon_mode = 0; int dryrun = 0; char *progname; - struct thread thread; int tmp_port; int skip_runas = 0; @@ -485,8 +484,7 @@ main (int argc, char **argv) getpid ()); /* Start finite state machine, here we go! */ - while (thread_fetch (bm->master, &thread)) - thread_call (&thread); + thread_main (bm->master); /* Not reached. */ return (0); diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c index 1158ab1..d734c20 100644 --- a/bgpd/bgp_nht.c +++ b/bgpd/bgp_nht.c @@ -409,8 +409,8 @@ make_prefix (int afi, struct bgp_info *ri, struct prefix *p) break; #ifdef HAVE_IPV6 case AFI_IP6: - if (ri->attr->extra->mp_nexthop_len != 16 - || IN6_IS_ADDR_LINKLOCAL (&ri->attr->extra->mp_nexthop_global)) + if (ri->attr->extra->mp_nexthop_len == 16 + && IN6_IS_ADDR_LINKLOCAL (&ri->attr->extra->mp_nexthop_global)) return -1; p->family = AF_INET6; diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c index 2800423..d9ec4be 100644 --- a/bgpd/bgp_open.c +++ b/bgpd/bgp_open.c @@ -120,7 +120,8 @@ bgp_capability_vty_out (struct vty *vty, struct peer *peer) static void bgp_capability_mp_data (struct stream *s, struct capability_mp_data *mpc) { - mpc->afi = stream_getw (s); + afi_t afi = stream_getw (s); + memcpy(&mpc->afi, &afi, sizeof(mpc->afi)); mpc->reserved = stream_getc (s); mpc->safi = stream_getc (s); } diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index b497e45..5a8b18a 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -1314,7 +1314,6 @@ bgp_open_receive (struct peer *peer, bgp_size_t size) int mp_capability; u_int8_t notify_data_remote_as[2]; u_int8_t notify_data_remote_id[4]; - u_int16_t *holdtime_ptr; realpeer = NULL; @@ -1322,7 +1321,6 @@ bgp_open_receive (struct peer *peer, bgp_size_t size) version = stream_getc (peer->ibuf); memcpy (notify_data_remote_as, stream_pnt (peer->ibuf), 2); remote_as = stream_getw (peer->ibuf); - holdtime_ptr = (u_int16_t *)stream_pnt (peer->ibuf); holdtime = stream_getw (peer->ibuf); memcpy (notify_data_remote_id, stream_pnt (peer->ibuf), 4); remote_id.s_addr = stream_get_ipv4 (peer->ibuf); @@ -1628,10 +1626,11 @@ bgp_open_receive (struct peer *peer, bgp_size_t size) if (holdtime < 3 && holdtime != 0) { + uint16_t netholdtime = htons (holdtime); bgp_notify_send_with_data (peer, BGP_NOTIFY_OPEN_ERR, BGP_NOTIFY_OPEN_UNACEP_HOLDTIME, - (u_int8_t *)holdtime_ptr, 2); + (u_int8_t *) &netholdtime, 2); return -1; } @@ -2328,7 +2327,8 @@ bgp_capability_msg_parse (struct peer *peer, u_char *pnt, bgp_size_t length) end = pnt + length; - while (pnt < end) + /* XXX: Streamify this */ + for (; pnt < end; pnt += hdr->length + 3) { /* We need at least action, capability code and capability length. */ if (pnt + 3 > end) @@ -2416,7 +2416,6 @@ bgp_capability_msg_parse (struct peer *peer, u_char *pnt, bgp_size_t length) zlog_warn ("%s unrecognized capability code: %d - ignored", peer->host, hdr->code); } - pnt += hdr->length + 3; } return 0; } @@ -2476,7 +2475,7 @@ bgp_read_packet (struct peer *peer) /* Read packet from fd. */ nbytes = stream_read_try (peer->ibuf, peer->fd, readsize); - /* If read byte is smaller than zero then error occured. */ + /* If read byte is smaller than zero then error occurred. */ if (nbytes < 0) { /* Transient error should retry */ diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 13596fb..63219c2 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -16088,6 +16088,9 @@ bgp_distance_free (struct bgp_distance *bdistance) XFREE (MTYPE_BGP_DISTANCE, bdistance); } +/* XXX: Ideally, this should re-announce affected routes to zebra. + * See Bugzilla #949 + */ static int bgp_distance_set (struct vty *vty, const char *distance_str, const char *ip_str, const char *access_list_str) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 0040d62..abd01ce 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -4340,7 +4340,7 @@ ALIAS (neighbor_allowas_in, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Accept as-path with my AS present in it\n" - "Number of occurances of AS number\n") + "Number of occurrences of AS number\n") DEFUN (no_neighbor_allowas_in, no_neighbor_allowas_in_cmd, diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 6aeecb1..5869d35 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -3938,7 +3938,7 @@ peer_distribute_unset (struct peer *peer, afi_t afi, safi_t safi, int direct) /* Update distribute list. */ static void -peer_distribute_update (struct access_list *access) +peer_distribute_update (const char *name) { afi_t afi; safi_t safi; diff --git a/bootstrap.sh b/bootstrap.sh deleted file mode 100755 index c0b95d3..0000000 --- a/bootstrap.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -# This file exists to document the proper way to initialize autotools, -# and so that those used to the presence of bootstrap.sh or autogen.sh -# will have an eaiser time. - -autoreconf -i diff --git a/buildtest.sh b/buildtest.sh deleted file mode 100755 index 04fc2cc..0000000 --- a/buildtest.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/bash -# written 2012-2013 by David Lamparter, placed in Public Domain. -# -# builds some git commit of Quagga in some different configurations -# usage: buildtest.sh [commit [configurations...]] - -basecfg="--prefix=/usr --enable-user=quagga --enable-group=quagga --enable-vty-group=quagga --enable-configfile-mask=0660 --enable-logfile-mask=0640 --enable-vtysh --sysconfdir=/etc/quagga --enable-exampledir=/etc/quagga/samples --localstatedir=/var/run/quagga --libdir=/usr/lib64/quagga --enable-rtadv --disable-static --enable-isisd --enable-multipath=0 --enable-pimd" - -configs_base="gcc|$basecfg" - -configs_ext="gcc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology" -configs_snmp="gcc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology --enable-snmp" -configs_clang="clang|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology" -configs_icc="icc|$basecfg --enable-opaque-lsa --enable-ospf-te --enable-ospfclient --enable-isis-topology" - -defconfigs="base ext" -net-snmp-config --version &> /dev/null && defconfigs="$defconfigs snmp" -clang --version &> /dev/null && defconfigs="$defconfigs clang" -icc --version &> /dev/null && defconfigs="$defconfigs icc" - -echo "enabled configurations: $defconfigs" - -cc_gcc="CC=gcc; export CC" -cc_clang="CC=clang; export CC" -cc_icc="CC=icc; export CC" - -############################### - -errfunc() { - echo "something went wrong! check $TEMP" - exit 1 -} - -set -e -trap errfunc ERR - -COMMITREF="$1" -COMMITISH="`git rev-list --max-count=1 ${COMMITREF:-HEAD}`" -TEMP="`mktemp -t -d quaggabuild.XXXXXX`" -BASE="`pwd`" -CONFIGS="$2" - -echo using temporary directory: $TEMP -echo git commit used: -git --no-pager log -n 1 --pretty=oneline "$COMMITISH" - -cd "$TEMP" -git clone "$BASE" "source" -cd "source" -git checkout -b build "$COMMITISH" -git clean -d -f -x -sh bootstrap.sh - -cd .. - -echo -e "\n\n\n\n\033[33;1mmaking dist tarball\033[m" - -mkdir build_dist -cd build_dist -../source/configure -make distdir=sdist dist-gzip -cd .. -tar zxvf build_dist/sdist.tar.gz - -for cfg in ${CONFIGS:-$defconfigs}; do - echo -e "\n\n\n\n\033[33;1mbuilding configuration $cfg\033[m" - config="\${configs_$cfg}" - eval "config=$config" - - cc="${config%%|*}" - args="${config#*|}" - - ccset="\${cc_$cc}" - eval "ccset=$ccset" - eval "$ccset" - - bdir="build_$cfg" - mkdir "$bdir" - cd "$bdir" - ../sdist/configure $args - make -j5 - make check - make DESTDIR="$TEMP/inst_$cfg" install - cd .. -done - -echo -e "\n\n\n\neverything seems ok. you may now\n\trm -rf $TEMP" diff --git a/compile b/compile new file mode 100755 index 0000000..a85b723 --- /dev/null +++ b/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..2e9ad7f --- /dev/null +++ b/config.guess @@ -0,0 +1,1462 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-10-02' + +# This file 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 3 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, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = hppa2.0w ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +cat >&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` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..8aa7318 --- /dev/null +++ b/config.h.in @@ -0,0 +1,895 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* bgpd vty socket */ +#undef BGP_VTYSH_PATH + +/* Mask for config files */ +#undef CONFIGFILE_MASK + +/* Consumed Time Check */ +#undef CONSUMED_TIME_CHECK + +/* daemon vty directory */ +#undef DAEMON_VTY_DIR + +/* Build for development */ +#undef DEV_BUILD + +/* Disable BGP installation to zebra */ +#undef DISABLE_BGP_ANNOUNCE + +/* include git version info */ +#undef GIT_VERSION + +/* GNU Linux */ +#undef GNU_LINUX + +/* Define to 1 if you have the `alarm' function. */ +#undef HAVE_ALARM + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ASM_TYPES_H + +/* Broken CMSG_FIRSTHDR */ +#undef HAVE_BROKEN_CMSG_FIRSTHDR + +/* BSD ifi_link_state available */ +#undef HAVE_BSD_IFI_LINK_STATE + +/* BSD link-detect */ +#undef HAVE_BSD_LINK_DETECT + +/* Can pass ifindex in struct ip_mreq */ +#undef HAVE_BSD_STRUCT_IP_MREQ_HACK + +/* capabilities */ +#undef HAVE_CAPABILITIES + +/* Define to 1 if your system has a working `chown' function. */ +#undef HAVE_CHOWN + +/* Have monotonic clock */ +#undef HAVE_CLOCK_MONOTONIC + +/* Define to 1 if you have the `daemon' function. */ +#undef HAVE_DAEMON + +/* Define to 1 if you have the declaration of `TCP_MD5SIG', and to 0 if you + don't. */ +#undef HAVE_DECL_TCP_MD5SIG + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT + +/* Define to 1 if you have the `dup2' function. */ +#undef HAVE_DUP2 + +/* Define to 1 if you have the `fcntl' function. */ +#undef HAVE_FCNTL + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FEATURES_H + +/* Define to 1 if your system has a working POSIX `fnmatch' function. */ +#undef HAVE_FNMATCH + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Forwarding Plane Manager support */ +#undef HAVE_FPM + +/* Define to 1 if you have the `ftruncate' function. */ +#undef HAVE_FTRUNCATE + +/* Define to 1 if you have the `getaddrinfo' function. */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getgrouplist' function. */ +#undef HAVE_GETGROUPLIST + +/* Define to 1 if you have the `gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the `getifaddrs' function. */ +#undef HAVE_GETIFADDRS + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Glibc backtrace */ +#undef HAVE_GLIBC_BACKTRACE + +/* GNU regexp library */ +#undef HAVE_GNU_REGEX + +/* 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 + +/* Define to 1 if you have the `inet_aton' function. */ +#undef HAVE_INET_ATON + +/* Define to 1 if you have the header file. */ +#undef HAVE_INET_ND_H + +/* Define to 1 if you have the `inet_ntoa' function. */ +#undef HAVE_INET_NTOA + +/* inet_ntop */ +#undef HAVE_INET_NTOP + +/* inet_pton */ +#undef HAVE_INET_PTON + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* IPv6 */ +#undef HAVE_IPV6 + +/* Have IP_PKTINFO */ +#undef HAVE_IP_PKTINFO + +/* Have IP_RECVDSTADDR */ +#undef HAVE_IP_RECVDSTADDR + +/* Have IP_RECVIF */ +#undef HAVE_IP_RECVIF + +/* IRDP */ +#undef HAVE_IRDP + +/* Define to 1 if you have the header file. */ +#undef HAVE_KVM_H + +/* Capabilities */ +#undef HAVE_LCAPS + +/* Define to 1 if you have the `crypt' library (-lcrypt). */ +#undef HAVE_LIBCRYPT + +/* Have libm */ +#undef HAVE_LIBM + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ +#undef HAVE_LIBPCREPOSIX + +/* 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 `umem' library (-lumem). */ +#undef HAVE_LIBUMEM + +/* Define to 1 if you have the `xnet' library (-lxnet). */ +#undef HAVE_LIBXNET + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_MROUTE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_VERSION_H + +/* mallinfo */ +#undef HAVE_MALLINFO + +/* Define to 1 if you have the `memchr' function. */ +#undef HAVE_MEMCHR + +/* Define to 1 if you have the `memmove' function. */ +#undef HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETDB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET6_IN6_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET6_IN6_VAR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET6_ND6_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_ICMP6_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN6_VAR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_SYSTM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_VAR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IP_ICMP_H + +/* netlink */ +#undef HAVE_NETLINK + +/* Have netns */ +#undef HAVE_NETNS + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_IF_DL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_IF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_IF_VAR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_NETOPT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_ROUTE_H + +/* NET_RT_IFLIST */ +#undef HAVE_NET_RT_IFLIST + +/* Have openpam.h */ +#undef HAVE_OPENPAM_H + +/* Have pam_misc.h */ +#undef HAVE_PAM_MISC_H + +/* Define to 1 if you have the `pow' function. */ +#undef HAVE_POW + +/* Solaris printstack */ +#undef HAVE_PRINTSTACK + +/* Define to 1 if you have the header file. */ +#undef HAVE_PRIV_H + +/* protobuf */ +#undef HAVE_PROTOBUF + +/* prctl */ +#undef HAVE_PR_SET_KEEPCAPS + +/* Have RFC3678 protocol-independed API */ +#undef HAVE_RFC3678 + +/* Enable IPv6 Routing Advertisement support */ +#undef HAVE_RTADV + +/* rusage */ +#undef HAVE_RUSAGE + +/* Define to 1 if you have the `select' function. */ +#undef HAVE_SELECT + +/* Define to 1 if you have the `setns' function. */ +#undef HAVE_SETNS + +/* Define to 1 if you have the header file. */ +#undef HAVE_SIGNAL_H + +/* SNMP */ +#undef HAVE_SNMP + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if the system has the type `socklen_t'. */ +#undef HAVE_SOCKLEN_T + +/* getpflags */ +#undef HAVE_SOLARIS_CAPABILITIES + +/* Stack symbol decoding */ +#undef HAVE_STACK_TRACE + +/* Define to 1 if `stat' has the bug that it succeeds when given the + zero-length file name argument. */ +#undef HAVE_STAT_EMPTY_STRING_BUG + +/* Define to 1 if stdbool.h conforms to C99. */ +#undef HAVE_STDBOOL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the `strcspn' function. */ +#undef HAVE_STRCSPN + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `strftime' function. */ +#undef HAVE_STRFTIME + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the 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 `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strndup' function. */ +#undef HAVE_STRNDUP + +/* Define to 1 if you have the `strnlen' function. */ +#undef HAVE_STRNLEN + +/* Define to 1 if you have the header file. */ +#undef HAVE_STROPTS_H + +/* Define to 1 if you have the `strrchr' function. */ +#undef HAVE_STRRCHR + +/* Define to 1 if you have the `strspn' function. */ +#undef HAVE_STRSPN + +/* Define to 1 if you have the `strstr' function. */ +#undef HAVE_STRSTR + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if the system has the type `struct icmphdr'. */ +#undef HAVE_STRUCT_ICMPHDR + +/* Define to 1 if the system has the type `struct if6_aliasreq'. */ +#undef HAVE_STRUCT_IF6_ALIASREQ + +/* Define to 1 if `ifra_lifetime' is a member of `struct if6_aliasreq'. */ +#undef HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME + +/* Define to 1 if the system has the type `struct ifaliasreq'. */ +#undef HAVE_STRUCT_IFALIASREQ + +/* Define to 1 if `ifm_status' is a member of `struct ifmediareq'. */ +#undef HAVE_STRUCT_IFMEDIAREQ_IFM_STATUS + +/* Define to 1 if `ifi_link_state' is a member of `struct if_data'. */ +#undef HAVE_STRUCT_IF_DATA_IFI_LINK_STATE + +/* Define to 1 if the system has the type `struct igmpmsg'. */ +#undef HAVE_STRUCT_IGMPMSG + +/* Define to 1 if the system has the type `struct in6_aliasreq'. */ +#undef HAVE_STRUCT_IN6_ALIASREQ + +/* Define to 1 if the system has the type `struct in_pktinfo'. */ +#undef HAVE_STRUCT_IN_PKTINFO + +/* Define to 1 if `imr_ifindex' is a member of `struct ip_mreqn'. */ +#undef HAVE_STRUCT_IP_MREQN_IMR_IFINDEX + +/* Define to 1 if the system has the type `struct mfcctl'. */ +#undef HAVE_STRUCT_MFCCTL + +/* Define to 1 if the system has the type `struct nd_opt_adv_interval'. */ +#undef HAVE_STRUCT_ND_OPT_ADV_INTERVAL + +/* Define to 1 if `nd_opt_ai_type' is a member of `struct + nd_opt_adv_interval'. */ +#undef HAVE_STRUCT_ND_OPT_ADV_INTERVAL_ND_OPT_AI_TYPE + +/* Define to 1 if the system has the type `struct nd_opt_homeagent_info'. */ +#undef HAVE_STRUCT_ND_OPT_HOMEAGENT_INFO + +/* Define to 1 if the system has the type `struct rt_addrinfo'. */ +#undef HAVE_STRUCT_RT_ADDRINFO + +/* Define to 1 if the system has the type `struct sioc_sg_req'. */ +#undef HAVE_STRUCT_SIOC_SG_REQ + +/* Define to 1 if the system has the type `struct sioc_vif_req'. */ +#undef HAVE_STRUCT_SIOC_VIF_REQ + +/* Define to 1 if the system has the type `struct sockaddr'. */ +#undef HAVE_STRUCT_SOCKADDR + +/* Define to 1 if the system has the type `struct sockaddr_dl'. */ +#undef HAVE_STRUCT_SOCKADDR_DL + +/* Define to 1 if `sdl_len' is a member of `struct sockaddr_dl'. */ +#undef HAVE_STRUCT_SOCKADDR_DL_SDL_LEN + +/* Define to 1 if the system has the type `struct sockaddr_in'. */ +#undef HAVE_STRUCT_SOCKADDR_IN + +/* Define to 1 if the system has the type `struct sockaddr_in6'. */ +#undef HAVE_STRUCT_SOCKADDR_IN6 + +/* Define to 1 if `sin6_scope_id' is a member of `struct sockaddr_in6'. */ +#undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID + +/* Define to 1 if `sin_len' is a member of `struct sockaddr_in'. */ +#undef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN + +/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */ +#undef HAVE_STRUCT_SOCKADDR_SA_LEN + +/* Define to 1 if the system has the type `struct sockaddr_un'. */ +#undef HAVE_STRUCT_SOCKADDR_UN + +/* Define to 1 if `sun_len' is a member of `struct sockaddr_un'. */ +#undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN + +/* Define to 1 if the system has the type `struct vifctl'. */ +#undef HAVE_STRUCT_VIFCTL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYSLOG_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_CAPABILITY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_CDEFS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_CONF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_KSYM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSCTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_UN_H + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H + +/* Define this if your system can create weak aliases */ +#undef HAVE_SYS_WEAK_ALIAS + +/* Define this if weak aliases may be created with __attribute__ */ +#undef HAVE_SYS_WEAK_ALIAS_ATTRIBUTE + +/* Define this if weak aliases may be created with #pragma _CRI duplicate */ +#undef HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE + +/* Define this if weak aliases in other files are honored */ +#undef HAVE_SYS_WEAK_ALIAS_CROSSFILE + +/* Define this if weak aliases may be created with #pragma _HP_SECONDARY_DEF + */ +#undef HAVE_SYS_WEAK_ALIAS_HPSECONDARY + +/* Define this if weak aliases may be created with #pragma weak */ +#undef HAVE_SYS_WEAK_ALIAS_PRAGMA + +/* Old Linux 2.4 TCP MD5 Signature Patch */ +#undef HAVE_TCP_MD5_LINUX24 + +/* Use TCP for zebra communication */ +#undef HAVE_TCP_ZEBRA + +/* Define to 1 if you have the header file. */ +#undef HAVE_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UCONTEXT_H + +/* Define to 1 if `uc_mcontext.gregs' is a member of `ucontext_t'. */ +#undef HAVE_UCONTEXT_T_UC_MCONTEXT_GREGS + +/* Define to 1 if `uc_mcontext.regs' is a member of `ucontext_t'. */ +#undef HAVE_UCONTEXT_T_UC_MCONTEXT_REGS + +/* Define to 1 if `uc_mcontext.regs.nip' is a member of `ucontext_t'. */ +#undef HAVE_UCONTEXT_T_UC_MCONTEXT_REGS_NIP + +/* Define to 1 if `uc_mcontext.uc_regs' is a member of `ucontext_t'. */ +#undef HAVE_UCONTEXT_T_UC_MCONTEXT_UC_REGS + +/* Define to 1 if you have the `uname' function. */ +#undef HAVE_UNAME + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* Define to 1 if the system has the type `vifi_t'. */ +#undef HAVE_VIFI_T + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCTYPE_H + +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + +/* selected method for isis, == one of the constants */ +#undef ISIS_METHOD + +/* constant value for isis method bpf */ +#undef ISIS_METHOD_BPF + +/* constant value for isis method dlpi */ +#undef ISIS_METHOD_DLPI + +/* constant value for isis method pfpacket */ +#undef ISIS_METHOD_PFPACKET + +/* isisd vty socket */ +#undef ISIS_VTYSH_PATH + +/* KAME IPv6 */ +#undef KAME + +/* Linux IPv6 stack */ +#undef LINUX_IPV6 + +/* Mask for log files */ +#undef LOGFILE_MASK + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#undef LSTAT_FOLLOWS_SLASHED_SYMLINK + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Maximum number of paths for a route */ +#undef MULTIPATH_NUM + +/* nhrpd vty socket */ +#undef NHRP_VTYSH_PATH + +/* OpenBSD */ +#undef OPEN_BSD + +/* ospf6d vty socket */ +#undef OSPF6_VTYSH_PATH + +/* ospfd vty socket */ +#undef OSPF_VTYSH_PATH + +/* 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 home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Have openpam_ttyconv */ +#undef PAM_CONV_FUNC + +/* bgpd PID */ +#undef PATH_BGPD_PID + +/* isisd PID */ +#undef PATH_ISISD_PID + +/* nhrpd PID */ +#undef PATH_NHRPD_PID + +/* ospf6d PID */ +#undef PATH_OSPF6D_PID + +/* ospfd PID */ +#undef PATH_OSPFD_PID + +/* pimd PID */ +#undef PATH_PIMD_PID + +/* ripd PID */ +#undef PATH_RIPD_PID + +/* ripngd PID */ +#undef PATH_RIPNGD_PID + +/* watchquagga PID */ +#undef PATH_WATCHQUAGGA_PID + +/* zebra PID */ +#undef PATH_ZEBRA_PID + +/* pimd vty socket */ +#undef PIM_VTYSH_PATH + +/* Quagga Group */ +#undef QUAGGA_GROUP + +/* Hide deprecated interfaces */ +#undef QUAGGA_NO_DEPRECATED_INTERFACES + +/* Quagga User */ +#undef QUAGGA_USER + +/* ripng vty socket */ +#undef RIPNG_VTYSH_PATH + +/* rip vty socket */ +#undef RIP_VTYSH_PATH + +/* Define to the type of arg 1 for `select'. */ +#undef SELECT_TYPE_ARG1 + +/* Define to the type of args 2, 3 and 4 for `select'. */ +#undef SELECT_TYPE_ARG234 + +/* Define to the type of arg 5 for `select'. */ +#undef SELECT_TYPE_ARG5 + +/* Use SNMP AgentX to interface with snmpd */ +#undef SNMP_AGENTX + +/* Use SNMP SMUX to interface with snmpd */ +#undef SNMP_SMUX + +/* Solaris IPv6 */ +#undef SOLARIS_IPV6 + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* SunOS 5 */ +#undef SUNOS_5 + +/* SunOS 5.6 to 5.7 */ +#undef SUNOS_56 + +/* SunOS 5.8 up */ +#undef SUNOS_59 + +/* OSPFAPI */ +#undef SUPPORT_OSPF_API + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Enable IS-IS topology generator code */ +#undef TOPOLOGY_GENERATE + +/* Use PAM for authentication */ +#undef USE_PAM + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Version number of package */ +#undef VERSION + +/* VTY shell */ +#undef VTYSH + +/* VTY Sockets Group */ +#undef VTY_GROUP + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* zebra api socket */ +#undef ZEBRA_SERV_PATH + +/* zebra vty socket */ +#undef ZEBRA_VTYSH_PATH + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `int' if doesn't define. */ +#undef gid_t + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `int' if does not define. */ +#undef mode_t + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported directly. */ +#undef restrict +/* Work around a bug in Sun C++: it does not support _Restrict or + __restrict__, even though the corresponding Sun C compiler ends up with + "#define restrict _Restrict" or "#define restrict __restrict__" in the + previous line. Perhaps some future version of Sun C++ will work with + restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ +#if defined __SUNPRO_CC && !defined __RESTRICT +# define _Restrict +# define __restrict__ +#endif + +/* Old readline */ +#undef rl_completion_matches + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to `int' if doesn't define. */ +#undef uid_t + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +#undef volatile diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..7b334f9 --- /dev/null +++ b/config.sub @@ -0,0 +1,1823 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-09-05' + +# This file 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 3 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, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 0000000..8663995 --- /dev/null +++ b/configure @@ -0,0 +1,28723 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for Quagga 1.2.3. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +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 +IFS=$as_save_IFS + + ;; +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 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: https://bugzilla.quagga.net about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# 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 + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # 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 sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Quagga' +PACKAGE_TARNAME='quagga' +PACKAGE_VERSION='1.2.3' +PACKAGE_STRING='Quagga 1.2.3' +PACKAGE_BUGREPORT='https://bugzilla.quagga.net' +PACKAGE_URL='' + +ac_unique_file="lib/zebra.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_list= +ac_func_list= +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +quagga_statedir +CONFDATE +WEAK_ALIAS_CROSSFILE +WEAK_ALIAS +LIBCAP +NETSNMP_CONFIG +CARES_LIBS +CARES_CFLAGS +LIB_REGEX +HAVE_LIBPCREPOSIX +OSPFAPI +OSPFCLIENT +CURSES +VTYSH +SOLARIS +PIMD +ISISD +WATCHQUAGGA +NHRPD +OSPF6D +OSPFD +RIPNGD +RIPD +BGPD +ZEBRA +DOC +PIMD_FALSE +PIMD_TRUE +ISISD_FALSE +ISISD_TRUE +OSPF6D_FALSE +OSPF6D_TRUE +RIPNGD_FALSE +RIPNGD_TRUE +OSPFCLIENT_FALSE +OSPFCLIENT_TRUE +WATCHQUAGGA_FALSE +WATCHQUAGGA_TRUE +NHRPD_FALSE +NHRPD_TRUE +OSPFD_FALSE +OSPFD_TRUE +RIPD_FALSE +RIPD_TRUE +BGPD_FALSE +BGPD_TRUE +ZEBRA_FALSE +ZEBRA_TRUE +IPFORWARD +IOCTL_METHOD +IF_METHOD +RTREAD_METHOD +HAVE_NETLINK_FALSE +HAVE_NETLINK_TRUE +KERNEL_METHOD +RT_METHOD +LIBM +LIBOBJS +LIBPAM +VTYSH_FALSE +VTYSH_TRUE +LIBREADLINE +GIT_VERSION_FALSE +GIT_VERSION_TRUE +enable_vty_group +enable_group +enable_user +ISIS_TOPOLOGY_LIB +ISIS_TOPOLOGY_DIR +ISIS_TOPOLOGY_INCLUDES +HAVE_PROTOBUF_FALSE +HAVE_PROTOBUF_TRUE +PROTOBUF_C_LIBS +PROTOBUF_C_CFLAGS +PROTOC_C +DEV_BUILD_FALSE +DEV_BUILD_TRUE +WERROR +HAVE_PANDOC_FALSE +HAVE_PANDOC_TRUE +PANDOC +HAVE_LATEX_FALSE +HAVE_LATEX_TRUE +LATEXMK +PDFLATEX +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +pkgsrcrcdir +pkgsrcdir +exampledir +GAWK +PERL +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +CONFIG_ARGS +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_exampledir +enable_pkgsrcrcdir +with_cflags +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +with_pkg_extra_version +with_pkg_git_version +enable_vtysh +enable_doc +enable_zebra +enable_bgpd +enable_ripd +enable_ripngd +enable_ospfd +enable_ospf6d +enable_nhrpd +enable_watchquagga +enable_isisd +enable_pimd +enable_bgp_announce +enable_snmp +with_libpam +enable_tcp_zebra +enable_ospfapi +enable_ospfclient +enable_multipath +enable_user +enable_group +enable_vty_group +enable_configfile_mask +enable_logfile_mask +enable_rtadv +enable_irdp +enable_isis_topology +enable_capabilities +enable_rusage +enable_gcc_ultra_verbose +enable_linux24_tcp_md5 +enable_gcc_rdynamic +enable_backtrace +enable_time_check +enable_pcreposix +enable_fpm +enable_werror +enable_protobuf +enable_dev_build +enable_largefile +' + ac_precious_vars='build_alias +host_alias +target_alias +GAWK +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +LT_SYS_LIBRARY_PATH +PROTOBUF_C_CFLAGS +PROTOBUF_C_LIBS +CARES_CFLAGS +CARES_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# 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. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +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 + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -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) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$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 ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$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 ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + 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 ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=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 ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_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'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +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 + 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 + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# 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 the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + 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 + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# 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 Quagga 1.2.3 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 \`..'] + +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] + --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] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/quagga] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_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] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Quagga 1.2.3:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-exampledir specify alternate directory for examples + --enable-pkgsrcrcdir specify directory for rc.d scripts + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-vtysh do not build integrated vty shell for Quagga + --disable-doc do not build docs + --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-nhrpd do not build nhrpd + --disable-watchquagga do not build watchquagga + --disable-isisd do not build isisd + --disable-pimd do not build pimd + --disable-bgp-announce, turn off BGP route announcement + --enable-snmp=ARG enable SNMP support (smux or agentx) + --enable-tcp-zebra enable TCP/IP socket connection between zebra and + protocol daemon + --disable-ospfapi do not build OSPFAPI to access the OSPF LSA Database + --disable-ospfclient do not build OSPFAPI client for OSPFAPI, (this is + the default if --disable-ospfapi is set) + --enable-multipath=ARG enable multipath function, ARG must be digit + --enable-user=USER user to run Quagga suite as (default quagga) + --enable-group=GROUP group to run Quagga suite as (default quagga) + --enable-vty-group=ARG set vty sockets to have specified group as owner + --enable-configfile-mask=ARG + set mask for config files + --enable-logfile-mask=ARG + set mask for log files + --disable-rtadv disable IPV6 router advertisement feature + --enable-irdp enable IRDP server support in zebra + --enable-isis-topology enable IS-IS topology generator + --disable-capabilities disable using POSIX capabilities + --disable-rusage disable using getrusage + --enable-gcc-ultra-verbose + enable ultra verbose GCC warnings + --enable-linux24-tcp-md5 + enable support for old, Linux-2.4 RFC2385 patch + --enable-gcc-rdynamic enable linking with -rdynamic for better backtraces + (default if gcc) + --disable-backtrace, disable crash backtraces (default autodetect) + --disable-time-check disable slow thread warning messages + --enable-pcreposix enable using PCRE Posix libs for regex functions + --enable-fpm enable Forwarding Plane Manager support + --enable-werror enable -Werror (recommended for developers only) + --enable-protobuf Enable experimental protobuf support + --enable-dev-build build for development + --disable-largefile omit support for large files + +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-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-pkg-extra-version=VER + add extra version field, for packagers/distributions + --with-pkg-git-version add git information to MOTD and build version string + --with-libpam use libpam for PAM support in vtysh + +Some influential environment variables: + GAWK GNU AWK + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + PROTOBUF_C_CFLAGS + C compiler flags for PROTOBUF_C, overriding pkg-config + PROTOBUF_C_LIBS + linker flags for PROTOBUF_C, overriding pkg-config + CARES_CFLAGS + C compiler flags for CARES, overriding pkg-config + CARES_LIBS linker flags for CARES, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested 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 + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Quagga configure 1.2.3 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 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 +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------ ## +## Report this to https://bugzilla.quagga.net ## +## ------------------------------------------ ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* 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_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +$as_echo_n "checking for $2.$3... " >&6; } +if eval \${$4+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$4 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member + +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Quagga $as_me 1.2.3, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +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` +/usr/bin/hostinfo = `(/usr/bin/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=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&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. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# 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: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > 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 + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + 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. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_list " sys/time.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_func_list " alarm" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; 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,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_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 + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_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. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +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 + + +CONFIG_ARGS="$*" + + + + +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 + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +# Disable portability warnings -- our automake code (in particular +# common.am) uses some constructs specific to gmake. +am__api_version='1.15' + +# 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" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&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/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /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_fn_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 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +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. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$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' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# 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 ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + 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 + 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". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +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 $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='quagga' + VERSION='1.2.3' + + +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"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +ac_config_headers="$ac_config_headers config.h" + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PERL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + *) + 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +$as_echo "$PERL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "gawk", so it can be a program name with args. +set dummy gawk; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_GAWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$GAWK"; then + ac_cv_prog_GAWK="$GAWK" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_GAWK="gawk" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_GAWK" && ac_cv_prog_GAWK="not-in-PATH" +fi +fi +GAWK=$ac_cv_prog_GAWK +if test -n "$GAWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GAWK" >&5 +$as_echo "$GAWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "x$GAWK" = "xnot-in-PATH" ; then + as_fn_error $? "GNU awk is required for lib/memtype.h made by memtypes.awk. +BSD awk complains: awk: gensub doesn't support backreferences (subst \"\1\") " "$LINENO" 5 +fi + + +exampledir=${sysconfdir} +# Check whether --enable-exampledir was given. +if test "${enable_exampledir+set}" = set; then : + enableval=$enable_exampledir; exampledir="$enableval" +fi + + + +pkgsrcrcdir="" +pkgsrcdir="" +# Check whether --enable-pkgsrcrcdir was given. +if test "${enable_pkgsrcrcdir+set}" = set; then : + enableval=$enable_pkgsrcrcdir; pkgsrcrcdir="$enableval"; pkgsrcdir="pkgsrc" +fi + + + + + +# Check whether --with-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 + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_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" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +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 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# 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. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; 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 conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* 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; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +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; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +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 + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +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 + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-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='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&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". + rm -rf conftest.dir + 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 + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + 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 + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # 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. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # 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. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + 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 + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&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. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$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. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +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 + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + 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_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + 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_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + 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 + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext 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 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +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 + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +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 + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +: ${CONFIG_LT=./config.lt} +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5 +$as_echo "$as_me: creating $CONFIG_LT" >&6;} +as_write_fail=0 +cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate a libtool stub with the current configuration. +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_LT" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +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 +IFS=$as_save_IFS + + ;; +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 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# 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 + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## --------------------------------- ## +## Main body of "$CONFIG_LT" script. ## +## --------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_LT" + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $0 [OPTIONS] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +Quagga config.lt 1.2.3 +configured by $0, generated by GNU Autoconf 2.69. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $# +do + case $1 in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) as_fn_error $? "unrecognized option: $1 +Try '$0 --help' for more information." "$LINENO" 5 ;; + + *) as_fn_error $? "unrecognized argument: $1 +Try '$0 --help' for more information." "$LINENO" 5 ;; + esac + shift +done + +if $lt_cl_silent; then + exec 6>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} + + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + +as_fn_exit 0 +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec 5>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec 5>>config.log +$lt_cl_success || as_fn_exit 1 + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$SED"; then + ac_cv_prog_SED="$SED" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_SED="sed" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_SED" && ac_cv_prog_SED="/bin/false" +fi +fi +SED=$ac_cv_prog_SED +if test -n "$SED"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +$as_echo "$SED" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +# Extract the first word of "pdflatex", so it can be a program name with args. +set dummy pdflatex; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PDFLATEX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PDFLATEX"; then + ac_cv_prog_PDFLATEX="$PDFLATEX" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PDFLATEX="pdflatex" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PDFLATEX" && ac_cv_prog_PDFLATEX="/bin/false" +fi +fi +PDFLATEX=$ac_cv_prog_PDFLATEX +if test -n "$PDFLATEX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5 +$as_echo "$PDFLATEX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "latexmk", so it can be a program name with args. +set dummy latexmk; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LATEXMK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LATEXMK"; then + ac_cv_prog_LATEXMK="$LATEXMK" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LATEXMK="latexmk" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_LATEXMK" && ac_cv_prog_LATEXMK="/bin/false" +fi +fi +LATEXMK=$ac_cv_prog_LATEXMK +if test -n "$LATEXMK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEXMK" >&5 +$as_echo "$LATEXMK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "x$PDFLATEX" = "x/bin/false" -o "x$LATEXMK" = "x/bin/false"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Will not be able to make PDF versions of TeX documents" >&5 +$as_echo "$as_me: WARNING: Will not be able to make PDF versions of TeX documents" >&2;} +else + HAVE_LATEX=true +fi + if test "x$HAVE_LATEX" = "xtrue"; then + HAVE_LATEX_TRUE= + HAVE_LATEX_FALSE='#' +else + HAVE_LATEX_TRUE='#' + HAVE_LATEX_FALSE= +fi + +# Extract the first word of "pandoc", so it can be a program name with args. +set dummy pandoc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PANDOC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PANDOC"; then + ac_cv_prog_PANDOC="$PANDOC" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PANDOC="pandoc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PANDOC" && ac_cv_prog_PANDOC="/bin/false" +fi +fi +PANDOC=$ac_cv_prog_PANDOC +if test -n "$PANDOC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PANDOC" >&5 +$as_echo "$PANDOC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "x$PDFLATEX" = "x/bin/false" -o "x$PANDOC" = "x/bin/false"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Will not be able to make PDF versions of MD documents" >&5 +$as_echo "$as_me: WARNING: Will not be able to make PDF versions of MD documents" >&2;} +else + HAVE_PANDOC=true +fi + if test "x$HAVE_PANDOC" = "xtrue"; then + HAVE_PANDOC_TRUE= + HAVE_PANDOC_FALSE='#' +else + HAVE_PANDOC_TRUE='#' + HAVE_PANDOC_FALSE= +fi + + +if test "x${GCC}" != "xyes" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using SunPro compiler" >&5 +$as_echo_n "checking whether we are using SunPro compiler... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +"__SUNPRO_C" __SUNPRO_C +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__SUNPRO_C.*0x5(7|8|9)" >/dev/null 2>&1; then : + COMPILER="SUNPRO" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f conftest* + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which default CFLAGS to set" >&5 +$as_echo_n "checking which default CFLAGS to set... " >&6; } +if test "x${cflags_specified}" = "x" ; then + case ${COMPILER} in + "SUNPRO") + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Sun Studio" >&5 +$as_echo "Sun Studio" >&6; } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -g" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -g" >&5 +$as_echo_n "checking whether $CC supports -g... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -xO4" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -xO4" >&5 +$as_echo_n "checking whether $CC supports -xO4... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -xspace" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -xspace" >&5 +$as_echo_n "checking whether $CC supports -xspace... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -xstrconst" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -xstrconst" >&5 +$as_echo_n "checking whether $CC supports -xstrconst... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -xc99" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -xc99" >&5 +$as_echo_n "checking whether $CC supports -xc99... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -errfmt" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -errfmt" >&5 +$as_echo_n "checking whether $CC supports -errfmt... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -xipo" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -xipo" >&5 +$as_echo_n "checking whether $CC supports -xipo... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: autodetecting" >&5 +$as_echo "autodetecting" >&6; } + + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -diag-error 10006" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -diag-error 10006" >&5 +$as_echo_n "checking whether $CC supports -diag-error 10006... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -g" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -g" >&5 +$as_echo_n "checking whether $CC supports -g... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Os" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Os" >&5 +$as_echo_n "checking whether $CC supports -Os... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -O2" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -O2" >&5 +$as_echo_n "checking whether $CC supports -O2... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + + +fi +rm -f core conftest.err 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 + + } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libtool can support fstack-protector" >&5 +$as_echo_n "checking whether libtool can support fstack-protector... " >&6; } + if test x"$(./libtool --version | awk 'NR == 1 { print $NF }' \ + | awk -F. '{ \ + if ($(NF-2) < 2) print 0; \ + else if ($(NF-2) > 2) print 1; \ + else if ($(NF-1) < 4) print 0; \ + else if ($(NF-1) > 4) print 1; \ + else if ($NF < 6) print 0; \ + else print 1; \ + }')" = "x1" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -fstack-protector-strong" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fstack-protector-strong" >&5 +$as_echo_n "checking whether $CC supports -fstack-protector-strong... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS --param=ssp-buffer-size=4" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports --param=ssp-buffer-size=4" >&5 +$as_echo_n "checking whether $CC supports --param=ssp-buffer-size=4... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: upgrade to libtool >= 2.4.6!" >&5 +$as_echo "$as_me: WARNING: upgrade to libtool >= 2.4.6!" >&2;} + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -D_FORTIFY_SOURCE=2" >&5 +$as_echo_n "checking whether $CC supports -D_FORTIFY_SOURCE=2... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wformat" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wformat" >&5 +$as_echo_n "checking whether $CC supports -Wformat... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wformat-security" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wformat-security" >&5 +$as_echo_n "checking whether $CC supports -Wformat-security... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -fpie" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fpie" >&5 +$as_echo_n "checking whether $CC supports -fpie... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -fno-omit-frame-pointer" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fno-omit-frame-pointer" >&5 +$as_echo_n "checking whether $CC supports -fno-omit-frame-pointer... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wall" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wall" >&5 +$as_echo_n "checking whether $CC supports -Wall... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wextra" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wextra" >&5 +$as_echo_n "checking whether $CC supports -Wextra... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wmissing-prototypes" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wmissing-prototypes" >&5 +$as_echo_n "checking whether $CC supports -Wmissing-prototypes... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wmissing-declarations" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wmissing-declarations" >&5 +$as_echo_n "checking whether $CC supports -Wmissing-declarations... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wpointer-arith" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wpointer-arith" >&5 +$as_echo_n "checking whether $CC supports -Wpointer-arith... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wbad-function-cast" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wbad-function-cast" >&5 +$as_echo_n "checking whether $CC supports -Wbad-function-cast... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wwrite-strings" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wwrite-strings" >&5 +$as_echo_n "checking whether $CC supports -Wwrite-strings... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wcast-qual" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wcast-qual" >&5 +$as_echo_n "checking whether $CC supports -Wcast-qual... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wstrict-prototypes" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wstrict-prototypes" >&5 +$as_echo_n "checking whether $CC supports -Wstrict-prototypes... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wmissing-noreturn" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wmissing-noreturn" >&5 +$as_echo_n "checking whether $CC supports -Wmissing-noreturn... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wmissing-format-attribute" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wmissing-format-attribute" >&5 +$as_echo_n "checking whether $CC supports -Wmissing-format-attribute... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wunreachable-code" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wunreachable-code" >&5 +$as_echo_n "checking whether $CC supports -Wunreachable-code... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wpacked" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wpacked" >&5 +$as_echo_n "checking whether $CC supports -Wpacked... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wpadded" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wpadded" >&5 +$as_echo_n "checking whether $CC supports -Wpadded... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + else + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wno-unused-result" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wno-unused-result" >&5 +$as_echo_n "checking whether $CC supports -Wno-unused-result... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wno-unused-parameter" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wno-unused-parameter" >&5 +$as_echo_n "checking whether $CC supports -Wno-unused-parameter... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -Wno-missing-field-initializers" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wno-missing-field-initializers" >&5 +$as_echo_n "checking whether $CC supports -Wno-missing-field-initializers... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + # ICC emits a broken warning for const char *x = a ? "b" : "c"; + # for some reason the string consts get 'promoted' to char *, + # triggering a const to non-const conversion warning. + { + 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 + + ac_c_flag_save="$CFLAGS" + CFLAGS="$CFLAGS -diag-disable 3179" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -diag-disable 3179" >&5 +$as_echo_n "checking whether $CC supports -diag-disable 3179... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + +else + + CFLAGS="$ac_c_flag_save" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err 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 + + } + ;; + esac +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: CFLAGS supplied by user" >&5 +$as_echo "CFLAGS supplied by user" >&6; } +fi + +if test x"${enable_werror}" = x"yes" ; then + WERROR="-Werror" +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${MAKE-make} is GNU make" >&5 +$as_echo_n "checking if ${MAKE-make} is GNU make... " >&6; } +if ${quagga_cv_gnu_make+:} false; then : + $as_echo_n "(cached) " >&6 +else + quagga_cv_gnu_make=no + if ${MAKE-make} --version 2>/dev/null | \ + grep '^GNU Make ' >/dev/null ; then + quagga_cv_gnu_make=yes; + fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $quagga_cv_gnu_make" >&5 +$as_echo "$quagga_cv_gnu_make" >&6; } + + + + + +# Check whether --with-pkg-extra-version was given. +if test "${with_pkg_extra_version+set}" = set; then : + withval=$with_pkg_extra_version; EXTRAVERSION=$withval +fi + + +# Check whether --with-pkg-git-version was given. +if test "${with_pkg_git_version+set}" = set; then : + withval=$with_pkg_git_version; test "x$withval" != "xno" && with_pkg_git_version="yes" +fi + +# Check whether --enable-vtysh was given. +if test "${enable_vtysh+set}" = set; then : + enableval=$enable_vtysh; +fi + +# Check whether --enable-doc was given. +if test "${enable_doc+set}" = set; then : + enableval=$enable_doc; +fi + +# Check whether --enable-zebra was given. +if test "${enable_zebra+set}" = set; then : + enableval=$enable_zebra; +fi + +# Check whether --enable-bgpd was given. +if test "${enable_bgpd+set}" = set; then : + enableval=$enable_bgpd; +fi + +# Check whether --enable-ripd was given. +if test "${enable_ripd+set}" = set; then : + enableval=$enable_ripd; +fi + +# Check whether --enable-ripngd was given. +if test "${enable_ripngd+set}" = set; then : + enableval=$enable_ripngd; +fi + +# Check whether --enable-ospfd was given. +if test "${enable_ospfd+set}" = set; then : + enableval=$enable_ospfd; +fi + +# Check whether --enable-ospf6d was given. +if test "${enable_ospf6d+set}" = set; then : + enableval=$enable_ospf6d; +fi + +# Check whether --enable-nhrpd was given. +if test "${enable_nhrpd+set}" = set; then : + enableval=$enable_nhrpd; +fi + +# Check whether --enable-watchquagga was given. +if test "${enable_watchquagga+set}" = set; then : + enableval=$enable_watchquagga; +fi + +# Check whether --enable-isisd was given. +if test "${enable_isisd+set}" = set; then : + enableval=$enable_isisd; +fi + +# Check whether --enable-pimd was given. +if test "${enable_pimd+set}" = set; then : + enableval=$enable_pimd; +fi + +# Check whether --enable-bgp-announce was given. +if test "${enable_bgp_announce+set}" = set; then : + enableval=$enable_bgp_announce; +fi + +# Check whether --enable-snmp was given. +if test "${enable_snmp+set}" = set; then : + enableval=$enable_snmp; +fi + + +# Check whether --with-libpam was given. +if test "${with_libpam+set}" = set; then : + withval=$with_libpam; +fi + +# Check whether --enable-tcp-zebra was given. +if test "${enable_tcp_zebra+set}" = set; then : + enableval=$enable_tcp_zebra; +fi + +# Check whether --enable-ospfapi was given. +if test "${enable_ospfapi+set}" = set; then : + enableval=$enable_ospfapi; +fi + +# Check whether --enable-ospfclient was given. +if test "${enable_ospfclient+set}" = set; then : + enableval=$enable_ospfclient; +fi + +# Check whether --enable-multipath was given. +if test "${enable_multipath+set}" = set; then : + enableval=$enable_multipath; +fi + +# Check whether --enable-user was given. +if test "${enable_user+set}" = set; then : + enableval=$enable_user; +fi + +# Check whether --enable-group was given. +if test "${enable_group+set}" = set; then : + enableval=$enable_group; +fi + +# Check whether --enable-vty_group was given. +if test "${enable_vty_group+set}" = set; then : + enableval=$enable_vty_group; +fi + +# Check whether --enable-configfile_mask was given. +if test "${enable_configfile_mask+set}" = set; then : + enableval=$enable_configfile_mask; +fi + +# Check whether --enable-logfile_mask was given. +if test "${enable_logfile_mask+set}" = set; then : + enableval=$enable_logfile_mask; +fi + + +# Check whether --enable-rtadv was given. +if test "${enable_rtadv+set}" = set; then : + enableval=$enable_rtadv; +fi + +# Check whether --enable-irdp was given. +if test "${enable_irdp+set}" = set; then : + enableval=$enable_irdp; +fi + +# Check whether --enable-isis_topology was given. +if test "${enable_isis_topology+set}" = set; then : + enableval=$enable_isis_topology; +fi + +# Check whether --enable-capabilities was given. +if test "${enable_capabilities+set}" = set; then : + enableval=$enable_capabilities; +fi + +# Check whether --enable-rusage was given. +if test "${enable_rusage+set}" = set; then : + enableval=$enable_rusage; +fi + +# Check whether --enable-gcc_ultra_verbose was given. +if test "${enable_gcc_ultra_verbose+set}" = set; then : + enableval=$enable_gcc_ultra_verbose; +fi + +# Check whether --enable-linux24_tcp_md5 was given. +if test "${enable_linux24_tcp_md5+set}" = set; then : + enableval=$enable_linux24_tcp_md5; +fi + +# Check whether --enable-gcc-rdynamic was given. +if test "${enable_gcc_rdynamic+set}" = set; then : + enableval=$enable_gcc_rdynamic; +fi + +# Check whether --enable-backtrace was given. +if test "${enable_backtrace+set}" = set; then : + enableval=$enable_backtrace; +fi + +# Check whether --enable-time-check was given. +if test "${enable_time_check+set}" = set; then : + enableval=$enable_time_check; +fi + +# Check whether --enable-pcreposix was given. +if test "${enable_pcreposix+set}" = set; then : + enableval=$enable_pcreposix; +fi + +# Check whether --enable-fpm was given. +if test "${enable_fpm+set}" = set; then : + enableval=$enable_fpm; +fi + +# Check whether --enable-werror was given. +if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; +fi + +# Check whether --enable-protobuf was given. +if test "${enable_protobuf+set}" = set; then : + enableval=$enable_protobuf; +fi + + +# Check whether --enable-dev_build was given. +if test "${enable_dev_build+set}" = set; then : + enableval=$enable_dev_build; +fi + + +if test x"${enable_gcc_rdynamic}" != x"no" ; then + if test x"${enable_gcc_rdynamic}" = x"yes" -o x"$COMPILER" = x"GCC"; then + LDFLAGS="${LDFLAGS} -rdynamic" + fi +fi + +if test x"${enable_time_check}" != x"no" ; then + if test x"${enable_time_check}" = x"yes" -o x"${enable_time_check}" = x ; then + +$as_echo "#define CONSUMED_TIME_CHECK 5000000" >>confdefs.h + + else + +cat >>confdefs.h <<_ACEOF +#define CONSUMED_TIME_CHECK $enable_time_check +_ACEOF + + fi +fi + +if test "${enable_fpm}" = "yes"; then + +$as_echo "#define HAVE_FPM /**/" >>confdefs.h + +fi + +if test "x${enable_dev_build}" = "xyes"; then + +$as_echo "#define DEV_BUILD /**/" >>confdefs.h + +fi + if test "x$enable_dev_build" = "xyes"; then + DEV_BUILD_TRUE= + DEV_BUILD_FALSE='#' +else + DEV_BUILD_TRUE='#' + DEV_BUILD_FALSE= +fi + + +# +# Logic for protobuf support. +# +if test "$enable_protobuf" = "yes"; then + have_protobuf=yes + + # Check for protoc-c + # Extract the first word of "protoc-c", so it can be a program name with args. +set dummy protoc-c; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PROTOC_C+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PROTOC_C"; then + ac_cv_prog_PROTOC_C="$PROTOC_C" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PROTOC_C="protoc-c" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PROTOC_C" && ac_cv_prog_PROTOC_C="/bin/false" +fi +fi +PROTOC_C=$ac_cv_prog_PROTOC_C +if test -n "$PROTOC_C"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROTOC_C" >&5 +$as_echo "$PROTOC_C" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$PROTOC_C" = "x/bin/false"; then + have_protobuf=no + else + found_protobuf_c=no + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PROTOBUF_C" >&5 +$as_echo_n "checking for PROTOBUF_C... " >&6; } + +if test -n "$PROTOBUF_C_CFLAGS"; then + pkg_cv_PROTOBUF_C_CFLAGS="$PROTOBUF_C_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libprotobuf-c >= 0.14\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libprotobuf-c >= 0.14") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PROTOBUF_C_CFLAGS=`$PKG_CONFIG --cflags "libprotobuf-c >= 0.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PROTOBUF_C_LIBS"; then + pkg_cv_PROTOBUF_C_LIBS="$PROTOBUF_C_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libprotobuf-c >= 0.14\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libprotobuf-c >= 0.14") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PROTOBUF_C_LIBS=`$PKG_CONFIG --libs "libprotobuf-c >= 0.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PROTOBUF_C_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libprotobuf-c >= 0.14" 2>&1` + else + PROTOBUF_C_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libprotobuf-c >= 0.14" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PROTOBUF_C_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: pkg-config did not find libprotobuf-c" >&5 +$as_echo "pkg-config did not find libprotobuf-c" >&6; } +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: pkg-config did not find libprotobuf-c" >&5 +$as_echo "pkg-config did not find libprotobuf-c" >&6; } +else + PROTOBUF_C_CFLAGS=$pkg_cv_PROTOBUF_C_CFLAGS + PROTOBUF_C_LIBS=$pkg_cv_PROTOBUF_C_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + found_protobuf_c=yes +fi + + if test "x$found_protobuf_c" = "xyes"; then + LDFLAGS="$LDFLAGS $PROTOBUF_C_LIBS" + CFLAGS="$CFLAGS $PROTOBUF_C_CFLAGS" + else + ac_fn_c_check_header_mongrel "$LINENO" "google/protobuf-c/protobuf-c.h" "ac_cv_header_google_protobuf_c_protobuf_c_h" "$ac_includes_default" +if test "x$ac_cv_header_google_protobuf_c_protobuf_c_h" = xyes; then : + +else + have_protobuf=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: Couldn't find google/protobuf-c.h" >&5 +$as_echo "Couldn't find google/protobuf-c.h" >&6; } +fi + + + fi + fi +fi + +# Fail if the user explicity enabled protobuf support and we couldn't +# find the compiler or libraries. +if test "x$have_protobuf" = "xno" && test "x$enable_protobuf" = "xyes"; then + as_fn_error $? "Protobuf enabled explicitly but can't find libraries/tools" "$LINENO" 5 +fi + +if test "x$have_protobuf" = "xyes"; then + +$as_echo "#define HAVE_PROTOBUF /**/" >>confdefs.h + +fi + + if test "x$have_protobuf" = "xyes"; then + HAVE_PROTOBUF_TRUE= + HAVE_PROTOBUF_FALSE='#' +else + HAVE_PROTOBUF_TRUE='#' + HAVE_PROTOBUF_FALSE= +fi + + +# +# End of logic for protobuf support. +# + +if test "${enable_tcp_zebra}" = "yes"; then + +$as_echo "#define HAVE_TCP_ZEBRA /**/" >>confdefs.h + +fi + +if test "${enable_linux24_tcp_md5}" = "yes"; then + +$as_echo "#define HAVE_TCP_MD5_LINUX24 /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if zebra should be configurable to send Route Advertisements" >&5 +$as_echo_n "checking if zebra should be configurable to send Route Advertisements... " >&6; } +if test "${enable_rtadv}" != "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_RTADV /**/" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +if test "${enable_irdp}" = "yes"; then + +$as_echo "#define HAVE_IRDP /**/" >>confdefs.h + +fi + +if test "${enable_isisd}" != "no" && test "${enable_isis_topology}" = yes; then + +$as_echo "#define TOPOLOGY_GENERATE /**/" >>confdefs.h + + ISIS_TOPOLOGY_INCLUDES="-I\$(srcdir)/topology" + ISIS_TOPOLOGY_DIR="topology" + ISIS_TOPOLOGY_LIB="./topology/libtopology.a" +fi + + + + + +if test x"${enable_user}" = x"no"; then + enable_user="" +else + if test x"${enable_user}" = x"yes" || test x"${enable_user}" = x""; then + enable_user="quagga" + fi + +cat >>confdefs.h <<_ACEOF +#define QUAGGA_USER "${enable_user}" +_ACEOF + +fi + +if test x"${enable_group}" = x"no"; then + enable_group="" +else + if test x"${enable_group}" = x"yes" || test x"${enable_group}" = x""; then + enable_group="quagga" + fi + +cat >>confdefs.h <<_ACEOF +#define QUAGGA_GROUP "${enable_group}" +_ACEOF + +fi + +if test x"${enable_vty_group}" = x"yes" ; then + as_fn_error $? "--enable-vty-group requires a group as argument, not yes" "$LINENO" 5 +elif test x"${enable_vty_group}" != x""; then + if test x"${enable_vty_group}" != x"no"; then + +cat >>confdefs.h <<_ACEOF +#define VTY_GROUP "${enable_vty_group}" +_ACEOF + + fi +fi + + + + +enable_configfile_mask=${enable_configfile_mask:-0600} + +cat >>confdefs.h <<_ACEOF +#define CONFIGFILE_MASK ${enable_configfile_mask} +_ACEOF + + +enable_logfile_mask=${enable_logfile_mask:-0600} + +cat >>confdefs.h <<_ACEOF +#define LOGFILE_MASK ${enable_logfile_mask} +_ACEOF + + +MPATH_NUM=1 + +case "${enable_multipath}" in + 0) + MPATH_NUM=64 + ;; + [1-9]|[1-9][0-9]|[1-9][0-9][0-9]) + MPATH_NUM="${enable_multipath}" + ;; + "") + ;; + *) + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Please specify digit to enable multipath ARG +See \`config.log' for more details" "$LINENO" 5; } + ;; +esac + + +cat >>confdefs.h <<_ACEOF +#define MULTIPATH_NUM $MPATH_NUM +_ACEOF + + +if test "x${EXTRAVERSION}" != "x" ; then + VERSION="${VERSION}${EXTRAVERSION}" + PACKAGE_VERSION="${PACKAGE_VERSION}${EXTRAVERSION}" + PACKAGE_STRING="${PACKAGE_STRING}${EXTRAVERSION}" +fi + +if test "x$with_pkg_git_version" = "xyes"; then + if test -d "${srcdir}/.git"; then + +$as_echo "#define GIT_VERSION 1" >>confdefs.h + + else with_pkg_git_version="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-pkg-git-version given, but this is not a git checkout" >&5 +$as_echo "$as_me: WARNING: --with-pkg-git-version given, but this is not a git checkout" >&2;} + fi +fi + if test "x$with_pkg_git_version" = "xyes"; then + GIT_VERSION_TRUE= + GIT_VERSION_FALSE='#' +else + GIT_VERSION_TRUE='#' + GIT_VERSION_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* 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"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 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 sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 +$as_echo_n "checking for C/C++ restrict keyword... " >&6; } +if ${ac_cv_c_restrict+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_restrict=no + # The order here caters to the fact that C++ does not require restrict. + for ac_kw in __restrict __restrict__ _Restrict restrict; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +typedef int * int_ptr; + int foo (int_ptr $ac_kw ip) { + return ip[0]; + } +int +main () +{ +int s[1]; + int * $ac_kw t = s; + t[0] = 0; + return foo(t) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_restrict=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_restrict" != no && break + done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 +$as_echo "$ac_cv_c_restrict" >&6; } + + case $ac_cv_c_restrict in + restrict) ;; + no) $as_echo "#define restrict /**/" >>confdefs.h + ;; + *) cat >>confdefs.h <<_ACEOF +#define restrict $ac_cv_c_restrict +_ACEOF + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +$as_echo_n "checking for working volatile... " >&6; } +if ${ac_cv_c_volatile+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +volatile int x; +int * volatile y = (int *) 0; +return !x && !y; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_volatile=yes +else + ac_cv_c_volatile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +$as_echo "$ac_cv_c_volatile" >&6; } +if test $ac_cv_c_volatile = no; then + +$as_echo "#define volatile /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 +$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } +if ${ac_cv_header_sys_wait_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) +#endif +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +int +main () +{ + int s; + wait (&s); + s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_sys_wait_h=yes +else + ac_cv_header_sys_wait_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 +$as_echo "$ac_cv_header_sys_wait_h" >&6; } +if test $ac_cv_header_sys_wait_h = yes; then + +$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } +if ${ac_cv_header_stdbool_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #if false + "error: false is not 0" + #endif + #ifndef true + "error: true is not defined" + #endif + #if true != 1 + "error: true is not 1" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdbool_h=yes +else + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +$as_echo "$ac_cv_header_stdbool_h" >&6; } + ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE__BOOL 1 +_ACEOF + + +fi + + +if test $ac_cv_header_stdbool_h = yes; then + +$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } +if ${ac_cv_type_uid_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then : + ac_cv_type_uid_t=yes +else + ac_cv_type_uid_t=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +$as_echo "#define uid_t int" >>confdefs.h + + +$as_echo "#define gid_t int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +if test "x$ac_cv_type_mode_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if ${ac_cv_struct_tm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h +else + ac_cv_struct_tm=sys/time.h +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + + +for ac_header in stropts.h sys/ksym.h sys/times.h sys/select.h \ + sys/types.h linux/version.h netdb.h asm/types.h \ + sys/cdefs.h sys/param.h limits.h signal.h \ + sys/socket.h netinet/in.h time.h sys/time.h features.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in net/if.h +do : + ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +" +if test "x$ac_cv_header_net_if_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_IF_H 1 +_ACEOF + +fi + +done + + + + +for ac_header in net/if_var.h +do : + ac_fn_c_check_header_compile "$LINENO" "net/if_var.h" "ac_cv_header_net_if_var_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +" +if test "x$ac_cv_header_net_if_var_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_IF_VAR_H 1 +_ACEOF + +fi + +done + + + +for ac_header in sys/un.h netinet/in_systm.h netinet/in_var.h \ + net/if_dl.h net/netopt.h net/route.h \ + inet/nd.h arpa/inet.h netinet/ip_icmp.h \ + fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \ + sys/sysctl.h sys/sockio.h kvm.h sys/conf.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in ucontext.h +do : + ac_fn_c_check_header_compile "$LINENO" "ucontext.h" "ac_cv_header_ucontext_h" "#ifndef __USE_GNU +#define __USE_GNU +#endif /* __USE_GNU */ +#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + + +" +if test "x$ac_cv_header_ucontext_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UCONTEXT_H 1 +_ACEOF + +fi + +done + + + +ac_fn_c_check_member "$LINENO" "ucontext_t" "uc_mcontext.uc_regs" "ac_cv_member_ucontext_t_uc_mcontext_uc_regs" "#include +" +if test "x$ac_cv_member_ucontext_t_uc_mcontext_uc_regs" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UCONTEXT_T_UC_MCONTEXT_UC_REGS 1 +_ACEOF + + +fi + +ac_fn_c_check_member "$LINENO" "ucontext_t" "uc_mcontext.regs" "ac_cv_member_ucontext_t_uc_mcontext_regs" "#include +" +if test "x$ac_cv_member_ucontext_t_uc_mcontext_regs" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UCONTEXT_T_UC_MCONTEXT_REGS 1 +_ACEOF + +ac_fn_c_check_member "$LINENO" "ucontext_t" "uc_mcontext.regs.nip" "ac_cv_member_ucontext_t_uc_mcontext_regs_nip" "#include +" +if test "x$ac_cv_member_ucontext_t_uc_mcontext_regs_nip" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UCONTEXT_T_UC_MCONTEXT_REGS_NIP 1 +_ACEOF + + +fi + +fi + +ac_fn_c_check_member "$LINENO" "ucontext_t" "uc_mcontext.gregs" "ac_cv_member_ucontext_t_uc_mcontext_gregs" "#include +" +if test "x$ac_cv_member_ucontext_t_uc_mcontext_gregs" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_UCONTEXT_T_UC_MCONTEXT_GREGS 1 +_ACEOF + + +fi + + + + +case "$host" in + *-sunos5.[6-7]* | *-solaris2.[6-7]*) + opsys=sol2-6 + +$as_echo "#define SUNOS_56 1" >>confdefs.h + + +$as_echo "#define SUNOS_5 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lxnet" >&5 +$as_echo_n "checking for main in -lxnet... " >&6; } +if ${ac_cv_lib_xnet_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lxnet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_xnet_main=yes +else + ac_cv_lib_xnet_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xnet_main" >&5 +$as_echo "$ac_cv_lib_xnet_main" >&6; } +if test "x$ac_cv_lib_xnet_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBXNET 1 +_ACEOF + + LIBS="-lxnet $LIBS" + +fi + + CURSES=-lcurses + SOLARIS="solaris" + ;; + *-sunos5.[8-9] \ + | *-sunos5.1[0-9] \ + | *-sunos5.1[0-9].[0-9] \ + | *-solaris2.[8-9] \ + | *-solaris2.1[0-9] \ + | *-solaris2.1[0-9].[0-9]) + opsys=sol8 + +$as_echo "#define SUNOS_59 1" >>confdefs.h + + +$as_echo "#define SUNOS_5 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lsocket" >&5 +$as_echo_n "checking for main in -lsocket... " >&6; } +if ${ac_cv_lib_socket_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_main=yes +else + ac_cv_lib_socket_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_main" >&5 +$as_echo "$ac_cv_lib_socket_main" >&6; } +if test "x$ac_cv_lib_socket_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lnsl" >&5 +$as_echo_n "checking for main in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_main=yes +else + ac_cv_lib_nsl_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_main" >&5 +$as_echo "$ac_cv_lib_nsl_main" >&6; } +if test "x$ac_cv_lib_nsl_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lumem" >&5 +$as_echo_n "checking for main in -lumem... " >&6; } +if ${ac_cv_lib_umem_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lumem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_umem_main=yes +else + ac_cv_lib_umem_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_umem_main" >&5 +$as_echo "$ac_cv_lib_umem_main" >&6; } +if test "x$ac_cv_lib_umem_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBUMEM 1 +_ACEOF + + LIBS="-lumem $LIBS" + +fi + + for ac_func in printstack +do : + ac_fn_c_check_func "$LINENO" "printstack" "ac_cv_func_printstack" +if test "x$ac_cv_func_printstack" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PRINTSTACK 1 +_ACEOF + +$as_echo "#define HAVE_PRINTSTACK 1" >>confdefs.h + + +$as_echo "#define HAVE_STACK_TRACE 1" >>confdefs.h + + +fi +done + + CURSES=-lcurses + SOLARIS="solaris" + ;; + *-sunos5* | *-solaris2*) + +$as_echo "#define SUNOS_5 /**/" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lsocket" >&5 +$as_echo_n "checking for main in -lsocket... " >&6; } +if ${ac_cv_lib_socket_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_main=yes +else + ac_cv_lib_socket_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_main" >&5 +$as_echo "$ac_cv_lib_socket_main" >&6; } +if test "x$ac_cv_lib_socket_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lnsl" >&5 +$as_echo_n "checking for main in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_main=yes +else + ac_cv_lib_nsl_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_main" >&5 +$as_echo "$ac_cv_lib_nsl_main" >&6; } +if test "x$ac_cv_lib_nsl_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + + CURSES=-lcurses + SOLARIS="solaris" + ;; + *-linux*) + opsys=gnu-linux + +$as_echo "#define GNU_LINUX /**/" >>confdefs.h + + ;; + *-openbsd*) + opsys=openbsd + +$as_echo "#define OPEN_BSD /**/" >>confdefs.h + + ;; +esac + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi + + +fi + + +case "${enable_vtysh}" in + "no") VTYSH="";; + *) VTYSH="vtysh"; + +$as_echo "#define VTYSH /**/" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tputs in -ltermcap" >&5 +$as_echo_n "checking for tputs in -ltermcap... " >&6; } +if ${ac_cv_lib_termcap_tputs+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tputs (); +int +main () +{ +return tputs (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_termcap_tputs=yes +else + ac_cv_lib_termcap_tputs=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tputs" >&5 +$as_echo "$ac_cv_lib_termcap_tputs" >&6; } +if test "x$ac_cv_lib_termcap_tputs" = xyes; then : + LIBREADLINE="$LIBREADLINE -ltermcap" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tputs in -ltinfo" >&5 +$as_echo_n "checking for tputs in -ltinfo... " >&6; } +if ${ac_cv_lib_tinfo_tputs+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltinfo $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tputs (); +int +main () +{ +return tputs (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_tinfo_tputs=yes +else + ac_cv_lib_tinfo_tputs=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tputs" >&5 +$as_echo "$ac_cv_lib_tinfo_tputs" >&6; } +if test "x$ac_cv_lib_tinfo_tputs" = xyes; then : + LIBREADLINE="$LIBREADLINE -ltinfo" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tputs in -lcurses" >&5 +$as_echo_n "checking for tputs in -lcurses... " >&6; } +if ${ac_cv_lib_curses_tputs+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tputs (); +int +main () +{ +return tputs (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_curses_tputs=yes +else + ac_cv_lib_curses_tputs=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tputs" >&5 +$as_echo "$ac_cv_lib_curses_tputs" >&6; } +if test "x$ac_cv_lib_curses_tputs" = xyes; then : + LIBREADLINE="$LIBREADLINE -lcurses" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tputs in -lncurses" >&5 +$as_echo_n "checking for tputs in -lncurses... " >&6; } +if ${ac_cv_lib_ncurses_tputs+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tputs (); +int +main () +{ +return tputs (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ncurses_tputs=yes +else + ac_cv_lib_ncurses_tputs=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tputs" >&5 +$as_echo "$ac_cv_lib_ncurses_tputs" >&6; } +if test "x$ac_cv_lib_ncurses_tputs" = xyes; then : + LIBREADLINE="$LIBREADLINE -lncurses" +fi + + +fi + + +fi + + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lreadline" >&5 +$as_echo_n "checking for main in -lreadline... " >&6; } +if ${ac_cv_lib_readline_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lreadline "$LIBREADLINE" $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_readline_main=yes +else + ac_cv_lib_readline_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_main" >&5 +$as_echo "$ac_cv_lib_readline_main" >&6; } +if test "x$ac_cv_lib_readline_main" = xyes; then : + LIBREADLINE="-lreadline $LIBREADLINE" +fi + + if test $ac_cv_lib_readline_main = no; then + as_fn_error $? "vtysh needs libreadline but was not found and usable on your system." "$LINENO" 5 + fi + ac_fn_c_check_header_mongrel "$LINENO" "readline/history.h" "ac_cv_header_readline_history_h" "$ac_includes_default" +if test "x$ac_cv_header_readline_history_h" = xyes; then : + +fi + + + if test $ac_cv_header_readline_history_h = no;then + as_fn_error $? "readline is too old to have readline/history.h, please update to the latest readline library." "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5 +$as_echo_n "checking for rl_completion_matches in -lreadline... " >&6; } +if ${ac_cv_lib_readline_rl_completion_matches+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lreadline "$LIBREADLINE" $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char rl_completion_matches (); +int +main () +{ +return rl_completion_matches (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_readline_rl_completion_matches=yes +else + ac_cv_lib_readline_rl_completion_matches=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 +$as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } +if test "x$ac_cv_lib_readline_rl_completion_matches" = xyes; then : + LIBREADLINE="$LIBREADLINE" +fi + + if test $ac_cv_lib_readline_rl_completion_matches = no; then + +$as_echo "#define rl_completion_matches completion_matches" >>confdefs.h + + fi + ;; + "no" ) VTYSH="";; +esac + + if test "x$VTYSH" = "xvtysh"; then + VTYSH_TRUE= + VTYSH_FALSE='#' +else + VTYSH_TRUE='#' + VTYSH_FALSE= +fi + + +if test "$with_libpam" = "yes"; then + ac_fn_c_check_header_compile "$LINENO" "security/pam_misc.h" "ac_cv_header_security_pam_misc_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +" +if test "x$ac_cv_header_security_pam_misc_h" = xyes; then : + +$as_echo "#define HAVE_PAM_MISC_H /**/" >>confdefs.h + + +$as_echo "#define PAM_CONV_FUNC misc_conv" >>confdefs.h + + pam_conv_func="misc_conv" + +fi + + + ac_fn_c_check_header_compile "$LINENO" "security/openpam.h" "ac_cv_header_security_openpam_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif +#include +" +if test "x$ac_cv_header_security_openpam_h" = xyes; then : + +$as_echo "#define HAVE_OPENPAM_H /**/" >>confdefs.h + + +$as_echo "#define PAM_CONV_FUNC openpam_ttyconv" >>confdefs.h + + pam_conv_func="openpam_ttyconv" + +fi + + + if test -z "$ac_cv_header_security_pam_misc_h$ac_cv_header_security_openpam_h" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** pam support will not be built ***" >&5 +$as_echo "$as_me: WARNING: *** pam support will not be built ***" >&2;} + with_libpam="no" + fi +fi + +if test "$with_libpam" = "yes"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5 +$as_echo_n "checking for pam_start in -lpam... " >&6; } +if ${ac_cv_lib_pam_pam_start+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpam $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pam_start (); +int +main () +{ +return pam_start (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pam_pam_start=yes +else + ac_cv_lib_pam_pam_start=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_start" >&5 +$as_echo "$ac_cv_lib_pam_pam_start" >&6; } +if test "x$ac_cv_lib_pam_pam_start" = xyes; then : + as_ac_Lib=`$as_echo "ac_cv_lib_pam_$pam_conv_func" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $pam_conv_func in -lpam" >&5 +$as_echo_n "checking for $pam_conv_func in -lpam... " >&6; } +if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpam $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $pam_conv_func (); +int +main () +{ +return $pam_conv_func (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$as_ac_Lib=yes" +else + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + +$as_echo "#define USE_PAM /**/" >>confdefs.h + + LIBPAM="-lpam" +else + +$as_echo "#define USE_PAM /**/" >>confdefs.h + + LIBPAM="-lpam -lpam_misc" + +fi + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_end in -lpam" >&5 +$as_echo_n "checking for pam_end in -lpam... " >&6; } +if ${ac_cv_lib_pam_pam_end+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpam -ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pam_end (); +int +main () +{ +return pam_end (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pam_pam_end=yes +else + ac_cv_lib_pam_pam_end=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_end" >&5 +$as_echo "$ac_cv_lib_pam_pam_end" >&6; } +if test "x$ac_cv_lib_pam_pam_end" = xyes; then : + as_ac_Lib=`$as_echo "ac_cv_lib_pam_$pam_conv_func" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $pam_conv_func in -lpam" >&5 +$as_echo_n "checking for $pam_conv_func in -lpam... " >&6; } +if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpam $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $pam_conv_func (); +int +main () +{ +return $pam_conv_func (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$as_ac_Lib=yes" +else + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + +$as_echo "#define USE_PAM /**/" >>confdefs.h + + LIBPAM="-lpam -ldl" +else + +$as_echo "#define USE_PAM /**/" >>confdefs.h + + LIBPAM="-lpam -ldl -lpam_misc" + +fi + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** pam support will not be built ***" >&5 +$as_echo "$as_me: WARNING: *** pam support will not be built ***" >&2;} +fi + + + +fi + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep 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 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + + +for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 +_ACEOF + +fi + +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 +$as_echo_n "checking for working chown... " >&6; } +if ${ac_cv_func_chown_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_chown_works=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +#include + +int +main () +{ + char *f = "conftest.chown"; + struct stat before, after; + + if (creat (f, 0600) < 0) + return 1; + if (stat (f, &before) < 0) + return 1; + if (chown (f, (uid_t) -1, (gid_t) -1) == -1) + return 1; + if (stat (f, &after) < 0) + return 1; + return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_chown_works=yes +else + ac_cv_func_chown_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +rm -f conftest.chown + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 +$as_echo "$ac_cv_func_chown_works" >&6; } +if test $ac_cv_func_chown_works = yes; then + +$as_echo "#define HAVE_CHOWN 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working POSIX fnmatch" >&5 +$as_echo_n "checking for working POSIX fnmatch... " >&6; } +if ${ac_cv_func_fnmatch_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Some versions of Solaris, SCO, and the GNU C Library + # have a broken or incompatible fnmatch. + # So we run a test program. If we are cross-compiling, take no chance. + # Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. + if test "$cross_compiling" = yes; then : + ac_cv_func_fnmatch_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +# define y(a, b, c) (fnmatch (a, b, c) == 0) +# define n(a, b, c) (fnmatch (a, b, c) == FNM_NOMATCH) + +int +main () +{ +return + (!(y ("a*", "abc", 0) + && n ("d*/*1", "d/s/1", FNM_PATHNAME) + && y ("a\\\\bc", "abc", 0) + && n ("a\\\\bc", "abc", FNM_NOESCAPE) + && y ("*x", ".x", 0) + && n ("*x", ".x", FNM_PERIOD) + && 1)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_fnmatch_works=yes +else + ac_cv_func_fnmatch_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fnmatch_works" >&5 +$as_echo "$ac_cv_func_fnmatch_works" >&6; } +if test $ac_cv_func_fnmatch_works = yes; then : + +$as_echo "#define HAVE_FNMATCH 1" >>confdefs.h + +fi + + +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +for ac_header in vfork.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" +if test "x$ac_cv_header_vfork_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VFORK_H 1 +_ACEOF + +fi + +done + +for ac_func in fork vfork +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_fork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +$as_echo_n "checking for working fork... " >&6; } +if ${ac_cv_func_fork_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_fork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* By Ruediger Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_fork_works=yes +else + ac_cv_func_fork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +$as_echo "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +$as_echo_n "checking for working vfork... " >&6; } +if ${ac_cv_func_vfork_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_vfork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#ifdef HAVE_VFORK_H +# include +#endif +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +#ifdef __cplusplus +sparc_address_test (int arg) +# else +sparc_address_test (arg) int arg; +#endif +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main () +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_vfork_works=yes +else + ac_cv_func_vfork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +$as_echo "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +$as_echo "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +$as_echo_n "checking for working memcmp... " >&6; } +if ${ac_cv_func_memcmp_working+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_memcmp_working=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + return 1; + + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + return 1; + } + return 0; + } + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_memcmp_working=yes +else + ac_cv_func_memcmp_working=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } +test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in + *" memcmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" + ;; +esac + + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + for ac_func in $ac_func_list +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 +$as_echo_n "checking for working mktime... " >&6; } +if ${ac_cv_func_working_mktime+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_working_mktime=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Test program from Paul Eggert and Tony Leneis. */ +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifndef HAVE_ALARM +# define alarm(X) /* empty */ +#endif + +/* Work around redefinition to rpl_putenv by other config tests. */ +#undef putenv + +static time_t time_t_max; +static time_t time_t_min; + +/* Values we'll use to set the TZ environment variable. */ +static const char *tz_strings[] = { + (const char *) 0, "TZ=GMT0", "TZ=JST-9", + "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" +}; +#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) + +/* Return 0 if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static int +spring_forward_gap () +{ + /* glibc (up to about 1998-10-07) failed this test. */ + struct tm tm; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); + + tm.tm_year = 98; + tm.tm_mon = 3; + tm.tm_mday = 5; + tm.tm_hour = 2; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + return mktime (&tm) != (time_t) -1; +} + +static int +mktime_test1 (time_t now) +{ + struct tm *lt; + return ! (lt = localtime (&now)) || mktime (lt) == now; +} + +static int +mktime_test (time_t now) +{ + return (mktime_test1 (now) + && mktime_test1 ((time_t) (time_t_max - now)) + && mktime_test1 ((time_t) (time_t_min + now))); +} + +static int +irix_6_4_bug () +{ + /* Based on code from Ariel Faigon. */ + struct tm tm; + tm.tm_year = 96; + tm.tm_mon = 3; + tm.tm_mday = 0; + tm.tm_hour = 0; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + mktime (&tm); + return tm.tm_mon == 2 && tm.tm_mday == 31; +} + +static int +bigtime_test (int j) +{ + struct tm tm; + time_t now; + tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; + now = mktime (&tm); + if (now != (time_t) -1) + { + struct tm *lt = localtime (&now); + if (! (lt + && lt->tm_year == tm.tm_year + && lt->tm_mon == tm.tm_mon + && lt->tm_mday == tm.tm_mday + && lt->tm_hour == tm.tm_hour + && lt->tm_min == tm.tm_min + && lt->tm_sec == tm.tm_sec + && lt->tm_yday == tm.tm_yday + && lt->tm_wday == tm.tm_wday + && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) + == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) + return 0; + } + return 1; +} + +static int +year_2050_test () +{ + /* The correct answer for 2050-02-01 00:00:00 in Pacific time, + ignoring leap seconds. */ + unsigned long int answer = 2527315200UL; + + struct tm tm; + time_t t; + tm.tm_year = 2050 - 1900; + tm.tm_mon = 2 - 1; + tm.tm_mday = 1; + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + tm.tm_isdst = -1; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); + + t = mktime (&tm); + + /* Check that the result is either a failure, or close enough + to the correct answer that we can assume the discrepancy is + due to leap seconds. */ + return (t == (time_t) -1 + || (0 < t && answer - 120 <= t && t <= answer + 120)); +} + +int +main () +{ + time_t t, delta; + int i, j; + + /* This test makes some buggy mktime implementations loop. + Give up after 60 seconds; a mktime slower than that + isn't worth using anyway. */ + alarm (60); + + for (;;) + { + t = (time_t_max << 1) + 1; + if (t <= time_t_max) + break; + time_t_max = t; + } + time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; + + delta = time_t_max / 997; /* a suitable prime number */ + for (i = 0; i < N_STRINGS; i++) + { + if (tz_strings[i]) + putenv ((char*) tz_strings[i]); + + for (t = 0; t <= time_t_max - delta; t += delta) + if (! mktime_test (t)) + return 1; + if (! (mktime_test ((time_t) 1) + && mktime_test ((time_t) (60 * 60)) + && mktime_test ((time_t) (60 * 60 * 24)))) + return 1; + + for (j = 1; ; j <<= 1) + if (! bigtime_test (j)) + return 1; + else if (INT_MAX / 2 < j) + break; + if (! bigtime_test (INT_MAX)) + return 1; + } + return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_working_mktime=yes +else + ac_cv_func_working_mktime=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 +$as_echo "$ac_cv_func_working_mktime" >&6; } +if test $ac_cv_func_working_mktime = no; then + case " $LIBOBJS " in + *" mktime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mktime.$ac_objext" + ;; +esac + +fi + +for ac_func in strftime +do : + ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRFTIME 1 +_ACEOF + +else + # strftime is in -lintl on SCO UNIX. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 +$as_echo_n "checking for strftime in -lintl... " >&6; } +if ${ac_cv_lib_intl_strftime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strftime (); +int +main () +{ +return strftime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_strftime=yes +else + ac_cv_lib_intl_strftime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 +$as_echo "$ac_cv_lib_intl_strftime" >&6; } +if test "x$ac_cv_lib_intl_strftime" = xyes; then : + $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h + +LIBS="-lintl $LIBS" +fi + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 +$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } +if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f conftest.sym conftest.file +echo >conftest.file +if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then + if test "$cross_compiling" = yes; then : + ac_cv_func_lstat_dereferences_slashed_symlink=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + /* Linux will dereference the symlink and fail, as required by POSIX. + That is better in the sense that it means we will not + have to compile and use the lstat wrapper. */ + return lstat ("conftest.sym/", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_lstat_dereferences_slashed_symlink=yes +else + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +else + # If the `ln -s' command failed, then we probably don't even + # have an lstat function. + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f conftest.sym conftest.file + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 +$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } + +test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && + +cat >>confdefs.h <<_ACEOF +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 +_ACEOF + + +if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then + case " $LIBOBJS " in + *" lstat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS lstat.$ac_objext" + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 +$as_echo_n "checking whether stat accepts an empty string... " >&6; } +if ${ac_cv_func_stat_empty_string_bug+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_stat_empty_string_bug=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + return stat ("", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_stat_empty_string_bug=no +else + ac_cv_func_stat_empty_string_bug=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 +$as_echo "$ac_cv_func_stat_empty_string_bug" >&6; } +if test $ac_cv_func_stat_empty_string_bug = yes; then + case " $LIBOBJS " in + *" stat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS stat.$ac_objext" + ;; +esac + + +cat >>confdefs.h <<_ACEOF +#define HAVE_STAT_EMPTY_STRING_BUG 1 +_ACEOF + +fi + +for ac_header in sys/select.h sys/socket.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5 +$as_echo_n "checking types of arguments for select... " >&6; } +if ${ac_cv_func_select_args+:} false; then : + $as_echo_n "(cached) " >&6 +else + for ac_arg234 in 'fd_set *' 'int *' 'void *'; do + for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do + for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +#ifdef HAVE_SYS_SELECT_H +# include +#endif +#ifdef HAVE_SYS_SOCKET_H +# include +#endif + +int +main () +{ +extern int select ($ac_arg1, + $ac_arg234, $ac_arg234, $ac_arg234, + $ac_arg5); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + done +done +# Provide a safe default value. +: "${ac_cv_func_select_args=int,int *,struct timeval *}" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 +$as_echo "$ac_cv_func_select_args" >&6; } +ac_save_IFS=$IFS; IFS=',' +set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'` +IFS=$ac_save_IFS +shift + +cat >>confdefs.h <<_ACEOF +#define SELECT_TYPE_ARG1 $1 +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SELECT_TYPE_ARG234 ($2) +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SELECT_TYPE_ARG5 ($3) +_ACEOF + +rm -f conftest* + +for ac_func in strftime +do : + ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRFTIME 1 +_ACEOF + +else + # strftime is in -lintl on SCO UNIX. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 +$as_echo_n "checking for strftime in -lintl... " >&6; } +if ${ac_cv_lib_intl_strftime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strftime (); +int +main () +{ +return strftime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_strftime=yes +else + ac_cv_lib_intl_strftime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 +$as_echo "$ac_cv_lib_intl_strftime" >&6; } +if test "x$ac_cv_lib_intl_strftime" = xyes; then : + $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h + +LIBS="-lintl $LIBS" +fi + +fi +done + +for ac_func in vprintf +do : + ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" +if test "x$ac_cv_func_vprintf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VPRINTF 1 +_ACEOF + +ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" +if test "x$ac_cv_func__doprnt" = xyes; then : + +$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h + +fi + +fi +done + + + +TMPLIBS="$LIBS" +ac_fn_c_check_header_mongrel "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default" +if test "x$ac_cv_header_math_h" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5 +$as_echo_n "checking for pow in -lm... " >&6; } +if ${ac_cv_lib_m_pow+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pow (); +int +main () +{ +return pow (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_pow=yes +else + ac_cv_lib_m_pow=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5 +$as_echo "$ac_cv_lib_m_pow" >&6; } +if test "x$ac_cv_lib_m_pow" = xyes; then : + LIBM="-lm" + LIBS="$LIBS $LIBM" + +$as_echo "#define HAVE_LIBM /**/" >>confdefs.h + + for ac_func in pow +do : + ac_fn_c_check_func "$LINENO" "pow" "ac_cv_func_pow" +if test "x$ac_cv_func_pow" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_POW 1 +_ACEOF + +else + LIBM="" +fi +done + + +fi + + +fi + + +if test x"$LIBM" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to find working pow function - bgpd may not link" >&5 +$as_echo "$as_me: WARNING: Unable to find working pow function - bgpd may not link" >&2;} +fi +LIBS="$TMPLIBS" + + +for ac_func in dup2 ftruncate getcwd gethostbyname getpagesize gettimeofday \ + inet_ntoa inet_aton strnlen \ + memchr memmove memset select socket \ + strcasecmp strchr strcspn strdup strerror \ + strncasecmp strndup strrchr strspn strstr \ + strtol strtoul strlcat strlcpy \ + daemon snprintf vsnprintf \ + if_nametoindex if_indextoname getifaddrs \ + uname fcntl getgrouplist +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +ac_fn_c_check_header_mongrel "$LINENO" "asm-generic/unistd.h" "ac_cv_header_asm_generic_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_asm_generic_unistd_h" = xyes; then : + ac_fn_c_check_decl "$LINENO" "__NR_setns" "ac_cv_have_decl___NR_setns" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + #include + +" +if test "x$ac_cv_have_decl___NR_setns" = xyes; then : + +$as_echo "#define HAVE_NETNS /**/" >>confdefs.h + +fi + + for ac_func in setns +do : + ac_fn_c_check_func "$LINENO" "setns" "ac_cv_func_setns" +if test "x$ac_cv_func_setns" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SETNS 1 +_ACEOF + +$as_echo "#define HAVE_SETNS /**/" >>confdefs.h + +fi +done + + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking zebra between kernel interface method" >&5 +$as_echo_n "checking zebra between kernel interface method... " >&6; } +if test x"$opsys" = x"gnu-linux"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: netlink" >&5 +$as_echo "netlink" >&6; } + RT_METHOD=rt_netlink.o + +$as_echo "#define HAVE_NETLINK /**/" >>confdefs.h + + netlink=yes +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Route socket" >&5 +$as_echo "Route socket" >&6; } + KERNEL_METHOD="kernel_socket.o" + RT_METHOD="rt_socket.o" +fi + + + if test "x$netlink" = "xyes"; then + HAVE_NETLINK_TRUE= + HAVE_NETLINK_FALSE='#' +else + HAVE_NETLINK_TRUE='#' + HAVE_NETLINK_FALSE= +fi + + + +$as_echo "#define ISIS_METHOD_PFPACKET 1" >>confdefs.h + + +$as_echo "#define ISIS_METHOD_DLPI 2" >>confdefs.h + + +$as_echo "#define ISIS_METHOD_BPF 3" >>confdefs.h + +ac_fn_c_check_header_mongrel "$LINENO" "net/bpf.h" "ac_cv_header_net_bpf_h" "$ac_includes_default" +if test "x$ac_cv_header_net_bpf_h" = xyes; then : + +fi + + +ac_fn_c_check_header_mongrel "$LINENO" "sys/dlpi.h" "ac_cv_header_sys_dlpi_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_dlpi_h" = xyes; then : + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking zebra IS-IS I/O method" >&5 +$as_echo_n "checking zebra IS-IS I/O method... " >&6; } +if test x"$opsys" = x"gnu-linux"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: pfpacket" >&5 +$as_echo "pfpacket" >&6; } + ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET" +elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: DLPI" >&5 +$as_echo "DLPI" >&6; } + ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" +else + if test $ac_cv_header_net_bpf_h = no; then + if test $ac_cv_header_sys_dlpi_h = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** IS-IS support will not be built ***" >&5 +$as_echo "$as_me: WARNING: *** IS-IS support will not be built ***" >&2;} + ISISD="" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: DLPI" >&5 +$as_echo "DLPI" >&6; } + fi + ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: BPF" >&5 +$as_echo "BPF" >&6; } + ISIS_METHOD_MACRO="ISIS_METHOD_BPF" + fi +fi + +cat >>confdefs.h <<_ACEOF +#define ISIS_METHOD $ISIS_METHOD_MACRO +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken CMSG_FIRSTHDR" >&5 +$as_echo_n "checking for broken CMSG_FIRSTHDR... " >&6; } +if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +main() +{ + struct msghdr msg; + char buf[4]; + + msg.msg_control = buf; + msg.msg_controllen = 0; + + if (CMSG_FIRSTHDR(&msg) != NULL) + exit(0); + exit (1); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - using workaround" >&5 +$as_echo "yes - using workaround" >&6; } +$as_echo "#define HAVE_BROKEN_CMSG_FIRSTHDR /**/" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking route read method" >&5 +$as_echo_n "checking route read method... " >&6; } +if ${quagga_cv_rtread_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$netlink" = xyes; then + quagga_cv_rtread_method="netlink" +else +for quagga_cv_rtread_method in /dev/ip /dev/null; +do + test x`ls $quagga_cv_rtread_method 2>/dev/null` = x"$quagga_cv_rtread_method" && break +done +case $quagga_cv_rtread_method in + "/dev/ip") + case "$host" in + *-freebsd*) quagga_cv_rtread_method="sysctl";; + *) quagga_cv_rtread_method="getmsg";; + esac;; + *) + quagga_cv_rtread_method="sysctl";; +esac +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $quagga_cv_rtread_method" >&5 +$as_echo "$quagga_cv_rtread_method" >&6; } +RTREAD_METHOD=rtread_${quagga_cv_rtread_method}.o + + +IOCTL_METHOD=ioctl.o +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking interface looking up method" >&5 +$as_echo_n "checking interface looking up method... " >&6; } +if test "$netlink" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: netlink" >&5 +$as_echo "netlink" >&6; } + IF_METHOD=if_netlink.o +elif test "$opsys" = "sol2-6";then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris GIF" >&5 +$as_echo "Solaris GIF" >&6; } + IF_METHOD=if_ioctl.o +elif test "$opsys" = "sol8";then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris GLIF" >&5 +$as_echo "Solaris GLIF" >&6; } + IF_METHOD=if_ioctl_solaris.o + IOCTL_METHOD=ioctl_solaris.o +elif test "$opsys" = "openbsd";then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: openbsd" >&5 +$as_echo "openbsd" >&6; } + IF_METHOD=if_ioctl.o +elif grep NET_RT_IFLIST /usr/include/sys/socket.h >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: sysctl" >&5 +$as_echo "sysctl" >&6; } + IF_METHOD=if_sysctl.o + +$as_echo "#define HAVE_NET_RT_IFLIST /**/" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ioctl" >&5 +$as_echo "ioctl" >&6; } + IF_METHOD=if_ioctl.o +fi + + + +ac_fn_c_check_member "$LINENO" "struct ip_mreqn" "imr_ifindex" "ac_cv_member_struct_ip_mreqn_imr_ifindex" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +" +if test "x$ac_cv_member_struct_ip_mreqn_imr_ifindex" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IP_MREQN_IMR_IFINDEX 1 +_ACEOF + + +fi + + +for ac_header in linux/mroute.h +do : + ac_fn_c_check_header_compile "$LINENO" "linux/mroute.h" "ac_cv_header_linux_mroute_h" " +#if HAVE_NETINET_IN_H +#include +#endif +" +if test "x$ac_cv_header_linux_mroute_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_MROUTE_H 1 +_ACEOF + +fi + +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD struct ip_mreq hack" >&5 +$as_echo_n "checking for BSD struct ip_mreq hack... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef HAVE_SYS_PARAM_H +#include +#endif +int +main () +{ +#if (defined(__FreeBSD__) && ((__FreeBSD_version >= 500022 && __FreeBSD_version < 700000) || (__FreeBSD_version < 500000 && __FreeBSD_version >= 440000))) || (defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ >= 106010000) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__sun) + return (0); +#else + #error No support for BSD struct ip_mreq hack detected +#endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_BSD_STRUCT_IP_MREQ_HACK /**/" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RFC3678 protocol-independed API" >&5 +$as_echo_n "checking for RFC3678 protocol-independed API... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +struct group_req gr; int sock; setsockopt(sock, IPPROTO_IP, MCAST_JOIN_GROUP, (void*)&gr, sizeof(gr)); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_RFC3678 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +" +if test "x$ac_cv_header_net_if_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "net/if_media.h" "ac_cv_header_net_if_media_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +" +if test "x$ac_cv_header_net_if_media_h" = xyes; then : + + ac_fn_c_check_member "$LINENO" "struct ifmediareq" "ifm_status" "ac_cv_member_struct_ifmediareq_ifm_status" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + + #include + +" +if test "x$ac_cv_member_struct_ifmediareq_ifm_status" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IFMEDIAREQ_IFM_STATUS 1 +_ACEOF + + +$as_echo "#define HAVE_BSD_LINK_DETECT /**/" >>confdefs.h + +fi + +fi + + +fi + + + +ac_fn_c_check_header_mongrel "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "$ac_includes_default" +if test "x$ac_cv_header_net_if_h" = xyes; then : + ac_fn_c_check_member "$LINENO" "struct if_data" "ifi_link_state" "ac_cv_member_struct_if_data_ifi_link_state" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +" +if test "x$ac_cv_member_struct_if_data_ifi_link_state" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IF_DATA_IFI_LINK_STATE 1 +_ACEOF + + +$as_echo "#define HAVE_BSD_IFI_LINK_STATE /**/" >>confdefs.h + +fi + +fi + + + + +ac_fn_c_check_header_compile "$LINENO" "netinet/tcp.h" "ac_cv_header_netinet_tcp_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +" +if test "x$ac_cv_header_netinet_tcp_h" = xyes; then : + + ac_fn_c_check_decl "$LINENO" "TCP_MD5SIG" "ac_cv_have_decl_TCP_MD5SIG" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + + #include + +" +if test "x$ac_cv_have_decl_TCP_MD5SIG" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TCP_MD5SIG $ac_have_decl +_ACEOF + +fi + + +if test $ac_cv_have_decl_TCP_MD5SIG = no; then + ac_fn_c_check_header_mongrel "$LINENO" "linux/tcp.h" "ac_cv_header_linux_tcp_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_tcp_h" = xyes; then : + + ac_fn_c_check_decl "$LINENO" "TCP_MD5SIG" "ac_cv_have_decl_TCP_MD5SIG" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + + #include + +" +if test "x$ac_cv_have_decl_TCP_MD5SIG" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TCP_MD5SIG $ac_have_decl +_ACEOF + +fi + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking ipforward method" >&5 +$as_echo_n "checking ipforward method... " >&6; } +if ${quagga_cv_ipforward_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test x$cross_compiling = xyes; then + if test x"$opsys" = x"gnu-linux"; then + quagga_cv_ipforward_method=/proc/net/snmp + else + quagga_cv_ipforward_method=/dev/ip + fi +else + for quagga_cv_ipforward_method in /proc/net/snmp /dev/ip /dev/null; + do + test x`ls $quagga_cv_ipforward_method 2>/dev/null` = x"$quagga_cv_ipforward_method" && break + done +fi +case $quagga_cv_ipforward_method in + "/proc/net/snmp") quagga_cv_ipforward_method="proc";; + "/dev/ip") + case "$host" in + *-freebsd*) quagga_cv_ipforward_method="sysctl";; + *) quagga_cv_ipforward_method="solaris";; + esac;; + *) quagga_cv_ipforward_method="sysctl";; +esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $quagga_cv_ipforward_method" >&5 +$as_echo "$quagga_cv_ipforward_method" >&6; } +IPFORWARD=ipforward_${quagga_cv_ipforward_method}.o + + +for ac_func in getaddrinfo +do : + ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo" +if test "x$ac_cv_func_getaddrinfo" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETADDRINFO 1 +_ACEOF + have_getaddrinfo=yes +else + have_getaddrinfo=no +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether does this OS have IPv6 stack" >&5 +$as_echo_n "checking whether does this OS have IPv6 stack... " >&6; } + if grep WIDE /usr/include/netinet6/in6.h >/dev/null 2>&1; then + +$as_echo "#define KAME 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: KAME" >&5 +$as_echo "KAME" >&6; } + elif test x"$opsys" = x"sol8"; then + +$as_echo "#define SOLARIS_IPV6 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris IPv6" >&5 +$as_echo "Solaris IPv6" >&6; } + elif test x"$opsys" = x"gnu-linux"; then + +$as_echo "#define LINUX_IPV6 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux IPv6" >&5 +$as_echo "Linux IPv6" >&6; } + else + as_fn_error $? "Failed to detect IPv6 stack" "$LINENO" 5 + fi + + +$as_echo "#define HAVE_IPV6 1" >>confdefs.h + + +for ac_header in netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \ + netinet6/in6_var.h netinet6/nd6.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +if test "${enable_doc}" = "no";then + DOC="" +else + DOC="doc" +fi + +if test "${enable_zebra}" = "no";then + ZEBRA="" +else + ZEBRA="zebra" +fi + if test "x$ZEBRA" = "xzebra"; then + ZEBRA_TRUE= + ZEBRA_FALSE='#' +else + ZEBRA_TRUE='#' + ZEBRA_FALSE= +fi + + +if test "${enable_bgpd}" = "no";then + BGPD="" +else + BGPD="bgpd" +fi + if test "x$BGPD" = "xbgpd"; then + BGPD_TRUE= + BGPD_FALSE='#' +else + BGPD_TRUE='#' + BGPD_FALSE= +fi + + +if test "${enable_ripd}" = "no";then + RIPD="" +else + RIPD="ripd" +fi + if test "x$RIPD" = "xripd"; then + RIPD_TRUE= + RIPD_FALSE='#' +else + RIPD_TRUE='#' + RIPD_FALSE= +fi + + +if test "${enable_ospfd}" = "no";then + OSPFD="" +else + OSPFD="ospfd" +fi + if test "x$OSPFD" = "xospfd"; then + OSPFD_TRUE= + OSPFD_FALSE='#' +else + OSPFD_TRUE='#' + OSPFD_FALSE= +fi + + +if test x"$opsys" != x"gnu-linux"; then + enable_nhrpd="no" +fi +if test "${enable_nhrpd}" = "no";then + NHRPD="" +else + NHRPD="nhrpd" +fi + if test "x$NHRPD" = "xnhrpd"; then + NHRPD_TRUE= + NHRPD_FALSE='#' +else + NHRPD_TRUE='#' + NHRPD_FALSE= +fi + + +if test "${enable_watchquagga}" = "no";then + WATCHQUAGGA="" +else + WATCHQUAGGA="watchquagga" +fi + if test "x$WATCHQUAGGA" = "xwatchquagga"; then + WATCHQUAGGA_TRUE= + WATCHQUAGGA_FALSE='#' +else + WATCHQUAGGA_TRUE='#' + WATCHQUAGGA_FALSE= +fi + + +OSPFCLIENT="" +if test "${enable_ospfapi}" != "no";then + +$as_echo "#define SUPPORT_OSPF_API /**/" >>confdefs.h + + + if test "${enable_ospfclient}" != "no";then + OSPFCLIENT="ospfclient" + fi +fi + + if test "x$OSPFCLIENT" = "xospfclient"; then + OSPFCLIENT_TRUE= + OSPFCLIENT_FALSE='#' +else + OSPFCLIENT_TRUE='#' + OSPFCLIENT_FALSE= +fi + + +case "${enable_ripngd}" in + "no" ) RIPNGD="";; + * ) RIPNGD="ripngd";; +esac + if test "x$RIPNGD" = "xripngd"; then + RIPNGD_TRUE= + RIPNGD_FALSE='#' +else + RIPNGD_TRUE='#' + RIPNGD_FALSE= +fi + + +case "${enable_ospf6d}" in + "no" ) OSPF6D="";; + * ) OSPF6D="ospf6d";; +esac + if test "x$OSPF6D" = "xospf6d"; then + OSPF6D_TRUE= + OSPF6D_FALSE='#' +else + OSPF6D_TRUE='#' + OSPF6D_FALSE= +fi + + +case "${enable_isisd}" in + "no" ) ISISD="";; + * ) ISISD="isisd";; +esac + if test "x$ISISD" = "xisisd"; then + ISISD_TRUE= + ISISD_FALSE='#' +else + ISISD_TRUE='#' + ISISD_FALSE= +fi + + +case "${enable_pimd}" in + "no" ) PIMD="";; + * ) PIMD="pimd";; +esac + if test "x$PIMD" = "xpimd"; then + PIMD_TRUE= + PIMD_FALSE='#' +else + PIMD_TRUE='#' + PIMD_FALSE= +fi + + +if test "${enable_bgp_announce}" = "no";then + +$as_echo "#define DISABLE_BGP_ANNOUNCE 1" >>confdefs.h + +else + +$as_echo "#define DISABLE_BGP_ANNOUNCE 0" >>confdefs.h + +fi + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_ntop in -lc" >&5 +$as_echo_n "checking for inet_ntop in -lc... " >&6; } +if ${ac_cv_lib_c_inet_ntop+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inet_ntop (); +int +main () +{ +return inet_ntop (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_inet_ntop=yes +else + ac_cv_lib_c_inet_ntop=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_inet_ntop" >&5 +$as_echo "$ac_cv_lib_c_inet_ntop" >&6; } +if test "x$ac_cv_lib_c_inet_ntop" = xyes; then : + +$as_echo "#define HAVE_INET_NTOP /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_pton in -lc" >&5 +$as_echo_n "checking for inet_pton in -lc... " >&6; } +if ${ac_cv_lib_c_inet_pton+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inet_pton (); +int +main () +{ +return inet_pton (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_inet_pton=yes +else + ac_cv_lib_c_inet_pton=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_inet_pton" >&5 +$as_echo "$ac_cv_lib_c_inet_pton" >&6; } +if test "x$ac_cv_lib_c_inet_pton" = xyes; then : + +$as_echo "#define HAVE_INET_PTON /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 +$as_echo_n "checking for crypt in -lcrypt... " >&6; } +if ${ac_cv_lib_crypt_crypt+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcrypt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char crypt (); +int +main () +{ +return crypt (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_crypt_crypt=yes +else + ac_cv_lib_crypt_crypt=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 +$as_echo "$ac_cv_lib_crypt_crypt" >&6; } +if test "x$ac_cv_lib_crypt_crypt" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBCRYPT 1 +_ACEOF + + LIBS="-lcrypt $LIBS" + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_init in -lresolv" >&5 +$as_echo_n "checking for res_init in -lresolv... " >&6; } +if ${ac_cv_lib_resolv_res_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lresolv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char res_init (); +int +main () +{ +return res_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_resolv_res_init=yes +else + ac_cv_lib_resolv_res_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_init" >&5 +$as_echo "$ac_cv_lib_resolv_res_init" >&6; } +if test "x$ac_cv_lib_resolv_res_init" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBRESOLV 1 +_ACEOF + + LIBS="-lresolv $LIBS" + +fi + + +if test "x$enable_pcreposix" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcreposix_regexec in -lpcreposix" >&5 +$as_echo_n "checking for pcreposix_regexec in -lpcreposix... " >&6; } +if ${ac_cv_lib_pcreposix_pcreposix_regexec+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpcreposix $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pcreposix_regexec (); +int +main () +{ +return pcreposix_regexec (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pcreposix_pcreposix_regexec=yes +else + ac_cv_lib_pcreposix_pcreposix_regexec=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcreposix_pcreposix_regexec" >&5 +$as_echo "$ac_cv_lib_pcreposix_pcreposix_regexec" >&6; } +if test "x$ac_cv_lib_pcreposix_pcreposix_regexec" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPCREPOSIX 1 +_ACEOF + + LIBS="-lpcreposix $LIBS" + +else + enable_pcreposix=no + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** falling back to other regex library ***" >&5 +$as_echo "$as_me: WARNING: *** falling back to other regex library ***" >&2;} +fi + +fi + +if test "x$enable_pcreposix" != "xyes"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system has GNU regex" >&5 +$as_echo_n "checking whether system has GNU regex... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for regexec in -lc" >&5 +$as_echo_n "checking for regexec in -lc... " >&6; } +if ${ac_cv_lib_c_regexec+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char regexec (); +int +main () +{ +return regexec (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_regexec=yes +else + ac_cv_lib_c_regexec=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_regexec" >&5 +$as_echo "$ac_cv_lib_c_regexec" >&6; } +if test "x$ac_cv_lib_c_regexec" = xyes; then : + +$as_echo "#define HAVE_GNU_REGEX /**/" >>confdefs.h + + LIB_REGEX="" +else + LIB_REGEX="regex.o" +fi + +fi + + + +if test "${enable_nhrpd}" != "no";then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CARES" >&5 +$as_echo_n "checking for CARES... " >&6; } + +if test -n "$CARES_CFLAGS"; then + pkg_cv_CARES_CFLAGS="$CARES_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcares\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcares") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CARES_CFLAGS=`$PKG_CONFIG --cflags "libcares" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$CARES_LIBS"; then + pkg_cv_CARES_LIBS="$CARES_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcares\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcares") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CARES_LIBS=`$PKG_CONFIG --libs "libcares" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CARES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcares" 2>&1` + else + CARES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcares" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CARES_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (libcares) were not met: + +$CARES_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables CARES_CFLAGS +and CARES_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables CARES_CFLAGS +and CARES_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + CARES_CFLAGS=$pkg_cv_CARES_CFLAGS + CARES_LIBS=$pkg_cv_CARES_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi +fi + + +if test "${enable_snmp}" != ""; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}net-snmp-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}net-snmp-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NETSNMP_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NETSNMP_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_NETSNMP_CONFIG="$NETSNMP_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NETSNMP_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NETSNMP_CONFIG=$ac_cv_path_NETSNMP_CONFIG +if test -n "$NETSNMP_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NETSNMP_CONFIG" >&5 +$as_echo "$NETSNMP_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_NETSNMP_CONFIG"; then + ac_pt_NETSNMP_CONFIG=$NETSNMP_CONFIG + # Extract the first word of "net-snmp-config", so it can be a program name with args. +set dummy net-snmp-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_NETSNMP_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_NETSNMP_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_NETSNMP_CONFIG="$ac_pt_NETSNMP_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_NETSNMP_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_NETSNMP_CONFIG=$ac_cv_path_ac_pt_NETSNMP_CONFIG +if test -n "$ac_pt_NETSNMP_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_NETSNMP_CONFIG" >&5 +$as_echo "$ac_pt_NETSNMP_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_NETSNMP_CONFIG" = x; then + NETSNMP_CONFIG="no" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NETSNMP_CONFIG=$ac_pt_NETSNMP_CONFIG + fi +else + NETSNMP_CONFIG="$ac_cv_path_NETSNMP_CONFIG" +fi + + if test x"$NETSNMP_CONFIG" = x"no"; then + as_fn_error $? "--enable-snmp given but unable to find net-snmp-config" "$LINENO" 5 + fi + LIBS="$LIBS `${NETSNMP_CONFIG} --agent-libs`" + CFLAGS="`${NETSNMP_CONFIG} --base-cflags` $CFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can link to Net-SNMP" >&5 +$as_echo_n "checking whether we can link to Net-SNMP... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int main(void); + +int +main () +{ + +{ + return 0; +} + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "--enable-snmp given but not usable" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +$as_echo "#define HAVE_SNMP /**/" >>confdefs.h + + case "${enable_snmp}" in + yes) + SNMP_METHOD=agentx + ;; + smux|agentx) + SNMP_METHOD="${enable_snmp}" + ;; + *) + as_fn_error $? "--enable-snmp given with an unknown method (${enable_snmp}). Use smux or agentx" "$LINENO" 5 + ;; + esac + + + +cat >>confdefs.h <<_ACEOF +#define `$as_echo "SNMP_${SNMP_METHOD}" | $as_tr_cpp` /**/ +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "struct sockaddr" "ac_cv_type_struct_sockaddr" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_sockaddr" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct sockaddr_in" "ac_cv_type_struct_sockaddr_in" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_sockaddr_in" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_IN 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct sockaddr_in6" "ac_cv_type_struct_sockaddr_in6" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_sockaddr_in6" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_IN6 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct sockaddr_un" "ac_cv_type_struct_sockaddr_un" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_sockaddr_un" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_UN 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct sockaddr_dl" "ac_cv_type_struct_sockaddr_dl" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_sockaddr_dl" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_DL 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_socklen_t" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_SOCKLEN_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct vifctl" "ac_cv_type_struct_vifctl" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_vifctl" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_VIFCTL 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct mfcctl" "ac_cv_type_struct_mfcctl" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_mfcctl" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_MFCCTL 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct sioc_sg_req" "ac_cv_type_struct_sioc_sg_req" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_sioc_sg_req" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SIOC_SG_REQ 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "vifi_t" "ac_cv_type_vifi_t" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_vifi_t" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_VIFI_T 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct sioc_vif_req" "ac_cv_type_struct_sioc_vif_req" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_sioc_vif_req" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SIOC_VIF_REQ 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct igmpmsg" "ac_cv_type_struct_igmpmsg" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_igmpmsg" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IGMPMSG 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct ifaliasreq" "ac_cv_type_struct_ifaliasreq" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_ifaliasreq" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IFALIASREQ 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct if6_aliasreq" "ac_cv_type_struct_if6_aliasreq" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_if6_aliasreq" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IF6_ALIASREQ 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct in6_aliasreq" "ac_cv_type_struct_in6_aliasreq" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_in6_aliasreq" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IN6_ALIASREQ 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct nd_opt_adv_interval" "ac_cv_type_struct_nd_opt_adv_interval" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_nd_opt_adv_interval" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_ND_OPT_ADV_INTERVAL 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct rt_addrinfo" "ac_cv_type_struct_rt_addrinfo" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_rt_addrinfo" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_RT_ADDRINFO 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct nd_opt_homeagent_info" "ac_cv_type_struct_nd_opt_homeagent_info" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_nd_opt_homeagent_info" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_ND_OPT_HOMEAGENT_INFO 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct nd_opt_adv_interval" "ac_cv_type_struct_nd_opt_adv_interval" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_nd_opt_adv_interval" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_ND_OPT_ADV_INTERVAL 1 +_ACEOF + + +fi + + +ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_len" "ac_cv_member_struct_sockaddr_sa_len" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_SA_LEN 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct sockaddr_in" "sin_len" "ac_cv_member_struct_sockaddr_in_sin_len" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_member_struct_sockaddr_in_sin_len" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_len" "ac_cv_member_struct_sockaddr_un_sun_len" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_member_struct_sockaddr_un_sun_len" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_scope_id" "ac_cv_member_struct_sockaddr_in6_sin6_scope_id" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct sockaddr_dl" "sdl_len" "ac_cv_member_struct_sockaddr_dl_sdl_len" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_member_struct_sockaddr_dl_sdl_len" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_SOCKADDR_DL_SDL_LEN 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct if6_aliasreq" "ifra_lifetime" "ac_cv_member_struct_if6_aliasreq_ifra_lifetime" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_member_struct_if6_aliasreq_ifra_lifetime" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IF6_ALIASREQ_IFRA_LIFETIME 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct nd_opt_adv_interval" "nd_opt_ai_type" "ac_cv_member_struct_nd_opt_adv_interval_nd_opt_ai_type" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_member_struct_nd_opt_adv_interval_nd_opt_ai_type" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_ND_OPT_ADV_INTERVAL_ND_OPT_AI_TYPE 1 +_ACEOF + + +fi + + +ac_fn_c_check_type "$LINENO" "struct in_pktinfo" "ac_cv_type_struct_in_pktinfo" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_in_pktinfo" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_IN_PKTINFO 1 +_ACEOF + +ac_fn_c_check_type "$LINENO" "struct icmphdr" "ac_cv_type_struct_icmphdr" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_type_struct_icmphdr" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_ICMPHDR 1 +_ACEOF + +if test "${enable_irdp}" != "no"; then + +$as_echo "#define HAVE_IRDP /**/" >>confdefs.h + + fi +else + if test "${enable_irdp}" = "yes"; then + as_fn_error $? "'IRDP requires in_pktinfo at the moment!'" "$LINENO" 5 + fi +fi + +else + if test "${enable_irdp}" = "yes"; then + as_fn_error $? "'IRDP requires in_pktinfo at the moment!'" "$LINENO" 5 + fi +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP_PKTINFO" >&5 +$as_echo_n "checking for IP_PKTINFO... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + int opt = IP_PKTINFO; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_IP_PKTINFO 1" >>confdefs.h + + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP_RECVDSTADDR" >&5 +$as_echo_n "checking for IP_RECVDSTADDR... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + int opt = IP_RECVDSTADDR; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_IP_RECVDSTADDR 1" >>confdefs.h + + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP_RECVIF" >&5 +$as_echo_n "checking for IP_RECVIF... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + int opt = IP_RECVIF; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_IP_RECVIF 1" >>confdefs.h + + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test "${enable_rusage}" != "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getrusage is available" >&5 +$as_echo_n "checking whether getrusage is available... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +struct rusage ac_x; getrusage (RUSAGE_SELF, &ac_x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_RUSAGE /**/" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +ac_fn_c_check_decl "$LINENO" "CLOCK_MONOTONIC" "ac_cv_have_decl_CLOCK_MONOTONIC" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_have_decl_CLOCK_MONOTONIC" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + LIBS="$LIBS -lrt" +fi + + +$as_echo "#define HAVE_CLOCK_MONOTONIC /**/" >>confdefs.h + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "${enable_capabilities}" != "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether prctl PR_SET_KEEPCAPS is available" >&5 +$as_echo_n "checking whether prctl PR_SET_KEEPCAPS is available... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PR_SET_KEEPCAPS /**/" >>confdefs.h + + quagga_ac_keepcaps="yes" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test x"${quagga_ac_keepcaps}" = x"yes"; then + for ac_header in sys/capability.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/capability.h" "ac_cv_header_sys_capability_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_capability_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_CAPABILITY_H 1 +_ACEOF + +fi + +done + + fi + if test x"${ac_cv_header_sys_capability_h}" = x"yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cap_init in -lcap" >&5 +$as_echo_n "checking for cap_init in -lcap... " >&6; } +if ${ac_cv_lib_cap_cap_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cap_init (); +int +main () +{ +return cap_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_cap_cap_init=yes +else + ac_cv_lib_cap_cap_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cap_cap_init" >&5 +$as_echo "$ac_cv_lib_cap_cap_init" >&6; } +if test "x$ac_cv_lib_cap_cap_init" = xyes; then : + +$as_echo "#define HAVE_LCAPS 1" >>confdefs.h + + LIBCAP="-lcap" + quagga_ac_lcaps="yes" + +fi + + else + for ac_header in priv.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "priv.h" "ac_cv_header_priv_h" "$ac_includes_default" +if test "x$ac_cv_header_priv_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PRIV_H 1 +_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Solaris style privileges are available" >&5 +$as_echo_n "checking Solaris style privileges are available... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +getpflags(PRIV_AWARE); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_SOLARIS_CAPABILITIES 1" >>confdefs.h + + quagga_ac_scaps="yes" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi + +done + + fi + if test x"${quagga_ac_scaps}" = x"yes" \ + -o x"${quagga_ac_lcaps}" = x"yes"; then + +$as_echo "#define HAVE_CAPABILITIES 1" >>confdefs.h + + fi +fi + + + + # starting point: no aliasing scheme yet... + ax_sys_weak_alias=no + + # Figure out what kind of aliasing may be supported... + # Test whether compiler accepts __attribute__ form of weak aliasing + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts function __attribute__((weak,alias()))" >&5 +$as_echo_n "checking whether $CC accepts function __attribute__((weak,alias()))... " >&6; } +if ${ax_cv_sys_weak_alias_attribute+:} false; then : + $as_echo_n "(cached) " >&6 +else + + # We add -Werror if it's gcc to force an error exit if the weak attribute + # isn't understood + if test $GCC = yes; then : + + save_CFLAGS=$CFLAGS + CFLAGS=-Werror +fi + + # Try linking with a weak alias... + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +void __weakf(int c) {} +void weakf(int c) __attribute__((weak, alias("__weakf"))); +int +main () +{ +weakf(0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_sys_weak_alias_attribute=yes +else + ax_cv_sys_weak_alias_attribute=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + # Restore original CFLAGS + if test $GCC = yes; then : + + CFLAGS=$save_CFLAGS +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_sys_weak_alias_attribute" >&5 +$as_echo "$ax_cv_sys_weak_alias_attribute" >&6; } + + # What was the result of the test? + if test $ax_cv_sys_weak_alias_attribute = yes; then : + + test $ax_sys_weak_alias = no && ax_sys_weak_alias=attribute + +$as_echo "#define HAVE_SYS_WEAK_ALIAS_ATTRIBUTE 1" >>confdefs.h + + +fi + + # Test whether compiler accepts #pragma form of weak aliasing + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports #pragma weak" >&5 +$as_echo_n "checking whether $CC supports #pragma weak... " >&6; } +if ${ax_cv_sys_weak_alias_pragma+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + # Try linking with a weak alias... + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +extern void weakf(int c); +#pragma weak weakf = __weakf +void __weakf(int c) {} +int +main () +{ +weakf(0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_sys_weak_alias_pragma=yes +else + ax_cv_sys_weak_alias_pragma=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_sys_weak_alias_pragma" >&5 +$as_echo "$ax_cv_sys_weak_alias_pragma" >&6; } + + # What was the result of the test? + if test $ax_cv_sys_weak_alias_pragma = yes; then : + + test $ax_sys_weak_alias = no && ax_sys_weak_alias=pragma + +$as_echo "#define HAVE_SYS_WEAK_ALIAS_PRAGMA 1" >>confdefs.h + + +fi + + # Test whether compiler accepts _HP_SECONDARY_DEF pragma from HP... + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports #pragma _HP_SECONDARY_DEF" >&5 +$as_echo_n "checking whether $CC supports #pragma _HP_SECONDARY_DEF... " >&6; } +if ${ax_cv_sys_weak_alias_hpsecondary+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + # Try linking with a weak alias... + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +extern void weakf(int c); +#pragma _HP_SECONDARY_DEF __weakf weakf +void __weakf(int c) {} +int +main () +{ +weakf(0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_sys_weak_alias_hpsecondary=yes +else + ax_cv_sys_weak_alias_hpsecondary=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_sys_weak_alias_hpsecondary" >&5 +$as_echo "$ax_cv_sys_weak_alias_hpsecondary" >&6; } + + # What was the result of the test? + if test $ax_cv_sys_weak_alias_hpsecondary = yes; then : + + test $ax_sys_weak_alias = no && ax_sys_weak_alias=hpsecondary + +$as_echo "#define HAVE_SYS_WEAK_ALIAS_HPSECONDARY 1" >>confdefs.h + + +fi + + # Test whether compiler accepts "_CRI duplicate" pragma from Cray + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports #pragma _CRI duplicate" >&5 +$as_echo_n "checking whether $CC supports #pragma _CRI duplicate... " >&6; } +if ${ax_cv_sys_weak_alias_criduplicate+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + # Try linking with a weak alias... + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +extern void weakf(int c); +#pragma _CRI duplicate weakf as __weakf +void __weakf(int c) {} +int +main () +{ +weakf(0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ax_cv_sys_weak_alias_criduplicate=yes +else + ax_cv_sys_weak_alias_criduplicate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_sys_weak_alias_criduplicate" >&5 +$as_echo "$ax_cv_sys_weak_alias_criduplicate" >&6; } + + # What was the result of the test? + if test $ax_cv_sys_weak_alias_criduplicate = yes; then : + + test $ax_sys_weak_alias = no && ax_sys_weak_alias=criduplicate + +$as_echo "#define HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE 1" >>confdefs.h + + +fi + + + # Do we actually support aliasing? + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create weak aliases with $CC" >&5 +$as_echo_n "checking how to create weak aliases with $CC... " >&6; } +if ${ax_cv_sys_weak_alias+:} false; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_sys_weak_alias=$ax_sys_weak_alias +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_sys_weak_alias" >&5 +$as_echo "$ax_cv_sys_weak_alias" >&6; } + + # OK, set a #define + if test $ax_cv_sys_weak_alias != no; then : + + +$as_echo "#define HAVE_SYS_WEAK_ALIAS 1" >>confdefs.h + + +fi + + # Can aliases cross object file boundaries? + # Check to see if weak aliases can cross object file boundaries + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports weak aliases across object file boundaries" >&5 +$as_echo_n "checking whether $CC supports weak aliases across object file boundaries... " >&6; } +if ${ax_cv_sys_weak_alias_crossfile+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test $ax_cv_sys_weak_alias = no; then : + ax_cv_sys_weak_alias_crossfile=no +else + + # conftest1 contains our weak alias definition... + cat >conftest1.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF + cat confdefs.h >>conftest1.$ac_ext + cat >>conftest1.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#ifndef HAVE_SYS_WEAK_ALIAS_ATTRIBUTE +extern void weakf(int c); +#if defined(HAVE_SYS_WEAK_ALIAS_PRAGMA) +#pragma weak weakf = __weakf +#elif defined(HAVE_SYS_WEAK_ALIAS_HPSECONDARY) +#pragma _HP_SECONDARY_DEF __weakf weakf +#elif defined(HAVE_SYS_WEAK_ALIAS_CRIDUPLICATE) +#pragma _CRI duplicate weakf as __weakf +#endif +#endif +void __weakf(int c) {} +#ifdef HAVE_SYS_WEAK_ALIAS_ATTRIBUTE +void weakf(int c) __attribute((weak, alias("__weakf"))); +#endif +_ACEOF + # And conftest2 contains our main routine that calls it + cat >conftest2.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF + cat confdefs.h >> conftest2.$ac_ext + cat >>conftest2.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +extern void weakf(int c); +int +main () +{ + weakf(0); + return 0; +} +_ACEOF + # We must remove the object files (if any) ourselves... + rm -f conftest2.$ac_objext conftest$ac_exeext + + # Change ac_link to compile *2* files together + save_aclink=$ac_link + ac_link=`echo "$ac_link" | \ + sed -e 's/conftest\(\.\$ac_ext\)/conftest1\1 conftest2\1/'` + # Since we created the files ourselves, don't use SOURCE argument + if ac_fn_c_try_link "$LINENO"; then : + ax_cv_sys_weak_alias_crossfile=yes +else + ax_cv_sys_weak_alias_crossfile=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + # Restore ac_link + ac_link=$save_aclink + + # We must remove the object files (if any) and C files ourselves... + rm -f conftest1.$ac_ext conftest2.$ac_ext \ + conftest1.$ac_objext conftest2.$ac_objext + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_sys_weak_alias_crossfile" >&5 +$as_echo "$ax_cv_sys_weak_alias_crossfile" >&6; } + + # What were the results of the test? + if test $ax_cv_sys_weak_alias_crossfile = yes; then : + + +$as_echo "#define HAVE_SYS_WEAK_ALIAS_CROSSFILE 1" >>confdefs.h + + +fi + + + # OK, remember the results + WEAK_ALIAS=$ax_cv_sys_weak_alias + + WEAK_ALIAS_CROSSFILE=$ax_cv_sys_weak_alias_crossfile + + + +if test x"${enable_backtrace}" != x"no" ; then + backtrace_ok=no + ac_fn_c_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_execinfo_h" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 +$as_echo_n "checking for library containing backtrace... " >&6; } +if ${ac_cv_search_backtrace+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char backtrace (); +int +main () +{ +return backtrace (); + ; + return 0; +} +_ACEOF +for ac_lib in '' execinfo; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib -lm $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_backtrace=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_backtrace+:} false; then : + break +fi +done +if ${ac_cv_search_backtrace+:} false; then : + +else + ac_cv_search_backtrace=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 +$as_echo "$ac_cv_search_backtrace" >&6; } +ac_res=$ac_cv_search_backtrace +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + +$as_echo "#define HAVE_GLIBC_BACKTRACE /**/" >>confdefs.h + + +$as_echo "#define HAVE_STACK_TRACE /**/" >>confdefs.h + + backtrace_ok=yes + +fi + + +fi + + + + if test x"${enable_backtrace}" = x"yes" -a x"${backtrace_ok}" = x"no"; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to find backtrace support +See \`config.log' for more details" "$LINENO" 5; } + fi +fi + +ac_fn_c_check_header_compile "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +" +if test "x$ac_cv_header_malloc_h" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mallinfo is available" >&5 +$as_echo_n "checking whether mallinfo is available... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +struct mallinfo ac_x; ac_x = mallinfo (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_MALLINFO /**/" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + + + +CONFDATE=`date '+%Y%m%d'` + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking directory to use for state file" >&5 +$as_echo_n "checking directory to use for state file... " >&6; } +if test "${prefix}" = "NONE"; then + quagga_statedir_prefix=""; +else + quagga_statedir_prefix=${prefix} +fi +if test "${localstatedir}" = '${prefix}/var'; then + for QUAGGA_STATE_DIR in ${quagga_statedir_prefix}/var/run ${quagga_statedir_prefix}/var/adm ${quagga_statedir_prefix}/etc /var/run /var/adm /etc /dev/null; + do + test -d $QUAGGA_STATE_DIR && break + done + quagga_statedir=$QUAGGA_STATE_DIR +else + quagga_statedir=${localstatedir} +fi +if test $quagga_statedir = "/dev/null"; then + as_fn_error $? "'STATE DIRECTORY NOT FOUND! FIX OR SPECIFY --localstatedir!'" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${quagga_statedir}" >&5 +$as_echo "${quagga_statedir}" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define PATH_ZEBRA_PID "$quagga_statedir/zebra.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_RIPD_PID "$quagga_statedir/ripd.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_RIPNGD_PID "$quagga_statedir/ripngd.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_BGPD_PID "$quagga_statedir/bgpd.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_OSPFD_PID "$quagga_statedir/ospfd.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_OSPF6D_PID "$quagga_statedir/ospf6d.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_NHRPD_PID "$quagga_statedir/nhrpd.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_ISISD_PID "$quagga_statedir/isisd.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_PIMD_PID "$quagga_statedir/pimd.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PATH_WATCHQUAGGA_PID "$quagga_statedir/watchquagga.pid" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define ZEBRA_SERV_PATH "$quagga_statedir/zserv.api" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define ZEBRA_VTYSH_PATH "$quagga_statedir/zebra.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define RIP_VTYSH_PATH "$quagga_statedir/ripd.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define RIPNG_VTYSH_PATH "$quagga_statedir/ripngd.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define BGP_VTYSH_PATH "$quagga_statedir/bgpd.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define OSPF_VTYSH_PATH "$quagga_statedir/ospfd.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define OSPF6_VTYSH_PATH "$quagga_statedir/ospf6d.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define NHRP_VTYSH_PATH "$quagga_statedir/nhrpd.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define ISIS_VTYSH_PATH "$quagga_statedir/isisd.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PIM_VTYSH_PATH "$quagga_statedir/pimd.vty" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define DAEMON_VTY_DIR "$quagga_statedir" +_ACEOF + + + +$as_echo "#define QUAGGA_NO_DEPRECATED_INTERFACES 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working htonl" >&5 +$as_echo_n "checking for working htonl... " >&6; } +if ${ac_cv_htonl_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef SUNOS_5 +#define _XPG4_2 +#define __EXTENSIONS__ +#endif +#include +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_SYS_TYPES_H +# include +#endif +/* sys/conf.h depends on param.h on FBSD at least */ +#if HAVE_SYS_PARAM_H +# include +#endif +/* Required for MAXSIG */ +#if HAVE_SIGNAL_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#ifdef __APPLE__ +# define __APPLE_USE_RFC_3542 +#endif +#if HAVE_NETINET_IN_H +# include +#endif +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif /* TIME_WITH_SYS_TIME */ + +#if HAVE_NET_IF_H +# include +#endif + +#if HAVE_NET_IF_VAR_H +# include +#endif + +#if HAVE_SYS_UN_H +# include +#endif +#if HAVE_NETINET_IN_SYSTM_H +# include +#endif +#if HAVE_NETINET_IN_VAR_H +# include +#endif +#if HAVE_NET_IF_DL_H +# include +#endif +#if HAVE_NET_NETOPT_H +# include +#endif +#if HAVE_NET_ROUTE_H +# include +#endif +#if HAVE_INET_ND_H +# include +#endif +#if HAVE_ARPA_INET_H +# include +#endif +/* Required for IDRP */ +#if HAVE_NETINET_IP_ICMP_H +# include +#endif + +#if HAVE_NETINET6_IN6_H +#include +#endif +#if HAVE_NETINET_IN6_VAR_H +#include +#endif +#if HAVE_NETINET_ICMP6_H +# include +#endif +#if HAVE_NETINET6_IN6_VAR_H +# include +#endif +#if HAVE_NETINET6_ND6_H +# include +#endif + +int +main () +{ +htonl (0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_htonl_works=yes +else + ac_cv_htonl_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_htonl_works" >&5 +$as_echo "$ac_cv_htonl_works" >&6; } + +ac_config_files="$ac_config_files Makefile lib/Makefile qpb/Makefile zebra/Makefile ripd/Makefile ripngd/Makefile bgpd/Makefile ospfd/Makefile watchquagga/Makefile ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile pimd/Makefile nhrpd/Makefile redhat/Makefile pkgsrc/Makefile fpm/Makefile redhat/quagga.spec redhat/quagga.sysconfig lib/version.h isisd/topology/Makefile pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh pkgsrc/ripd.sh pkgsrc/ripngd.sh pkgsrc/zebra.sh" + +ac_config_files="$ac_config_files solaris/Makefile" + + +ac_config_files="$ac_config_files vtysh/extract.pl" + +## Hack, but working solution to avoid rebuilding of quagga.info. +## It's already in CVS until texinfo 4.7 is more common. +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 overridden 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, we kill variables containing newlines. +# 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. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + 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}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LATEX_TRUE}" && test -z "${HAVE_LATEX_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LATEX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PANDOC_TRUE}" && test -z "${HAVE_PANDOC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PANDOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${DEV_BUILD_TRUE}" && test -z "${DEV_BUILD_FALSE}"; then + as_fn_error $? "conditional \"DEV_BUILD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PROTOBUF_TRUE}" && test -z "${HAVE_PROTOBUF_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PROTOBUF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GIT_VERSION_TRUE}" && test -z "${GIT_VERSION_FALSE}"; then + as_fn_error $? "conditional \"GIT_VERSION\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${VTYSH_TRUE}" && test -z "${VTYSH_FALSE}"; then + as_fn_error $? "conditional \"VTYSH\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +if test -z "${HAVE_NETLINK_TRUE}" && test -z "${HAVE_NETLINK_FALSE}"; then + as_fn_error $? "conditional \"HAVE_NETLINK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ZEBRA_TRUE}" && test -z "${ZEBRA_FALSE}"; then + as_fn_error $? "conditional \"ZEBRA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${BGPD_TRUE}" && test -z "${BGPD_FALSE}"; then + as_fn_error $? "conditional \"BGPD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${RIPD_TRUE}" && test -z "${RIPD_FALSE}"; then + as_fn_error $? "conditional \"RIPD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OSPFD_TRUE}" && test -z "${OSPFD_FALSE}"; then + as_fn_error $? "conditional \"OSPFD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${NHRPD_TRUE}" && test -z "${NHRPD_FALSE}"; then + as_fn_error $? "conditional \"NHRPD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WATCHQUAGGA_TRUE}" && test -z "${WATCHQUAGGA_FALSE}"; then + as_fn_error $? "conditional \"WATCHQUAGGA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OSPFCLIENT_TRUE}" && test -z "${OSPFCLIENT_FALSE}"; then + as_fn_error $? "conditional \"OSPFCLIENT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${RIPNGD_TRUE}" && test -z "${RIPNGD_FALSE}"; then + as_fn_error $? "conditional \"RIPNGD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OSPF6D_TRUE}" && test -z "${OSPF6D_FALSE}"; then + as_fn_error $? "conditional \"OSPF6D\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ISISD_TRUE}" && test -z "${ISISD_FALSE}"; then + as_fn_error $? "conditional \"ISISD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${PIMD_TRUE}" && test -z "${PIMD_FALSE}"; then + as_fn_error $? "conditional \"PIMD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $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 +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +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 +IFS=$as_save_IFS + + ;; +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 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# 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 + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Quagga $as_me 1.2.3, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -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 ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Quagga config.status 1.2.3 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + +ac_aux_dir='$ac_aux_dir' + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "qpb/Makefile") CONFIG_FILES="$CONFIG_FILES qpb/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" ;; + "watchquagga/Makefile") CONFIG_FILES="$CONFIG_FILES watchquagga/Makefile" ;; + "ospf6d/Makefile") CONFIG_FILES="$CONFIG_FILES ospf6d/Makefile" ;; + "isisd/Makefile") CONFIG_FILES="$CONFIG_FILES isisd/Makefile" ;; + "vtysh/Makefile") CONFIG_FILES="$CONFIG_FILES vtysh/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "ospfclient/Makefile") CONFIG_FILES="$CONFIG_FILES ospfclient/Makefile" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; + "pimd/Makefile") CONFIG_FILES="$CONFIG_FILES pimd/Makefile" ;; + "nhrpd/Makefile") CONFIG_FILES="$CONFIG_FILES nhrpd/Makefile" ;; + "redhat/Makefile") CONFIG_FILES="$CONFIG_FILES redhat/Makefile" ;; + "pkgsrc/Makefile") CONFIG_FILES="$CONFIG_FILES pkgsrc/Makefile" ;; + "fpm/Makefile") CONFIG_FILES="$CONFIG_FILES fpm/Makefile" ;; + "redhat/quagga.spec") CONFIG_FILES="$CONFIG_FILES redhat/quagga.spec" ;; + "redhat/quagga.sysconfig") CONFIG_FILES="$CONFIG_FILES redhat/quagga.sysconfig" ;; + "lib/version.h") CONFIG_FILES="$CONFIG_FILES lib/version.h" ;; + "isisd/topology/Makefile") CONFIG_FILES="$CONFIG_FILES isisd/topology/Makefile" ;; + "pkgsrc/bgpd.sh") CONFIG_FILES="$CONFIG_FILES pkgsrc/bgpd.sh" ;; + "pkgsrc/ospf6d.sh") CONFIG_FILES="$CONFIG_FILES pkgsrc/ospf6d.sh" ;; + "pkgsrc/ospfd.sh") CONFIG_FILES="$CONFIG_FILES pkgsrc/ospfd.sh" ;; + "pkgsrc/ripd.sh") CONFIG_FILES="$CONFIG_FILES pkgsrc/ripd.sh" ;; + "pkgsrc/ripngd.sh") CONFIG_FILES="$CONFIG_FILES pkgsrc/ripngd.sh" ;; + "pkgsrc/zebra.sh") CONFIG_FILES="$CONFIG_FILES pkgsrc/zebra.sh" ;; + "solaris/Makefile") CONFIG_FILES="$CONFIG_FILES solaris/Makefile" ;; + "vtysh/extract.pl") CONFIG_FILES="$CONFIG_FILES vtysh/extract.pl" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + 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 + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # 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. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + 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. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_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 + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. 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 " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + "vtysh/extract.pl":F) chmod +x vtysh/extract.pl ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# 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=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || 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 || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +echo " +Quagga configuration +-------------------- +quagga version : ${PACKAGE_VERSION} +host operating system : ${host_os} +source code location : ${srcdir} +compiler : ${CC} +compiler flags : ${CFLAGS} +make : ${MAKE-make} +linker flags : ${LDFLAGS} ${LIBS} ${LIBCAP} ${LIBREADLINE} ${LIBM} +state file directory : ${quagga_statedir} +config file directory : `eval echo \`echo ${sysconfdir}\`` +example directory : `eval echo \`echo ${exampledir}\`` +user to run as : ${enable_user} +group to run as : ${enable_group} +group for vty sockets : ${enable_vty_group} +config file mask : ${enable_configfile_mask} +log file mask : ${enable_logfile_mask} +zebra protobuf enabled : ${have_protobuf:-no} + +The above user and group must have read/write access to the state file +directory and to the config files in the config file directory." + +if test x"$quagga_cv_gnu_make" = x"no"; then echo " +Warning: The ${MAKE-make} programme detected, either in your path or +via the MAKE variable, is not GNU Make. GNU make may be installed as +gmake on some systems. and is required to complete a build of Quagga +" > /dev/stderr +fi diff --git a/configure.ac b/configure.ac index ae292f1..ed279f4 100755 --- a/configure.ac +++ b/configure.ac @@ -7,7 +7,7 @@ ## AC_PREREQ(2.60) -AC_INIT(Quagga, 1.2.2, [https://bugzilla.quagga.net]) +AC_INIT(Quagga, 1.2.3, [https://bugzilla.quagga.net]) CONFIG_ARGS="$*" AC_SUBST(CONFIG_ARGS) AC_CONFIG_SRCDIR(lib/zebra.h) @@ -74,7 +74,6 @@ AC_LANG([C]) AC_PROG_CC AC_PROG_CPP AM_PROG_CC_C_O -AC_PROG_RANLIB AC_PROG_EGREP PKG_PROG_PKG_CONFIG AC_PROG_CC_C99 @@ -117,9 +116,9 @@ AM_CONDITIONAL([HAVE_PANDOC], [test "x$HAVE_PANDOC" = "xtrue"]) if test "x${GCC}" != "xyes" ; then AC_MSG_CHECKING([whether we are using SunPro compiler]) AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C], - [AC_MSG_RESULT([no])], [COMPILER="SUNPRO" - AC_MSG_RESULT([yes])] + AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] ) fi @@ -184,12 +183,14 @@ if test "x${cflags_specified}" = "x" ; then dnl from ld. Disable. An issue with libtool < 2.4.6 dropping the dnl -fstack-protector-strong argument from the shared link. AC_MSG_CHECKING([whether libtool can support fstack-protector]) - if test x"$(./libtool --version \ - | awk -F '[[ \t.]]' \ - 'NR == 1 { \ - if ($(NF-2) <= 2 && $(NF-1) <= 4 && $NF < 6) \ - print 0; \ - else print 1 \ + if test x"$(./libtool --version | awk 'NR == 1 { print $NF }' \ + | awk -F. '{ \ + if ($(NF-2) < 2) print 0; \ + else if ($(NF-2) > 2) print 1; \ + else if ($(NF-1) < 4) print 0; \ + else if ($(NF-1) > 4) print 1; \ + else if ($NF < 6) print 0; \ + else print 1; \ }')" = "x1" ; then AC_MSG_RESULT([yes]) AC_C_FLAG([-fstack-protector-strong]) @@ -1577,18 +1578,6 @@ dnl ---------- CONFDATE=`date '+%Y%m%d'` AC_SUBST(CONFDATE) -dnl ------- -dnl DejaGNU -dnl ------- -if test x"$DEJAGNU" = x -then - DEJAGNU="\$(top_srcdir)/tests/global-conf.exp" -fi -RUNTESTDEFAULTFLAGS="-x --tool \$\$tool" - -AC_SUBST(DEJAGNU) -AC_SUBST(RUNTESTDEFAULTFLAGS) - dnl ------------------------------ dnl set paths for state directory dnl ------------------------------ @@ -1665,12 +1654,10 @@ AC_CONFIG_FILES([Makefile lib/Makefile qpb/Makefile zebra/Makefile ripd/Makefile ospf6d/Makefile isisd/Makefile vtysh/Makefile doc/Makefile ospfclient/Makefile tests/Makefile m4/Makefile pimd/Makefile nhrpd/Makefile - tests/bgpd.tests/Makefile - tests/libzebra.tests/Makefile redhat/Makefile pkgsrc/Makefile fpm/Makefile - redhat/quagga.spec + redhat/quagga.spec redhat/quagga.sysconfig lib/version.h isisd/topology/Makefile pkgsrc/bgpd.sh pkgsrc/ospf6d.sh pkgsrc/ospfd.sh diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..fc98710 --- /dev/null +++ b/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2014 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, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index 459531b..0000000 --- a/doc/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -Makefile -Makefile.in -mdate-sh -draft-zebra-00.txt -quagga.info-* -zebra.html -version.texi -quagga.html -quagga.info -*.pdf -*.eps -quagga.ps -quagga.dvi -stamp-vti -.nfs* -*.aux -*.cp -*.cps -*.fn -*.fns -*.ky -*.kys -*.log -*.op -*.pg -*.toc -*.tp -*.vr -.arch-inventory -.arch-ids -*~ -*.loT diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..7c2601c --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,1004 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@PIMD_TRUE@am__append_1 = pimd.8 +@BGPD_TRUE@am__append_2 = bgpd.8 +@ISISD_TRUE@am__append_3 = isisd.8 +@OSPF6D_TRUE@am__append_4 = ospf6d.8 +@OSPFCLIENT_TRUE@am__append_5 = ospfclient.8 +@OSPFD_TRUE@am__append_6 = ospfd.8 +@RIPD_TRUE@am__append_7 = ripd.8 +@RIPNGD_TRUE@am__append_8 = ripngd.8 +@NHRPD_TRUE@am__append_9 = nhrpd.8 +@VTYSH_TRUE@am__append_10 = vtysh.1 +@WATCHQUAGGA_TRUE@am__append_11 = watchquagga.8 +@ZEBRA_TRUE@am__append_12 = zebra.8 +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \ + $(srcdir)/stamp-vti $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) +am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) +am__v_DVIPS_0 = @echo " DVIPS " $@; +am__v_DVIPS_1 = +AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) +am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) +am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; +am__v_MAKEINFO_1 = +AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) +am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) +am__v_INFOHTML_0 = @echo " INFOHTML" $@; +am__v_INFOHTML_1 = +AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) +am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) +am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; +am__v_TEXI2DVI_1 = +AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) +am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) +am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; +am__v_TEXI2PDF_1 = +AM_V_texinfo = $(am__v_texinfo_@AM_V@) +am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) +am__v_texinfo_0 = -q +am__v_texinfo_1 = +AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) +am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) +am__v_texidevnull_0 = > /dev/null +am__v_texidevnull_1 = +INFO_DEPS = quagga.info +am__TEXINFO_TEX_DIR = $(srcdir) +DVIS = quagga.dvi +PDFS = quagga.pdf +PSS = quagga.ps +HTMLS = quagga.html +TEXINFOS = quagga.texi +TEXI2DVI = texi2dvi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +DVIPS = dvips +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(man8dir)" +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +man8dir = $(mandir)/man8 +NROFF = nroff +MANS = $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(quagga_TEXINFOS) $(srcdir)/Makefile.in mdate-sh \ + texinfo.tex +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Dia, the version i have at least, doesn't do very good EPS output +# (some of the text is scaled strangely). So this will work, but +# it is probably better to use something like gimp to convert the +# dia exported PNG files to EPS manually. +# +# Here we use 'convert' from the well known 'ImageMagick' package +# to do conversion from png to eps/pdf for figures. +# PDF form is required for quagga.pdf, using PDFTex at least. +# +# TeX implementation, which we depend on already anyway. +# +# dia -> (dia) -> png -> (convert) -> eps -> (epstopdf) -> pdf +SUFFIXES = .png .eps .dia .pdf +DIATOPNG = dia -t png -e +DIATOEPS = dia -t eps -e +PNGTOEPS = convert -antialias -contrast -despeckle +PNGTOPDF = $(PNGTOEPS) +EPSTOPDF = epstopdf + +# The figure sources +figures_names_parts = -normal-processing -rs-processing +figures_sources = $(figures_names_parts:%=fig%.dia) +figures_png = $(figures_names_parts:%=fig%.png) +figures_pdf = $(figures_names_parts:%=fig%.pdf) +figures_eps = $(figures_names_parts:%=fig%.eps) +figures_txt = $(figures_names_parts:%=fig%.txt) + +# rather twisted logic because we have to build PDFs of the EPS figures for +# PDFTex and yet build one PDF, quagga.pdf, from texi source. Which means we +# cant rely on a single automatic rule for *.pdf, eg the one automatically +# provided by automake. If you are an automake wizard, please feel free to +# compact it somehow. + +#quagga.pdf: $(info_TEXINFOS) $(quagga_TEXINFOS) +# $(TEXI2PDF) -o "$@" $< || true +info_TEXINFOS = quagga.texi +quagga_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 routeserver.texi defines.texi $(figures_png) \ + snmptrap.texi ospf_fundamentals.texi isisd.texi nhrpd.texi \ + $(figures_txt) + +man_MANS = $(am__append_1) $(am__append_2) $(am__append_3) \ + $(am__append_4) $(am__append_5) $(am__append_6) \ + $(am__append_7) $(am__append_8) $(am__append_9) \ + $(am__append_10) $(am__append_11) $(am__append_12) +AM_MAKEINFOHTMLFLAGS = --css-include=$(srcdir)/texinfo.css +EXTRA_DIST = BGP-TypeCode draft-zebra-00.ms draft-zebra-00.txt \ + bgpd.8 isisd.8 ospf6d.8 ospfclient.8 ospfd.8 ripd.8 \ + ripngd.8 nhrpd.8 pimd.8 vtysh.1 watchquagga.8 zebra.8 \ + mpls/ChangeLog.opaque.txt mpls/cli_summary.txt \ + mpls/opaque_lsa.txt mpls/ospfd.conf \ + $(figures_sources) $(figures_png) $(figures_txt) \ + texinfo.tex texinfo.css + +CLEANFILES = *.{fn,fns,cp,cps,ky,kys} +DISTCLEANFILES = quagga.info* +all: all-am + +.SUFFIXES: +.SUFFIXES: .png .eps .dia .pdf .dvi .ps +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +quagga.info: quagga.texi $(srcdir)/version.texi $(quagga_TEXINFOS) + $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ `test -f 'quagga.texi' || echo '$(srcdir)/'`quagga.texi; \ + then \ + rc=0; \ + else \ + rc=$$?; \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +quagga.dvi: quagga.texi $(srcdir)/version.texi $(quagga_TEXINFOS) + $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ + `test -f 'quagga.texi' || echo '$(srcdir)/'`quagga.texi + +quagga.pdf: quagga.texi $(srcdir)/version.texi $(quagga_TEXINFOS) + $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ + `test -f 'quagga.texi' || echo '$(srcdir)/'`quagga.texi + +quagga.html: quagga.texi $(srcdir)/version.texi $(quagga_TEXINFOS) + $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) + $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) `test -f 'quagga.texi' || echo '$(srcdir)/'`quagga.texi; \ + then \ + rm -rf $@ && mv $(@:.html=.htp) $@; \ + else \ + rm -rf $(@:.html=.htp); exit 1; \ + fi +$(srcdir)/version.texi: $(srcdir)/stamp-vti +$(srcdir)/stamp-vti: quagga.texi $(top_srcdir)/configure + @(dir=.; test -f ./quagga.texi || dir=$(srcdir); \ + set `$(SHELL) $(srcdir)/mdate-sh $$dir/quagga.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ + (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi" && \ + cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ + mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ + rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ + @cp $(srcdir)/version.texi $@ + +mostlyclean-vti: + -rm -f vti.tmp* $(srcdir)/version.texi.tmp* + +maintainer-clean-vti: + -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +.dvi.ps: + $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) $(AM_V_texinfo) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf quagga.t2d quagga.t2p + +clean-aminfo: + -test -z "quagga.dvi quagga.pdf quagga.ps quagga.html" \ + || rm -rf quagga.dvi quagga.pdf quagga.ps quagga.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-man8: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man8dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.8[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ + done; } + +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man8dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.8[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man8dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +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-aminfo clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi-am: $(DVIS) + +html: html-am + +html-am: $(HTMLS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am install-man + +install-dvi: install-dvi-am + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ + done +install-exec-am: + +install-html: install-html-am + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + $(am__strip_dir) \ + d2=$$d$$p; \ + if test -d "$$d2"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ + else \ + list2="$$list2 $$d2"; \ + fi; \ + done; \ + test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done; } +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ + fi; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + echo "$$ifile"; \ + else : ; fi; \ + done; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done + @$(POST_INSTALL) + @if $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: install-man1 install-man8 + +install-pdf: install-pdf-am + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done +install-ps: install-ps-am + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ + mostlyclean-libtool mostlyclean-vti + +pdf: pdf-am + +pdf-am: $(PDFS) + +ps: ps-am + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-man uninstall-pdf-am uninstall-ps-am + +uninstall-man: uninstall-man1 uninstall-man8 + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-aminfo clean-generic \ + clean-libtool cscopelist-am ctags-am dist-info distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-man8 \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool \ + mostlyclean-vti pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-dvi-am uninstall-html-am \ + uninstall-info-am uninstall-man uninstall-man1 uninstall-man8 \ + uninstall-pdf-am uninstall-ps-am + +.PRECIOUS: Makefile + + +.png.eps: + $(PNGTOEPS) $< "$@" + +.png.pdf: + $(PNGTOPDF) $< "$@" + +.dia.png: + $(DIATOPNG) "$@" $< + +draft-zebra-00.txt: draft-zebra-00.ms + groff -T ascii -ms $< > $@ + +# do nothing for DVI, so we don't have to generate or distribute EPS +# figures +dvi: # nothing + +# 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/bgpd.texi b/doc/bgpd.texi index d5aa30c..3cd442d 100644 --- a/doc/bgpd.texi +++ b/doc/bgpd.texi @@ -104,6 +104,8 @@ so @code{router-id} is set to 0.0.0.0. So please set router-id by hand. @deffn {BGP} {distance bgp <1-255> <1-255> <1-255>} {} This command change distance value of BGP. Each argument is distance value for external routes, internal routes and local routes. + +To have this command applied to existing routes requires a hard clear. @end deffn @deffn {BGP} {distance <1-255> @var{A.B.C.D/M}} {} @@ -1163,7 +1165,7 @@ route-map RMAP permit 10 Following configuration is an example of BGP route filtering using communities attribute. This configuration only permit BGP routes -which has BGP communities value 0:80 or 0:90. Network operator can +which has BGP communities value 0:80 and 0:90. Network operator can put special internal communities value at BGP border router, then limit the BGP routes announcement into the internal network. diff --git a/doc/draft-zebra-00.txt b/doc/draft-zebra-00.txt new file mode 100644 index 0000000..d7fbe8c --- /dev/null +++ b/doc/draft-zebra-00.txt @@ -0,0 +1,240 @@ + + + + + + +Network Working Group K. Ishiguro +Request for Comments: DRAFT Digital Magic Labs, Inc. + March 1998 + + + Zebra Protocol Draft + + +Status of this Memo + + This draft is very eary beta version. + +Introduction + + The zebra protocol is a communication protocol between kernel routing + table manager and routing protocol daemon. It is built over TCP/IP + protocol suite. + +Request message formats + + zebra is TCP-based protocol. + + Below is request packet format. + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length (2) | Command (1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Length is total packet length. + + Here is summary of command list. + + + 1 - ZEBRA_IPV4_ROUTE_ADD + 2 - ZEBRA_IPV4_ROUTE_DELETE + 3 - ZEBRA_IPV6_ROUTE_ADD + 4 - ZEBRA_IPV6_ROUTE_DELETE + 5 - ZEBRA_GET_ONE_INTERFACE + 6 - ZEBRA_GET_ALL_INTERFACE + 7 - ZEBRA_GET_HOSTINFO + + + + + + + +Ishiguro FORMFEED[Page 1] + + + + + +RFC DRAFT March 1998 + + +IPv4 reply message formats + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+ + | Type (1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Gateway (4) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Type field specify route's origin type. + + + 1 - ZEBRA_ROUTE_RESERVE + 2 - ZEBRA_ROUTE_CONNECT + 3 - ZEBRA_ROUTE_STATIC + 4 - ZEBRA_ROUTE_RIP + 5 - ZEBRA_ROUTE_RIPNG + 6 - ZEBRA_ROUTE_BGP + 7 - ZEBRA_ROUTE_RADIX + + + After above message there can be variale length IPv4 prefix data. + Each IPv4 prefix is encoded as a two tuple of the form + + + +----------------------+ + |Subnet mask (1 octet) | + +----------------------+ + |IPv4 prefix (variable)| + +----------------------+ + + +IPv6 reply message formats + + + + + + + + + + + + + + +Ishiguro FORMFEED[Page 2] + + + + + +RFC DRAFT March 1998 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+ + | Type (1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Gateway (16) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Type field specify route's origin type. + + + 1 - ZEBRA_ROUTE_RESERVE + 2 - ZEBRA_ROUTE_CONNECT + 3 - ZEBRA_ROUTE_STATIC + 4 - ZEBRA_ROUTE_RIP + 5 - ZEBRA_ROUTE_RIPNG + 6 - ZEBRA_ROUTE_BGP + 7 - ZEBRA_ROUTE_RADIX + + + + +----------------------+ + | ifindex (4 octet) | + +----------------------+ + | prefixlen (1 octet)| + +----------------------+ + |IPv6 prefix (variable)| + +----------------------+ + + + I am not sure but it seems some operation systems IPv6 implementation + may need interface index when add and delete linklocal routes. + + I have added ifindex field to specify IPv6 routes interface index. If + this index is value zero, it will ignored. + +Interface information message format. + + + + + + + +Ishiguro FORMFEED[Page 3] + + + + + +RFC DRAFT March 1998 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface name (20) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Index (1) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Inteface flag (4) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Inteface metric (4) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Inteface MTU (4) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Inteface Address count (4) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Address message format. + +Host inforamtion message format. + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |IPv4 forwarding|IPv6 forwarding| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Host information contain IPv4/IPv6 forwarding information. + + + + + + + + + + + + + + + + + + + + + +Ishiguro FORMFEED[Page 4] + + diff --git a/doc/fig_topologies_full.txt b/doc/fig_topologies_full.txt deleted file mode 100644 index cc8025a..0000000 --- a/doc/fig_topologies_full.txt +++ /dev/null @@ -1,6 +0,0 @@ -(RF1)--(RF2) - | \ / | - | \/ | - | /\ | - | / \ | -(RF3)--(RF4) diff --git a/doc/fig_topologies_rs.txt b/doc/fig_topologies_rs.txt deleted file mode 100644 index 0bd1730..0000000 --- a/doc/fig_topologies_rs.txt +++ /dev/null @@ -1,5 +0,0 @@ -(RF1) (RF2) - \ / - [RS] - / \ -(RF3) (RF4) diff --git a/doc/mdate-sh b/doc/mdate-sh new file mode 100755 index 0000000..e8dfaca --- /dev/null +++ b/doc/mdate-sh @@ -0,0 +1,224 @@ +#!/bin/sh +# Get modification time of a file or directory and pretty-print it. + +scriptversion=2010-08-21.06; # UTC + +# Copyright (C) 1995-2014 Free Software Foundation, Inc. +# written by Ulrich Drepper , June 1995 +# +# 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, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +fi + +case $1 in + '') + echo "$0: No file. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: mdate-sh [--help] [--version] FILE + +Pretty-print the modification day of FILE, in the format: +1 January 1970 + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "mdate-sh $scriptversion" + exit $? + ;; +esac + +error () +{ + echo "$0: $1" >&2 + exit 1 +} + + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# GNU ls changes its time format in response to the TIME_STYLE +# variable. Since we cannot assume 'unset' works, revert this +# variable to its documented default. +if test "${TIME_STYLE+set}" = set; then + TIME_STYLE=posix-long-iso + export TIME_STYLE +fi + +save_arg1=$1 + +# Find out how to get the extended ls output of a file or directory. +if ls -L /dev/null 1>/dev/null 2>&1; then + ls_command='ls -L -l -d' +else + ls_command='ls -l -d' +fi +# Avoid user/group names that might have spaces, when possible. +if ls -n /dev/null 1>/dev/null 2>&1; then + ls_command="$ls_command -n" +fi + +# A 'ls -l' line looks as follows on OS/2. +# drwxrwx--- 0 Aug 11 2001 foo +# This differs from Unix, which adds ownership information. +# drwxrwx--- 2 root root 4096 Aug 11 2001 foo +# +# To find the date, we split the line on spaces and iterate on words +# until we find a month. This cannot work with files whose owner is a +# user named "Jan", or "Feb", etc. However, it's unlikely that '/' +# will be owned by a user whose name is a month. So we first look at +# the extended ls output of the root directory to decide how many +# words should be skipped to get the date. + +# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. +set x`$ls_command /` + +# Find which argument is the month. +month= +command= +until test $month +do + test $# -gt 0 || error "failed parsing '$ls_command /' output" + shift + # Add another shift to the command. + command="$command shift;" + case $1 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; + esac +done + +test -n "$month" || error "failed parsing '$ls_command /' output" + +# Get the extended ls output of the file or directory. +set dummy x`eval "$ls_command \"\\\$save_arg1\""` + +# Remove all preceding arguments +eval $command + +# Because of the dummy argument above, month is in $2. +# +# On a POSIX system, we should have +# +# $# = 5 +# $1 = file size +# $2 = month +# $3 = day +# $4 = year or time +# $5 = filename +# +# On Darwin 7.7.0 and 7.6.0, we have +# +# $# = 4 +# $1 = day +# $2 = month +# $3 = year or time +# $4 = filename + +# Get the month. +case $2 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; +esac + +case $3 in + ???*) day=$1;; + *) day=$3; shift;; +esac + +# Here we have to deal with the problem that the ls output gives either +# the time of day or the year. +case $3 in + *:*) set `date`; eval year=\$$# + case $2 in + Jan) nummonthtod=1;; + Feb) nummonthtod=2;; + Mar) nummonthtod=3;; + Apr) nummonthtod=4;; + May) nummonthtod=5;; + Jun) nummonthtod=6;; + Jul) nummonthtod=7;; + Aug) nummonthtod=8;; + Sep) nummonthtod=9;; + Oct) nummonthtod=10;; + Nov) nummonthtod=11;; + Dec) nummonthtod=12;; + esac + # For the first six month of the year the time notation can also + # be used for files modified in the last year. + if (expr $nummonth \> $nummonthtod) > /dev/null; + then + year=`expr $year - 1` + fi;; + *) year=$3;; +esac + +# The result. +echo $day $month $year + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/doc/mpls/.gitignore b/doc/mpls/.gitignore deleted file mode 100644 index b0a4a46..0000000 --- a/doc/mpls/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.arch-ids -.arch-inventory -*~ -*.loT - diff --git a/doc/next-hop-tracking.txt b/doc/next-hop-tracking.txt deleted file mode 100644 index d157866..0000000 --- a/doc/next-hop-tracking.txt +++ /dev/null @@ -1,326 +0,0 @@ -0. Introduction - -This is the design specification for next hop tracking feature in -Quagga. - -1. Background - -Recursive routes are of the form: - - p/m --> n - [Ex: 1.1.0.0/16 --> 2.2.2.2] - -where 'n' itself is resolved through another route as follows: - - p2/m --> h, interface - [Ex: 2.2.2.0/24 --> 3.3.3.3, eth0] - -Usually, BGP routes are recursive in nature and BGP nexthops get -resolved through an IGP route. IGP usually adds its routes pointing to -an interface (these are called non-recursive routes). - -When BGP receives a recursive route from a peer, it needs to validate -the nexthop. The path is marked valid or invalid based on the -reachability status of the nexthop. Nexthop validation is also -important for BGP decision process as the metric to reach the nexthop -is a parameter to best path selection process. - -As it goes with routing, this is a dynamic process. Route to the -nexthop can change. The nexthop can become unreachable or -reachable. In the current BGP implementation, the nexthop validation -is done periodically in the scanner run. The default scanner run -interval is one minute. Every minute, the scanner task walks the -entire BGP table. It checks the validity of each nexthop with Zebra -(the routing table manager) through a request and response message -exchange between BGP and Zebra process. BGP process is blocked for -that duration. The mechanism has two major drawbacks: - -(1) The scanner task runs to completion. That can potentially starve - the other tasks for long periods of time, based on the BGP table - size and number of nexthops. - -(2) Convergence around routing changes that affect the nexthops can be - long (around a minute with the default intervals). The interval - can be shortened to achieve faster reaction time, but it makes the - first problem worse, with the scanner task consuming most of the - CPU resources. - -"Next hop tracking" feature makes this process event-driven. It -eliminates periodic nexthop validation and introduces an asynchronous -communication path between BGP and Zebra for route change notifications -that can then be acted upon. - -2. Goal - -Stating the obvious, the main goal is to remove the two limitations we -discussed in the previous section. The goals, in a constructive tone, -are the following: - -- fairness: the scanner run should not consume an unjustly high amount - of CPU time. This should give an overall good performance and - response time to other events (route changes, session events, - IO/user interface). - -- convergence: BGP must react to nexthop changes instantly and provide - sub-second convergence. This may involve diverting the routes from - one nexthop to another. - -3. Overview of the changes - -The changes are in both BGP and Zebra modules. The short summary is -the following: - -- Zebra implements a registration mechanism by which clients can - register for next hop notification. Consequently, it maintains a - separate table, per (VRF, AF) pair, of next hops and interested - client-list per next hop. - -- When the main routing table changes in Zebra, it evaluates the next - hop table: for each next hop, it checks if the route table - modifications have changed its state. If so, it notifies the - interested clients. - -- BGP is one such client. It registers the next hops corresponding to - all of its received routes/paths. It also threads the paths against - each nexthop structure. - -- When BGP receives a next hop notification from Zebra, it walks the - corresponding path list. It makes them valid or invalid depending - on the next hop notification. It then re-computes best path for the - corresponding destination. This may result in re-announcing those - destinations to peers. - -4. Design - -4.1. Modules - -The core design introduces an "nht" (next hop tracking) module in BGP -and "rnh" (recursive nexthop) module in Zebra. The "nht" module -provides the following APIs: - -bgp_find_or_add_nexthop() : find or add a nexthop in BGP nexthop table -bgp_find_nexthop() : find a nexthop in BGP nexthop table -bgp_parse_nexthop_update() : parse a nexthop update message coming - from zebra - -The "rnh" module provides the following APIs: - -zebra_add_rnh() : add a recursive nexthop -zebra_delete_rnh() : delete a recursive nexthop -zebra_lookup_rnh() : lookup a recursive nexthop - -zebra_add_rnh_client() : register a client for nexthop notifications - against a recursive nexthop - -zebra_remove_rnh_client(): remove the client registration for a - recursive nexthop - -zebra_evaluate_rnh_table(): (re)evaluate the recursive nexthop table - (most probably because the main routing - table has changed). - -zebra_cleanup_rnh_client(): Cleanup a client from the "rnh" module - data structures (most probably because the - client is going away). - -4.2. Control flow - -The next hop registration control flow is the following: - -<==== BGP Process ====>|<==== Zebra Process ====> - | -receive module nht module | zserv module rnh module ----------------------------------------------------------------------- - | | | -bgp_update_ | | | - main() | bgp_find_or_add_ | | - | nexthop() | | - | | | - | | zserv_nexthop_ | - | | register() | - | | | zebra_add_rnh() - | | | - - -The next hop notification control flow is the following: - -<==== Zebra Process ====>|<==== BGP Process ====> - | -rib module rnh module | zebra module nht module ----------------------------------------------------------------------- - | | | -meta_queue_ | | | - process() | zebra_evaluate_ | | - | rnh_table() | | - | | | - | | bgp_read_nexthop_ | - | | update() | - | | | bgp_parse_ - | | | nexthop_update() - | | | - - -4.3. zclient message format - -ZEBRA_NEXTHOP_REGISTER and ZEBRA_NEXTHOP_UNREGISTER messages are -encoded in the following way: - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | AF | prefix len | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . Nexthop prefix . - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . . - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | AF | prefix len | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . Nexthop prefix . - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -ZEBRA_NEXTHOP_UPDATE message is encoded as follows: - -/* - * 0 1 2 3 - * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | AF | prefix len | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . Nexthop prefix getting resolved . - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | metric | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | #nexthops | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | nexthop type | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . resolving Nexthop details . - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * | nexthop type | - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - * . resolving Nexthop details . - * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - */ - -4.4. BGP data structure - -Legend: - -/\ struct bgp_node: a BGP destination/route/prefix -\/ - -[ ] struct bgp_info: a BGP path (e.g. route received from a peer) - - _ -(_) struct bgp_nexthop_cache: a BGP nexthop - - - - /\ NULL - \/--+ ^ - | : - +--[ ]--[ ]--[ ]--> NULL - /\ : - \/--+ : - | : - +--[ ]--[ ]--> NULL - : - _ : - (_)............. - - -4.5. Zebra data structure - -rnh table: - - O - / \ - O O - / \ - O O - - struct rnh - { - u_char flags; - struct rib *state; - struct list *client_list; - struct route_node *node; - }; - -5. User interface changes - -quagga# show ip nht -3.3.3.3 - resolved via kernel - via 11.0.0.6, swp1 - Client list: bgp(fd 12) -11.0.0.10 - resolved via connected - is directly connected, swp2 - Client list: bgp(fd 12) -11.0.0.18 - resolved via connected - is directly connected, swp4 - Client list: bgp(fd 12) -11.11.11.11 - resolved via kernel - via 10.0.1.2, eth0 - Client list: bgp(fd 12) - -quagga# show ip bgp nexthop -Current BGP nexthop cache: - 3.3.3.3 valid [IGP metric 0], #paths 3 - Last update: Wed Oct 16 04:43:49 2013 - - 11.0.0.10 valid [IGP metric 1], #paths 1 - Last update: Wed Oct 16 04:43:51 2013 - - 11.0.0.18 valid [IGP metric 1], #paths 2 - Last update: Wed Oct 16 04:43:47 2013 - - 11.11.11.11 valid [IGP metric 0], #paths 1 - Last update: Wed Oct 16 04:43:47 2013 - -quagga# show ipv6 nht -quagga# show ip bgp nexthop detail - -quagga# debug bgp nht -quagga# debug zebra nht - -6. Sample test cases - - r2----r3 - / \ / - r1----r4 - -- Verify that a change in IGP cost triggers NHT - + shutdown the r1-r4 and r2-r4 links - + no shut the r1-r4 and r2-r4 links and wait for OSPF to come back - up - + We should be back to the original nexthop via r4 now -- Verify that a NH becoming unreachable triggers NHT - + Shutdown all links to r4 -- Verify that a NH becoming reachable triggers NHT - + no shut all links to r4 - -7. Future work - -- route-policy for next hop validation (e.g. ignore default route) -- damping for rapid next hop changes -- prioritized handling of nexthop changes ((un)reachability vs. metric - changes) -- handling recursion loop, e.g. - 11.11.11.11/32 -> 12.12.12.12 - 12.12.12.12/32 -> 11.11.11.11 - 11.0.0.0/8 -> -- better statistics diff --git a/doc/ospfclient.8 b/doc/ospfclient.8 index ccfad1a..4ca14b8 100644 --- a/doc/ospfclient.8 +++ b/doc/ospfclient.8 @@ -1,5 +1,5 @@ .\" This file was originally generated by help2man 1.36. -.TH OSPFCLIENT "1" "July 2010" +.TH OSPFCLIENT "8" "July 2010" .SH NAME ospfclient \- an example ospf-api client .SH SYNOPSIS diff --git a/doc/protocol.texi b/doc/protocol.texi index 602768a..082d545 100644 --- a/doc/protocol.texi +++ b/doc/protocol.texi @@ -11,22 +11,18 @@ nexthop-validation, and so on. Protocol daemons may also install routes with zebra. The zebra daemon manages which route is installed into the forwarding table with the kernel. -Zebra Protocol is a streaming protocol, with a common header. Two -versions of the header are in use. Version 0 is implicitely versioned. -Version 1 has an explicit version field. Version 0 can be distinguished -from all other versions by examining the 3rd byte of the header, which -contains a marker value for all versions bar version 0. The marker byte -corresponds to the command field in version 0, and the marker value is -a reserved command in version 0. - -We do not anticipate there will be further versions of the header for -the foreseeable future, as the command field in version 1 is wide -enough to allow for future extensions to done compatibly through -seperate commands. +Zebra Protocol is a streaming protocol, with a common header. The protocol +is versioned to allow for incompatible changes. Version 0 is implicitely +versioned. Version 1 onwards has an explicit version field. Version 0 can +be distinguished from all other versions by examining the 3rd byte of the +header, which contains a marker value of 255 for all versions bar version 0. +The marker byte corresponds to the command field in version 0, and the +marker value is a reserved command in version 0. Version 0 is used by all versions of GNU Zebra as of this writing, and -versions of Quagga up to and including Quagga 0.98. Version 1 will be -used as of Quagga 1.0. +versions of Quagga up to and including Quagga 0.98. The version 1 header +was introduced with Quagga 0.99.3. The version 3 header was introduced with +Quagga 1.0.20160309. @appendixsection Zebra Protocol Definition @appendixsubsec Zebra Protocol Header (version 0) @@ -40,7 +36,7 @@ used as of Quagga 1.0. @end group @end example -@appendixsubsec Zebra Protocol Common Header (version 1) +@appendixsubsec Zebra Protocol Common Header (version 1 and 2) @example @group 0 1 2 3 @@ -53,11 +49,26 @@ used as of Quagga 1.0. @end group @end example +@appendixsubsec Zebra Protocol Common Header (version 3) +@example +@group +0 1 2 3 +0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 ++-------------------------------+---------------+-------------+ +| Length (2) | Marker (1) | Version (1) | ++-------------------------------+---------------+-------------+ +| VRF ID (2) | Command (2) | ++-------------------------------+-----------------------------+ +@end group +@end example + + @appendixsubsec Zebra Protocol Header Field Definitions @table @samp @item Length Total packet length including this header. The minimum length is 3 -bytes for version 0 messages and 6 bytes for version 1 messages. +bytes for version 0 messages, 6 bytes for version 1 and 2 messages, and +8 bytes for version 3. @item Marker Static marker with a value of 255 always. This is to allow version 0 @@ -70,6 +81,10 @@ Version number of the Zserv message. Clients should not continue processing messages past the version field for versions they do not recognise. Not present in version 0 messages. +@item VRF ID +Virtual Routing/Forwarding context ID, to which the message applies. Only +present from version 3 onwards. + @item Command The Zebra Protocol command. @end table diff --git a/doc/quagga.info b/doc/quagga.info new file mode 100644 index 0000000..9226003 --- /dev/null +++ b/doc/quagga.info @@ -0,0 +1,267 @@ +This is quagga.info, produced by makeinfo version 6.3 from quagga.texi. + +Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions, except that this permission notice may be stated + in a translation approved by Kunihiro Ishiguro. +INFO-DIR-SECTION Routing Software: +START-INFO-DIR-ENTRY +* Quagga: (quagga). The Quagga Software Routing Suite +END-INFO-DIR-ENTRY + + This file documents the Quagga Software Routing Suite which manages +common TCP/IP routing protocols. + + This is Edition 1.2.3, last updated 4 February 2018 of 'The Quagga +Manual', for Quagga Version 1.2.3. + + Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions, except that this permission notice may be stated + in a translation approved by Kunihiro Ishiguro. + + +Indirect: +quagga.info-1: 1937 +quagga.info-2: 302475 + +Tag Table: +(Indirect) +Node: Top1937 +Node: Overview3319 +Node: About Quagga4753 +Node: System Architecture7039 +Node: Supported Platforms9728 +Node: Supported RFCs10974 +Node: How to get Quagga13155 +Node: Mailing List13579 +Node: Bug Reports14025 +Node: Installation14901 +Node: Configure the Software15335 +Node: The Configure script and its options15583 +Node: Least-Privilege support19470 +Node: Linux notes21209 +Ref: Linux notes-Footnote-123067 +Node: Build the Software23133 +Node: Install the Software23683 +Node: Basic commands25230 +Node: Config Commands26004 +Node: Basic Config Commands26862 +Node: Sample Config File33228 +Node: Terminal Mode Commands34001 +Node: Common Invocation Options35132 +Node: Virtual Terminal Interfaces36548 +Node: VTY Overview37059 +Node: VTY Modes38310 +Node: VTY View Mode38760 +Node: VTY Enable Mode39010 +Node: VTY Other Modes39288 +Node: VTY CLI Commands39464 +Node: CLI Movement Commands39924 +Node: CLI Editing Commands40447 +Node: CLI Advanced Commands41208 +Node: Zebra42088 +Node: Invoking zebra42803 +Node: Interface Commands43333 +Node: Standard Commands43566 +Node: Link Parameters Commands45127 +Node: Static Route Commands47744 +Node: Multicast RIB Commands51000 +Node: zebra Route Filtering54132 +Node: zebra FIB push interface55276 +Node: zebra Terminal Mode Commands58791 +Node: RIP60196 +Node: Starting and Stopping ripd61263 +Node: RIP netmask62691 +Node: RIP Configuration63788 +Node: RIP Version Control66786 +Node: How to Announce RIP route68973 +Node: Filtering RIP Routes71542 +Node: RIP Metric Manipulation73009 +Node: RIP distance73922 +Node: RIP route-map74737 +Node: RIP Authentication77286 +Node: RIP Timers79531 +Node: Show RIP Information80821 +Node: RIP Debug Commands82197 +Node: RIPng83193 +Node: Invoking ripngd83539 +Node: ripngd Configuration83788 +Node: ripngd Terminal Mode Commands84539 +Node: ripngd Filtering Commands84903 +Node: OSPFv285412 +Node: OSPF Fundamentals86233 +Ref: OSPF LSA sequence number93854 +Ref: OSPF Link-State LSA Example99177 +Ref: OSPF Flooding106822 +Ref: OSPF Areas106863 +Node: Configuring ospfd106898 +Node: OSPF router107473 +Ref: ospf router-id108020 +Ref: OSPF passive-interface111231 +Ref: OSPF auto-cost reference-bandwidth115696 +Ref: OSPF network command116357 +Node: OSPF area117508 +Ref: OSPF virtual-link119855 +Ref: area authentication message-digest123567 +Node: OSPF interface123990 +Ref: OSPF ip ospf area command124234 +Ref: ip ospf authentication message-digest125131 +Ref: ip ospf message-digest-key126116 +Ref: ip ospf dead-interval minimal126935 +Node: Redistribute routes to OSPF129353 +Ref: OSPF redistribute130409 +Ref: ospf distribute-list132320 +Node: Showing OSPF information132763 +Ref: show ip ospf132970 +Node: Opaque LSA134212 +Node: OSPF Traffic Engineering135474 +Node: Router Information136624 +Node: Debugging OSPF138117 +Node: OSPF Configuration Examples139789 +Node: OSPFv3143405 +Node: OSPF6 router143811 +Node: OSPF6 area146527 +Node: OSPF6 interface146705 +Node: Redistribute routes to OSPF6147775 +Node: Showing OSPF6 information148091 +Node: OSPF6 Configuration Examples148948 +Node: ISIS149369 +Node: Configuring isisd150045 +Node: ISIS router150592 +Ref: router isis WORD150916 +Ref: metric-style152006 +Node: ISIS Timer152376 +Node: ISIS region154063 +Node: ISIS interface154472 +Ref: ip router isis WORD154708 +Node: Showing ISIS information157883 +Node: ISIS Traffic Engineering159294 +Node: Debugging ISIS159975 +Node: ISIS Configuration Examples161516 +Node: NHRP163662 +Node: Routing Design164465 +Node: Configuring NHRP166118 +Node: Hub Functionality166276 +Node: Integration with IKE167625 +Node: NHRP Events168305 +Node: Configuration Example168458 +Node: BGP168602 +Node: Starting BGP169692 +Node: BGP router170524 +Node: BGP distance171824 +Node: BGP decision process172345 +Ref: bgp bestpath as-path multipath-relax174907 +Ref: bgp bestpath compare-routerid175175 +Node: BGP route flap dampening176142 +Node: BGP MED176860 +Ref: bgp deterministic-med188103 +Ref: bgp always-compare-med188969 +Ref: BGP MED-Footnote-1189589 +Node: BGP network190272 +Node: BGP route190500 +Node: Route Aggregation191054 +Node: Redistribute to BGP191625 +Node: BGP Peer192154 +Node: Defining Peer192383 +Node: BGP Peer commands192998 +Node: Peer filtering197522 +Node: BGP Peer Group198313 +Node: BGP Address Family198628 +Node: Autonomous System199752 +Node: AS Path Regular Expression200655 +Node: Display BGP Routes by AS Path201897 +Node: AS Path Access List202339 +Node: Using AS Path in Route Map202808 +Node: Private AS Numbers203280 +Node: BGP Communities Attribute203440 +Node: BGP Community Lists205915 +Node: Numbered BGP Community Lists208567 +Node: BGP Community in Route Map210156 +Node: Display BGP Routes by Community212102 +Node: Using BGP Communities Attribute213273 +Node: BGP Extended Communities Attribute216844 +Node: BGP Extended Community Lists218625 +Node: BGP Extended Communities in Route Map220514 +Node: Displaying BGP routes220977 +Node: Show IP BGP221245 +Node: More Show IP BGP221947 +Node: Capability Negotiation223269 +Node: Route Reflector226742 +Node: Route Server227023 +Node: Multiple instance228136 +Node: BGP instance and view229983 +Node: Routing policy231366 +Node: Viewing the view232136 +Node: How to set up a 6-Bone connection232423 +Node: Dump BGP packets and table233797 +Node: BGP Configuration Examples235424 +Node: Configuring Quagga as a Route Server244381 +Node: Description of the Route Server model245292 +Ref: fig:normal-processing246885 +Ref: filter-delegation247878 +Ref: Route Server tasks249052 +Ref: Route-server path filter process249423 +Ref: fig:rs-processing251753 +Node: Commands for configuring a Route Server254161 +Node: Example of Route Server Configuration257206 +Node: Configuration of the BGP routers without Route Server258128 +Node: Configuration of the BGP routers with Route Server261012 +Node: Configuration of the Route Server itself262314 +Node: Further considerations about Import and Export route-maps267315 +Node: VTY shell270363 +Node: VTY shell username271032 +Node: VTY shell integrated configuration271665 +Node: Filtering273110 +Node: IP Access List273491 +Node: IP Prefix List273877 +Node: ip prefix-list description276920 +Node: ip prefix-list sequential number control277447 +Node: Showing ip prefix-list277989 +Node: Clear counter of ip prefix-list279095 +Node: Route Map279534 +Node: Route Map Command283005 +Node: Route Map Match Command283314 +Node: Route Map Set Command284037 +Ref: routemap set metric284512 +Node: Route Map Call Command284945 +Node: Route Map Exit Action Command285276 +Node: Route Map Examples285758 +Node: IPv6 Support286270 +Node: Router Advertisement286851 +Node: Kernel Interface293188 +Node: SNMP Support295145 +Node: Getting and installing an SNMP agent295804 +Node: AgentX configuration296615 +Node: SMUX configuration298418 +Node: MIB and command reference302475 +Node: Handling SNMP Traps304000 +Node: Zebra Protocol310106 +Node: Packet Binary Dump Format314848 +Node: Command Index327399 +Node: VTY Key Index410565 +Node: Index413554 + +End Tag Table diff --git a/doc/quagga.info-1 b/doc/quagga.info-1 new file mode 100644 index 0000000..7038016 --- /dev/null +++ b/doc/quagga.info-1 @@ -0,0 +1,7859 @@ +This is quagga.info, produced by makeinfo version 6.3 from quagga.texi. + +Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions, except that this permission notice may be stated + in a translation approved by Kunihiro Ishiguro. +INFO-DIR-SECTION Routing Software: +START-INFO-DIR-ENTRY +* Quagga: (quagga). The Quagga Software Routing Suite +END-INFO-DIR-ENTRY + + This file documents the Quagga Software Routing Suite which manages +common TCP/IP routing protocols. + + This is Edition 1.2.3, last updated 4 February 2018 of 'The Quagga +Manual', for Quagga Version 1.2.3. + + Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions, except that this permission notice may be stated + in a translation approved by Kunihiro Ishiguro. + + +File: quagga.info, Node: Top, Next: Overview, Up: (dir) + +Quagga +****** + +Quagga is an advanced routing software package that provides a suite of +TCP/IP based routing protocols. This is the Manual for Quagga 1.2.3. +Quagga is a fork of GNU Zebra. + + Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions, except that this permission notice may be stated + in a translation approved by Kunihiro Ishiguro. + +* Menu: + +* Overview:: +* Installation:: +* Basic commands:: +* Zebra:: +* RIP:: +* RIPng:: +* OSPFv2:: +* OSPFv3:: +* ISIS:: +* NHRP:: +* BGP:: +* Configuring Quagga as a Route Server:: +* VTY shell:: +* Filtering:: +* Route Map:: +* IPv6 Support:: +* Kernel Interface:: +* SNMP Support:: +* Zebra Protocol:: +* Packet Binary Dump Format:: +* Command Index:: +* VTY Key Index:: +* Index:: + + +File: quagga.info, Node: Overview, Next: Installation, Prev: Top, Up: Top + +1 Overview +********** + +Quagga is a routing software package that provides TCP/IP based routing +services with routing protocols support such as RIPv1, RIPv2, RIPng, +OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+ (*note Supported RFCs::). +Quagga also supports special BGP Route Reflector and Route Server +behavior. In addition to traditional IPv4 routing protocols, Quagga +also supports IPv6 routing protocols. With SNMP daemon which supports +SMUX and AgentX protocol, Quagga provides routing protocol MIBs (*note +SNMP Support::). + + Quagga uses an advanced software architecture to provide you with a +high quality, multi server routing engine. Quagga has an interactive +user interface for each routing protocol and supports common client +commands. Due to this design, you can add new protocol daemons to +Quagga easily. You can use Quagga library as your program's client user +interface. + + Quagga is distributed under the GNU General Public License. + +* Menu: + +* About Quagga:: Basic information about Quagga +* System Architecture:: The Quagga system architecture +* Supported Platforms:: Supported platforms and future plans +* Supported RFCs:: Supported RFCs +* How to get Quagga:: +* Mailing List:: Mailing list information +* Bug Reports:: Mail address for bug data + + +File: quagga.info, Node: About Quagga, Next: System Architecture, Up: Overview + +1.1 About Quagga +================ + +Today, TCP/IP networks are covering all of the world. The Internet has +been deployed in many countries, companies, and to the home. When you +connect to the Internet your packet will pass many routers which have +TCP/IP routing functionality. + + A system with Quagga installed acts as a dedicated router. With +Quagga, your machine exchanges routing information with other routers +using routing protocols. Quagga uses this information to update the +kernel routing table so that the right data goes to the right place. +You can dynamically change the configuration and you may view routing +table information from the Quagga terminal interface. + + Adding to routing protocol support, Quagga can setup interface's +flags, interface's address, static routes and so on. If you have a +small network, or a stub network, or xDSL connection, configuring the +Quagga routing software is very easy. The only thing you have to do is +to set up the interfaces and put a few commands about static routes +and/or default routes. If the network is rather large, or if the +network structure changes frequently, you will want to take advantage of +Quagga's dynamic routing protocol support for protocols such as RIP, +OSPF, IS-IS or BGP. + + Traditionally, UNIX based router configuration is done by 'ifconfig' +and 'route' commands. Status of routing table is displayed by 'netstat' +utility. Almost of these commands work only if the user has root +privileges. Quagga has a different system administration method. There +are two user modes in Quagga. One is normal mode, the other is enable +mode. Normal mode user can only view system status, enable mode user +can change system configuration. This UNIX account independent feature +will be great help to the router administrator. + + Currently, Quagga supports common unicast routing protocols, that is +BGP, OSPF, RIP and IS-IS. Upcoming for MPLS support, an implementation +of LDP is currently being prepared for merging. Implementations of BFD +and PIM-SSM (IPv4) also exist, but are not actively being worked on. + + The ultimate goal of the Quagga project is making a productive, +quality, free TCP/IP routing software package. + + +File: quagga.info, Node: System Architecture, Next: Supported Platforms, Prev: About Quagga, Up: Overview + +1.2 System Architecture +======================= + +Traditional routing software is made as a one process program which +provides all of the routing protocol functionalities. Quagga takes a +different approach. It is made from a collection of several daemons +that work together to build the routing table. There may be several +protocol-specific routing daemons and zebra the kernel routing manager. + + The 'ripd' daemon handles the RIP protocol, while 'ospfd' is a daemon +which supports OSPF version 2. 'bgpd' supports the BGP-4 protocol. For +changing the kernel routing table and for redistribution of routes +between different routing protocols, there is a kernel routing table +manager 'zebra' daemon. It is easy to add a new routing protocol +daemons to the entire routing system without affecting any other +software. You need to run only the protocol daemon associated with +routing protocols in use. Thus, user may run a specific daemon and send +routing reports to a central routing console. + + There is no need for these daemons to be running on the same machine. +You can even run several same protocol daemons on the same machine. +This architecture creates new possibilities for the routing system. + + +----+ +----+ +-----+ +-----+ + |bgpd| |ripd| |ospfd| |zebra| + +----+ +----+ +-----+ +-----+ + | + +---------------------------|--+ + | v | + | UNIX Kernel routing table | + | | + +------------------------------+ + + Quagga System Architecture + + Multi-process architecture brings extensibility, modularity and +maintainability. At the same time it also brings many configuration +files and terminal interfaces. Each daemon has it's own configuration +file and terminal interface. When you configure a static route, it must +be done in 'zebra' configuration file. When you configure BGP network +it must be done in 'bgpd' configuration file. This can be a very +annoying thing. To resolve the problem, Quagga provides integrated user +interface shell called 'vtysh'. 'vtysh' connects to each daemon with +UNIX domain socket and then works as a proxy for user input. + + Quagga was planned to use multi-threaded mechanism when it runs with +a kernel that supports multi-threads. But at the moment, the thread +library which comes with GNU/Linux or FreeBSD has some problems with +running reliable services such as routing software, so we don't use +threads at all. Instead we use the 'select(2)' system call for +multiplexing the events. + + +File: quagga.info, Node: Supported Platforms, Next: Supported RFCs, Prev: System Architecture, Up: Overview + +1.3 Supported Platforms +======================= + +Currently Quagga supports GNU/Linux and BSD. Porting Quagga to other +platforms is not too difficult as platform dependent code should most be +limited to the 'zebra' daemon. Protocol daemons are mostly platform +independent. Please let us know when you find out Quagga runs on a +platform which is not listed below. + + The list of officially supported platforms are listed below. Note +that Quagga may run correctly on other platforms, and may run with +partial functionality on further platforms. + + + * GNU/Linux + * FreeBSD + * NetBSD + * OpenBSD + + Versions of these platforms that are older than around 2 years from +the point of their original release (in case of GNU/Linux, this is since +the kernel's release on kernel.org) may need some work. Similarly, the +following platforms may work with some effort: + + + * Solaris + * Mac OSX + + Also note that, in particular regarding proprietary platforms, +compiler and C library choice will affect Quagga. Only recent versions +of the following C compilers are well-tested: + + + * GNU's GCC + * LLVM's clang + * Intel's ICC + + +File: quagga.info, Node: Supported RFCs, Next: How to get Quagga, Prev: Supported Platforms, Up: Overview + +1.4 Supported RFCs +================== + +Below is the list of currently supported RFC's. + +RFC1058 + 'Routing Information Protocol. C.L. Hedrick. Jun-01-1988.' + +RF2082 + 'RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.' + +RFC2453 + 'RIP Version 2. G. Malkin. November 1998.' + +RFC2080 + 'RIPng for IPv6. G. Malkin, R. Minnear. January 1997.' + +RFC2328 + 'OSPF Version 2. J. Moy. April 1998.' + +RFC2370 + 'The OSPF Opaque LSA Option R. Coltun. July 1998.' + +RFC3101 + 'The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January + 2003.' + +RFC2740 + 'OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.' + +RFC1771 + 'A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March + 1995.' + +RFC1965 + 'Autonomous System Confederations for BGP. P. Traina. June 1996.' + +RFC1997 + 'BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August + 1996.' + +RFC2545 + 'Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain + Routing. P. Marques, F. Dupont. March 1999.' + +RFC2796 + 'BGP Route Reflection An alternative to full mesh IBGP. T. Bates & + R. Chandrasekeran. June 1996.' + +RFC2858 + 'Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. + Chandra, D. Katz. June 2000.' + +RFC2842 + 'Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May + 2000.' + +RFC3137 + 'OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. + Zinin, D. McPherson. June 2001' + + When SNMP support is enabled, below RFC is also supported. + +RFC1227 + 'SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.' + +RFC1657 + 'Definitions of Managed Objects for the Fourth Version of the + Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss, + J. Chu, Editor. July 1994.' + +RFC1724 + 'RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.' + +RFC1850 + 'OSPF Version 2 Management Information Base. F. Baker, R. Coltun. + November 1995.' + +RFC2741 + 'Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. + January 2000.' + + +File: quagga.info, Node: How to get Quagga, Next: Mailing List, Prev: Supported RFCs, Up: Overview + +1.5 How to get Quagga +===================== + +The official Quagga web-site is located at: + + + + and contains further information, as well as links to additional +resources. + + Quagga (http://www.quagga.net/) is a fork of GNU Zebra, whose +web-site is located at: + + . + + +File: quagga.info, Node: Mailing List, Next: Bug Reports, Prev: How to get Quagga, Up: Overview + +1.6 Mailing List +================ + +There is a mailing list for discussions about Quagga. If you have any +comments or suggestions to Quagga, please subscribe to: + + . + + The Quagga site has further information on the available mailing +lists, see: + + + + +File: quagga.info, Node: Bug Reports, Prev: Mailing List, Up: Overview + +1.7 Bug Reports +=============== + +If you think you have found a bug, please send a bug report to: + + + + When you send a bug report, please be careful about the points below. + + * Please note what kind of OS you are using. If you use the IPv6 + stack please note that as well. + * Please show us the results of 'netstat -rn' and 'ifconfig -a'. + Information from zebra's VTY command 'show ip route' will also be + helpful. + * Please send your configuration file with the report. If you + specify arguments to the configure script please note that too. + + Bug reports are very important for us to improve the quality of +Quagga. Quagga is still in the development stage, but please don't +hesitate to send a bug report to . + + +File: quagga.info, Node: Installation, Next: Basic commands, Prev: Overview, Up: Top + +2 Installation +************** + +There are three steps for installing the software: configuration, +compilation, and installation. + +* Menu: + +* Configure the Software:: +* Build the Software:: +* Install the Software:: + + The easiest way to get Quagga running is to issue the following +commands: + + % configure + % make + % make install + + +File: quagga.info, Node: Configure the Software, Next: Build the Software, Up: Installation + +2.1 Configure the Software +========================== + +* Menu: + +* The Configure script and its options:: +* Least-Privilege support:: +* Linux notes:: + + +File: quagga.info, Node: The Configure script and its options, Next: Least-Privilege support, Up: Configure the Software + +2.1.1 The Configure script and its options +------------------------------------------ + +Quagga has an excellent configure script which automatically detects +most host configurations. There are several additional configure +options you can use to turn off IPv6 support, to disable the compilation +of specific daemons, and to enable SNMP support. + +'--disable-ipv6' + Turn off IPv6 related features and daemons. Quagga configure + script automatically detects IPv6 stack. But sometimes you might + want to disable IPv6 support of Quagga. +'--disable-zebra' + Do not build zebra daemon. +'--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-bgpd' + Do not build bgpd. +'--disable-bgp-announce' + Make 'bgpd' which does not make bgp announcements at all. This + feature is good for using 'bgpd' as a BGP announcement listener. +'--enable-netlink' + Force to enable GNU/Linux netlink interface. Quagga configure + script detects netlink interface by checking a header file. When + the header file does not match to the current running kernel, + configure script will not turn on netlink support. +'--enable-snmp' + Enable SNMP support. By default, SNMP support is disabled. +'--disable-opaque-lsa' + Disable support for Opaque LSAs (RFC2370) in ospfd. +'--disable-ospfapi' + Disable support for OSPF-API, an API to interface directly with + ospfd. OSPF-API is enabled if -enable-opaque-lsa is set. +'--disable-ospfclient' + Disable building of the example OSPF-API client. +'--disable-ospf-te' + Disable support for OSPF Traffic Engineering Extension (RFC3630) + this requires support for Opaque LSAs. +'--disable-ospf-ri' + Disable support for OSPF Router Information (RFC4970 & RFC5088) + this requires support for Opaque LSAs and Traffic Engineering. +'--enable-isisd' + Build isisd. +'--enable-isis-topology' + Enable IS-IS topology generator. +'--enable-isis-te' + Enable Traffic Engineering Extension for ISIS (RFC5305) +'--enable-multipath=ARG' + Enable support for Equal Cost Multipath. ARG is the maximum number + of ECMP paths to allow, set to 0 to allow unlimited number of + paths. +'--disable-rtadv' + Disable support IPV6 router advertisement in zebra. +'--enable-gcc-rdynamic' + Pass the '-rdynamic' option to the linker driver. This is in most + cases neccessary for getting usable backtraces. This option + defaults to on if the compiler is detected as gcc, but giving an + explicit enable/disable is suggested. +'--enable-backtrace' + Controls backtrace support for the crash handlers. This is + autodetected by default. Using the switch will enforce the + requested behaviour, failing with an error if support is requested + but not available. On BSD systems, this needs libexecinfo, while + on glibc support for this is part of libc itself. + + You may specify any combination of the above options to the configure +script. By default, the executables are placed in '/usr/local/sbin' and +the configuration files in '/usr/local/etc'. The '/usr/local/' +installation prefix and other directories may be changed using the +following options to the configuration script. + +'--prefix=PREFIX' + Install architecture-independent files in PREFIX [/usr/local]. +'--sysconfdir=DIR' + Look for configuration files in DIR [PREFIX/etc]. Note that sample + configuration files will be installed here. +'--localstatedir=DIR' + Configure zebra to use DIR for local state files, such as pid files + and unix sockets. + + % ./configure --disable-ipv6 + + This command will configure zebra and the routing daemons. + + +File: quagga.info, Node: Least-Privilege support, Next: Linux notes, Prev: The Configure script and its options, Up: Configure the Software + +2.1.2 Least-Privilege support +----------------------------- + +Additionally, you may configure zebra to drop its elevated privileges +shortly after startup and switch to another user. The configure script +will automatically try to configure this support. There are three +configure options to control the behaviour of Quagga daemons. + +'--enable-user=USER' + Switch to user ARG shortly after startup, and run as user ARG in + normal operation. +'--enable-group=GROUP' + Switch real and effective group to GROUP shortly after startup. +'--enable-vty-group=GROUP' + Create Unix Vty sockets (for use with vtysh) with group owndership + set to GROUP. This allows one to create a seperate group which is + restricted to accessing only the Vty sockets, hence allowing one to + delegate this group to individual users, or to run vtysh setgid to + this group. + + The default user and group which will be configured is 'quagga' if no +user or group is specified. Note that this user or group requires write +access to the local state directory (see -localstatedir) and requires at +least read access, and write access if you wish to allow daemons to +write out their configuration, to the configuration directory (see +-sysconfdir). + + On systems which have the 'libcap' capabilities manipulation library +(currently only linux), the quagga system will retain only minimal +capabilities required, further it will only raise these capabilities for +brief periods. On systems without libcap, quagga will run as the user +specified and only raise its uid back to uid 0 for brief periods. + + +File: quagga.info, Node: Linux notes, Prev: Least-Privilege support, Up: Configure the Software + +2.1.3 Linux Notes +----------------- + +There are several options available only to GNU/Linux systems: (1). If +you use GNU/Linux, make sure that the current kernel configuration is +what you want. Quagga will run with any kernel configuration but some +recommendations do exist. + +CONFIG_NETLINK + Kernel/User netlink socket. This is a brand new feature which + enables an advanced interface between the Linux kernel and zebra + (*note Kernel Interface::). + +CONFIG_RTNETLINK + Routing messages. This makes it possible to receive netlink + routing messages. If you specify this option, 'zebra' can detect + routing information updates directly from the kernel (*note Kernel + Interface::). + +CONFIG_IP_MULTICAST + IP: multicasting. This option should be specified when you use + 'ripd' (*note RIP::) or 'ospfd' (*note OSPFv2::) because these + protocols use multicast. + + IPv6 support has been added in GNU/Linux kernel version 2.2. If you +try to use the Quagga IPv6 feature on a GNU/Linux kernel, please make +sure the following libraries have been installed. Please note that +these libraries will not be needed when you uses GNU C library 2.1 or +upper. + +'inet6-apps' + The 'inet6-apps' package includes basic IPv6 related libraries such + as 'inet_ntop' and 'inet_pton'. Some basic IPv6 programs such as + 'ping', 'ftp', and 'inetd' are also included. The 'inet-apps' can + be found at . + +'net-tools' + The 'net-tools' package provides an IPv6 enabled interface and + routing utility. It contains 'ifconfig', 'route', 'netstat', and + other tools. 'net-tools' may be found at + . + + ---------- Footnotes ---------- + + (1) GNU/Linux has very flexible kernel configuration features + + +File: quagga.info, Node: Build the Software, Next: Install the Software, Prev: Configure the Software, Up: Installation + +2.2 Build the Software +====================== + +After configuring the software, you will need to compile it for your +system. Simply issue the command 'make' in the root of the source +directory and the software will be compiled. If you have *any* problems +at this stage, be certain to send a bug report *Note Bug Reports::. + + % ./configure + . + . + . + ./configure output + . + . + . + % make + + +File: quagga.info, Node: Install the Software, Prev: Build the Software, Up: Installation + +2.3 Install the Software +======================== + +Installing the software to your system consists of copying the compiled +programs and supporting files to a standard location. After the +installation process has completed, these files have been copied from +your work directory to '/usr/local/bin', and '/usr/local/etc'. + + To install the Quagga suite, issue the following command at your +shell prompt: 'make install'. + + % + % make install + % + + Quagga daemons have their own terminal interface or VTY. After +installation, you have to setup each beast's port number to connect to +them. Please add the following entries to '/etc/services'. + + zebrasrv 2600/tcp # zebra service + zebra 2601/tcp # zebra vty + ripd 2602/tcp # RIPd vty + ripngd 2603/tcp # RIPngd vty + ospfd 2604/tcp # OSPFd vty + bgpd 2605/tcp # BGPd vty + ospf6d 2606/tcp # OSPF6d vty + ospfapi 2607/tcp # ospfapi + isisd 2608/tcp # ISISd vty + pimd 2611/tcp # PIMd vty + nhrpd 2612/tcp # nhrpd vty + + If you use a FreeBSD newer than 2.2.8, the above entries are already +added to '/etc/services' so there is no need to add it. If you specify +a port number when starting the daemon, these entries may not be needed. + + You may need to make changes to the config files in +'/etc/quagga/*.conf'. *Note Config Commands::. + + +File: quagga.info, Node: Basic commands, Next: Zebra, Prev: Installation, Up: Top + +3 Basic commands +**************** + +There are five routing daemons in use, and there is one manager daemon. +These daemons may be located on separate machines from the manager +daemon. Each of these daemons will listen on a particular port for +incoming VTY connections. The routing daemons are: + + * 'ripd', 'ripngd', 'ospfd', 'ospf6d', 'bgpd' + * 'zebra' + + The following sections discuss commands common to all the routing +daemons. + +* Menu: + +* Config Commands:: Commands used in config files +* Terminal Mode Commands:: Common commands used in a VTY +* Common Invocation Options:: Starting the daemons +* Virtual Terminal Interfaces:: Interacting with the daemons + + +File: quagga.info, Node: Config Commands, Next: Terminal Mode Commands, Up: Basic commands + +3.1 Config Commands +=================== + +* Menu: + +* Basic Config Commands:: Some of the generic config commands +* Sample Config File:: An example config file + +In a config file, you can write the debugging options, a vty's password, +routing daemon configurations, a log file name, and so forth. This +information forms the initial command set for a routing beast as it is +starting. + + Config files are generally found in: + + '/etc/quagga/*.conf' + + Each of the daemons has its own config file. For example, zebra's +default config file name is: + + '/etc/quagga/zebra.conf' + + The daemon name plus '.conf' is the default config file name. You +can specify a config file using the '-f' or '--config-file' options when +starting the daemon. + + +File: quagga.info, Node: Basic Config Commands, Next: Sample Config File, Up: Config Commands + +3.1.1 Basic Config Commands +--------------------------- + + -- Command: hostname HOSTNAME + Set hostname of the router. + + -- Command: password PASSWORD + Set password for vty interface. If there is no password, a vty + won't accept connections. + + -- Command: enable password PASSWORD + Set enable password. + + -- Command: log trap LEVEL + -- Command: no log trap + These commands are deprecated and are present only for historical + compatibility. The log trap command sets the current logging level + for all enabled logging destinations, and it sets the default for + all future logging commands that do not specify a level. The + normal default logging level is debugging. The 'no' form of the + command resets the default level for future logging commands to + debugging, but it does not change the logging level of existing + logging destinations. + + -- Command: log stdout + -- Command: log stdout LEVEL + -- Command: no log stdout + Enable logging output to stdout. If the optional second argument + specifying the logging level is not present, the default logging + level (typically debugging, but can be changed using the deprecated + 'log trap' command) will be used. The 'no' form of the command + disables logging to stdout. The 'level' argument must have one of + these values: emergencies, alerts, critical, errors, warnings, + notifications, informational, or debugging. Note that the existing + code logs its most important messages with severity 'errors'. + + -- Command: log file FILENAME + -- Command: log file FILENAME LEVEL + -- Command: no log file + If you want to log into a file, please specify 'filename' as in + this example: + log file /var/log/quagga/bgpd.log informational + If the optional second argument specifying the logging level is not + present, the default logging level (typically debugging, but can be + changed using the deprecated 'log trap' command) will be used. The + 'no' form of the command disables logging to a file. + + Note: if you do not configure any file logging, and a daemon + crashes due to a signal or an assertion failure, it will attempt to + save the crash information in a file named /var/tmp/quagga..crashlog. For security reasons, this will not happen if the + file exists already, so it is important to delete the file after + reporting the crash information. + + -- Command: log syslog + -- Command: log syslog LEVEL + -- Command: no log syslog + Enable logging output to syslog. If the optional second argument + specifying the logging level is not present, the default logging + level (typically debugging, but can be changed using the deprecated + 'log trap' command) will be used. The 'no' form of the command + disables logging to syslog. + + -- Command: log monitor + -- Command: log monitor LEVEL + -- Command: no log monitor + Enable logging output to vty terminals that have enabled logging + using the 'terminal monitor' command. By default, monitor logging + is enabled at the debugging level, but this command (or the + deprecated 'log trap' command) can be used to change the monitor + logging level. If the optional second argument specifying the + logging level is not present, the default logging level (typically + debugging, but can be changed using the deprecated 'log trap' + command) will be used. The 'no' form of the command disables + logging to terminal monitors. + + -- Command: log facility FACILITY + -- Command: no log facility + This command changes the facility used in syslog messages. The + default facility is 'daemon'. The 'no' form of the command resets + the facility to the default 'daemon' facility. + + -- Command: log record-priority + -- Command: no log record-priority + To include the severity in all messages logged to a file, to + stdout, or to a terminal monitor (i.e. anything except syslog), + use the 'log record-priority' global configuration command. To + disable this option, use the 'no' form of the command. By default, + the severity level is not included in logged messages. Note: some + versions of syslogd (including Solaris) can be configured to + include the facility and level in the messages emitted. + + -- Command: log timestamp precision <0-6> + -- Command: no log timestamp precision + This command sets the precision of log message timestamps to the + given number of digits after the decimal point. Currently, the + value must be in the range 0 to 6 (i.e. the maximum precision is + microseconds). To restore the default behavior (1-second + accuracy), use the 'no' form of the command, or set the precision + explicitly to 0. + + log timestamp precision 3 + + In this example, the precision is set to provide timestamps with + millisecond accuracy. + + -- Command: log commands + This command enables the logging of all commands typed by a user to + all enabled log destinations. The note that logging includes full + command lines, including passwords. Once set, command logging can + only be turned off by restarting the daemon. + + -- Command: service password-encryption + Encrypt password. + + -- Command: service advanced-vty + Enable advanced mode VTY. + + -- Command: service terminal-length <0-512> + Set system wide line configuration. This configuration command + applies to all VTY interfaces. + + -- Command: line vty + Enter vty configuration mode. + + -- Command: banner motd default + Set default motd string. + + -- Command: no banner motd + No motd banner string will be printed. + + -- Line Command: exec-timeout MINUTE + -- Line Command: exec-timeout MINUTE SECOND + Set VTY connection timeout value. When only one argument is + specified it is used for timeout value in minutes. Optional second + argument is used for timeout value in seconds. Default timeout + value is 10 minutes. When timeout value is zero, it means no + timeout. + + -- Line Command: no exec-timeout + Do not perform timeout at all. This command is as same as + 'exec-timeout 0 0'. + + -- Line Command: access-class ACCESS-LIST + Restrict vty connections with an access list. + + +File: quagga.info, Node: Sample Config File, Prev: Basic Config Commands, Up: Config Commands + +3.1.2 Sample Config File +------------------------ + +Below is a sample configuration file for the zebra daemon. + + ! + ! Zebra configuration file + ! + hostname Router + password zebra + enable password zebra + ! + log stdout + ! + ! + + '!' and '#' are comment characters. If the first character of the +word is one of the comment characters then from the rest of the line +forward will be ignored as a comment. + + password zebra!password + + If a comment character is not the first character of the word, it's a +normal character. So in the above example '!' will not be regarded as +a comment and the password is set to 'zebra!password'. + + +File: quagga.info, Node: Terminal Mode Commands, Next: Common Invocation Options, Prev: Config Commands, Up: Basic commands + +3.2 Terminal Mode Commands +========================== + + -- Command: write terminal + Displays the current configuration to the vty interface. + + -- Command: write file + Write current configuration to configuration file. + + -- Command: configure terminal + Change to configuration mode. This command is the first step to + configuration. + + -- Command: terminal length <0-512> + Set terminal display length to <0-512>. If length is 0, no display + control is performed. + + -- Command: who + Show a list of currently connected vty sessions. + + -- Command: list + List all available commands. + + -- Command: show version + Show the current version of Quagga and its build host information. + + -- Command: show logging + Shows the current configuration of the logging system. This + includes the status of all logging destinations. + + -- Command: logmsg LEVEL MESSAGE + Send a message to all logging destinations that are enabled for + messages of the given severity. + + +File: quagga.info, Node: Common Invocation Options, Next: Virtual Terminal Interfaces, Prev: Terminal Mode Commands, Up: Basic commands + +3.3 Common Invocation Options +============================= + +These options apply to all Quagga daemons. + +'-d' +'--daemon' + Runs in daemon mode. + +'-f FILE' +'--config_file=FILE' + Set configuration file name. + +'-h' +'--help' + Display this help and exit. + +'-i FILE' +'--pid_file=FILE' + + Upon startup the process identifier of the daemon is written to a + file, typically in '/var/run'. This file can be used by the init + system to implement commands such as '.../init.d/zebra status', + '.../init.d/zebra restart' or '.../init.d/zebra stop'. + + The file name is an run-time option rather than a configure-time + option so that multiple routing daemons can be run simultaneously. + This is useful when using Quagga to implement a routing looking + glass. One machine can be used to collect differing routing views + from differing points in the network. + +'-A ADDRESS' +'--vty_addr=ADDRESS' + Set the VTY local address to bind to. If set, the VTY socket will + only be bound to this address. + +'-P PORT' +'--vty_port=PORT' + Set the VTY TCP port number. If set to 0 then the TCP VTY sockets + will not be opened. + +'-u USER' +'--vty_addr=USER' + Set the user and group to run as. + +'-v' +'--version' + Print program version. + + +File: quagga.info, Node: Virtual Terminal Interfaces, Prev: Common Invocation Options, Up: Basic commands + +3.4 Virtual Terminal Interfaces +=============================== + +VTY - Virtual Terminal [aka TeletYpe] Interface is a command line +interface (CLI) for user interaction with the routing daemon. + +* Menu: + +* VTY Overview:: Basics about VTYs +* VTY Modes:: View, Enable, and Other VTY modes +* VTY CLI Commands:: Commands for movement, edition, and management + + +File: quagga.info, Node: VTY Overview, Next: VTY Modes, Up: Virtual Terminal Interfaces + +3.4.1 VTY Overview +------------------ + +VTY stands for Virtual TeletYpe interface. It means you can connect to +the daemon via the telnet protocol. + + To enable a VTY interface, you have to setup a VTY password. If +there is no VTY password, one cannot connect to the VTY interface at +all. + + % telnet localhost 2601 + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + + Hello, this is Quagga (version 1.2.3) + Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + User Access Verification + + Password: XXXXX + Router> ? + enable Turn on privileged commands + exit Exit current mode and down to previous mode + help Description of the interactive help system + list Print command list + show Show running system information + who Display who is on a vty + Router> enable + Password: XXXXX + Router# configure terminal + Router(config)# interface eth0 + Router(config-if)# ip address 10.0.0.1/8 + Router(config-if)# ^Z + Router# + + '?' is very useful for looking up commands. + + +File: quagga.info, Node: VTY Modes, Next: VTY CLI Commands, Prev: VTY Overview, Up: Virtual Terminal Interfaces + +3.4.2 VTY Modes +--------------- + +There are three basic VTY modes: + +* Menu: + +* VTY View Mode:: Mode for read-only interaction +* VTY Enable Mode:: Mode for read-write interaction +* VTY Other Modes:: Special modes (tftp, etc) + + There are commands that may be restricted to specific VTY modes. + + +File: quagga.info, Node: VTY View Mode, Next: VTY Enable Mode, Up: VTY Modes + +3.4.2.1 VTY View Mode +..................... + +This mode is for read-only access to the CLI. One may exit the mode by +leaving the system, or by entering 'enable' mode. + + +File: quagga.info, Node: VTY Enable Mode, Next: VTY Other Modes, Prev: VTY View Mode, Up: VTY Modes + +3.4.2.2 VTY Enable Mode +....................... + +This mode is for read-write access to the CLI. One may exit the mode by +leaving the system, or by escaping to view mode. + + +File: quagga.info, Node: VTY Other Modes, Prev: VTY Enable Mode, Up: VTY Modes + +3.4.2.3 VTY Other Modes +....................... + +This page is for describing other modes. + + +File: quagga.info, Node: VTY CLI Commands, Prev: VTY Modes, Up: Virtual Terminal Interfaces + +3.4.3 VTY CLI Commands +---------------------- + +Commands that you may use at the command-line are described in the +following three subsubsections. + +* Menu: + +* CLI Movement Commands:: Commands for moving the cursor about +* CLI Editing Commands:: Commands for changing text +* CLI Advanced Commands:: Other commands, session management and so on + + +File: quagga.info, Node: CLI Movement Commands, Next: CLI Editing Commands, Up: VTY CLI Commands + +3.4.3.1 CLI Movement Commands +............................. + +These commands are used for moving the CLI cursor. The character +means press the Control Key. + +'C-f' +'' + Move forward one character. + +'C-b' +'' + Move backward one character. + +'M-f' + Move forward one word. + +'M-b' + Move backward one word. + +'C-a' + Move to the beginning of the line. + +'C-e' + Move to the end of the line. + + +File: quagga.info, Node: CLI Editing Commands, Next: CLI Advanced Commands, Prev: CLI Movement Commands, Up: VTY CLI Commands + +3.4.3.2 CLI Editing Commands +............................ + +These commands are used for editing text on a line. The character +means press the Control Key. + +'C-h' +'' + Delete the character before point. + +'C-d' + Delete the character after point. + +'M-d' + Forward kill word. + +'C-w' + Backward kill word. + +'C-k' + Kill to the end of the line. + +'C-u' + Kill line from the beginning, erasing input. + +'C-t' + Transpose character. + +'C-v' + Interpret following character literally. Do not treat it + specially. This can be used to, e.g., type in a literal '?' rather + than do help completion. + + +File: quagga.info, Node: CLI Advanced Commands, Prev: CLI Editing Commands, Up: VTY CLI Commands + +3.4.3.3 CLI Advanced Commands +............................. + +There are several additional CLI commands for command line completions, +insta-help, and VTY session management. + +'C-c' + Interrupt current input and moves to the next line. + +'C-z' + End current configuration session and move to top node. + +'C-n' +'' + Move down to next line in the history buffer. + +'C-p' +'' + Move up to previous line in the history buffer. + +'TAB' + Use command line completion by typing . + +'?' + You can use command line help by typing 'help' at the beginning of + the line. Typing '?' at any point in the line will show possible + completions. + + To enter an actual '?' character rather show completions, e.g. to + enter into a regexp, use '-v ?'. + + +File: quagga.info, Node: Zebra, Next: RIP, Prev: Basic commands, Up: Top + +4 Zebra +******* + +'zebra' is an IP routing manager. It provides kernel routing table +updates, interface lookups, and redistribution of routes between +different routing protocols. + +* Menu: + +* Invoking zebra:: Running the program +* Interface Commands:: Commands for zebra interfaces +* Static Route Commands:: Commands for adding static routes +* Multicast RIB Commands:: Commands for controlling MRIB behavior +* zebra Route Filtering:: Commands for zebra route filtering +* zebra FIB push interface:: Interface to optional FPM component +* zebra Terminal Mode Commands:: Commands for zebra's VTY + + +File: quagga.info, Node: Invoking zebra, Next: Interface Commands, Up: Zebra + +4.1 Invoking zebra +================== + +Besides the common invocation options (*note Common Invocation +Options::), the 'zebra' specific invocation options are listed below. + +'-b' +'--batch' + Runs in batch mode. 'zebra' parses configuration file and + terminates immediately. + +'-k' +'--keep_kernel' + When zebra starts up, don't delete old self inserted routes. + +'-r' +'--retain' + When program terminates, retain routes added by zebra. + + +File: quagga.info, Node: Interface Commands, Next: Static Route Commands, Prev: Invoking zebra, Up: Zebra + +4.2 Interface Commands +====================== + +* Menu: + +* Standard Commands:: +* Link Parameters Commands:: + + +File: quagga.info, Node: Standard Commands, Next: Link Parameters Commands, Up: Interface Commands + +4.2.1 Standard Commands +----------------------- + + -- Command: interface IFNAME + + -- Interface Command: shutdown + -- Interface Command: no shutdown + Up or down the current interface. + + -- Interface Command: ip address ADDRESS/PREFIX + -- Interface Command: ipv6 address ADDRESS/PREFIX + -- Interface Command: no ip address ADDRESS/PREFIX + -- Interface Command: no ipv6 address ADDRESS/PREFIX + Set the IPv4 or IPv6 address/prefix for the interface. + + -- Interface Command: ip address ADDRESS/PREFIX secondary + -- Interface Command: no ip address ADDRESS/PREFIX secondary + Set the secondary flag for this address. This causes ospfd to not + treat the address as a distinct subnet. + + -- Interface Command: description DESCRIPTION ... + Set description for the interface. + + -- Interface Command: multicast + -- Interface Command: no multicast + Enable or disables multicast flag for the interface. + + -- Interface Command: bandwidth <1-10000000> + -- Interface Command: no bandwidth <1-10000000> + Set bandwidth value of the interface in kilobits/sec. This is for + calculating OSPF cost. This command does not affect the actual + device configuration. + + -- Interface Command: link-detect + -- Interface Command: no link-detect + Enable/disable link-detect on platforms which support this. + Currently only Linux and Solaris, and only where network interface + drivers support reporting link-state via the IFF_RUNNING flag. + + +File: quagga.info, Node: Link Parameters Commands, Prev: Standard Commands, Up: Interface Commands + +4.2.2 Link Parameters Commands +------------------------------ + + -- Interface Command: link-params + -- Interface Command: no link-param + Enter into the link parameters sub node. At least 'enable' must be + set to activate the link parameters, and consequently Traffic + Engineering on this interface. MPLS-TE must be enable at the OSPF + (*note OSPF Traffic Engineering::) or ISIS (*note ISIS Traffic + Engineering::) router level in complement to this. Disable link + parameters for this interface. + + Under link parameter statement, the following commands set the +different TE values: + + -- link-params: enable + Enable link parameters for this interface. + + -- link-params: metric <0-4294967295> + -- link-params: max-bw BANDWIDTH + -- link-params: max-rsv-bw BANDWIDTH + -- link-params: unrsv-bw <0-7> BANDWIDTH + -- link-params: admin-grp BANDWIDTH + These commands specifies the Traffic Engineering parameters of the + interface in conformity to RFC3630 (OSPF) or RFC5305 (ISIS). There + are respectively the TE Metric (different from the OSPF or ISIS + metric), Maximum Bandwidth (interface speed by default), Maximum + Reservable Bandwidth, Unreserved Bandwidth for each 0-7 priority + and Admin Group (ISIS) or Resource Class/Color (OSPF). + + Note that BANDWIDTH are specified in IEEE floating point format and + express in Bytes/second. + + -- link-param: delay <0-16777215> [min <0-16777215> | max <0-16777215>] + -- link-param: delay-variation <0-16777215> + -- link-param: packet-loss PERCENTAGE + -- link-param: res-bw BANDWIDTH + -- link-param: ava-bw BANDWIDTH + -- link-param: use-bw BANDWIDTH + These command specifies additionnal Traffic Engineering parameters + of the interface in conformity to + draft-ietf-ospf-te-metrics-extension-05.txt and + draft-ietf-isis-te-metrics-extension-03.txt. There are + respectively the delay, jitter, loss, available bandwidth, + reservable bandwidth and utilized bandwidth. + + Note that BANDWIDTH are specified in IEEE floating point format and + express in Bytes/second. Delays and delay variation are express in + micro-second (µs). Loss is specified in PERCENTAGE ranging from 0 + to 50.331642% by step of 0.000003. + + -- link-param: neighbor as <0-65535> + -- link-param: no neighbor + Specifies the remote ASBR IP address and Autonomous System (AS) + number for InterASv2 link in OSPF (RFC5392). Note that this option + is not yet supported for ISIS (RFC5316). + + +File: quagga.info, Node: Static Route Commands, Next: Multicast RIB Commands, Prev: Interface Commands, Up: Zebra + +4.3 Static Route Commands +========================= + +Static routing is a very fundamental feature of routing technology. It +defines static prefix and gateway. + + -- Command: ip route NETWORK GATEWAY + NETWORK is destination prefix with format of A.B.C.D/M. GATEWAY is + gateway for the prefix. When GATEWAY is A.B.C.D format. It is + taken as a IPv4 address gateway. Otherwise it is treated as an + interface name. If the interface name is NULL0 then zebra installs + a blackhole route. + + ip route 10.0.0.0/8 10.0.0.2 + ip route 10.0.0.0/8 ppp0 + ip route 10.0.0.0/8 null0 + + First example defines 10.0.0.0/8 static route with gateway + 10.0.0.2. Second one defines the same prefix but with gateway to + interface ppp0. The third install a blackhole route. + + -- Command: ip route NETWORK NETMASK GATEWAY + This is alternate version of above command. When NETWORK is + A.B.C.D format, user must define NETMASK value with A.B.C.D format. + GATEWAY is same option as above command + + ip route 10.0.0.0 255.0.0.0 10.0.0.2 + ip route 10.0.0.0 255.0.0.0 ppp0 + ip route 10.0.0.0 255.0.0.0 null0 + + These statements are equivalent to those in the previous example. + + -- Command: ip route NETWORK GATEWAY DISTANCE + Installs the route with the specified distance. + + Multiple nexthop static route + + ip route 10.0.0.1/32 10.0.0.2 + ip route 10.0.0.1/32 10.0.0.3 + ip route 10.0.0.1/32 eth0 + + If there is no route to 10.0.0.2 and 10.0.0.3, and interface eth0 is +reachable, then the last route is installed into the kernel. + + If zebra has been compiled with multipath support, and both 10.0.0.2 +and 10.0.0.3 are reachable, zebra will install a multipath route via +both nexthops, if the platform supports this. + + zebra> show ip route + S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive + via 10.0.0.3 inactive + * is directly connected, eth0 + + ip route 10.0.0.0/8 10.0.0.2 + ip route 10.0.0.0/8 10.0.0.3 + ip route 10.0.0.0/8 null0 255 + + This will install a multihop route via the specified next-hops if +they are reachable, as well as a high-metric blackhole route, which can +be useful to prevent traffic destined for a prefix to match +less-specific routes (eg default) should the specified gateways not be +reachable. Eg: + + zebra> show ip route 10.0.0.0/8 + Routing entry for 10.0.0.0/8 + Known via "static", distance 1, metric 0 + 10.0.0.2 inactive + 10.0.0.3 inactive + + Routing entry for 10.0.0.0/8 + Known via "static", distance 255, metric 0 + directly connected, Null0 + + -- Command: ipv6 route NETWORK GATEWAY + -- Command: ipv6 route NETWORK GATEWAY DISTANCE + These behave similarly to their ipv4 counterparts. + + -- Command: table TABLENO + Select the primary kernel routing table to be used. This only + works for kernels supporting multiple routing tables (like + GNU/Linux 2.2.x and later). After setting TABLENO with this + command, static routes defined after this are added to the + specified table. + + +File: quagga.info, Node: Multicast RIB Commands, Next: zebra Route Filtering, Prev: Static Route Commands, Up: Zebra + +4.4 Multicast RIB Commands +========================== + +The Multicast RIB provides a separate table of unicast destinations +which is used for Multicast Reverse Path Forwarding decisions. It is +used with a multicast source's IP address, hence contains not multicast +group addresses but unicast addresses. + + This table is fully separate from the default unicast table. +However, RPF lookup can include the unicast table. + + WARNING: RPF lookup results are non-responsive in this version of +Quagga, i.e. multicast routing does not actively react to changes in +underlying unicast topology! + + -- Command: ip multicast rpf-lookup-mode MODE + -- Command: no ip multicast rpf-lookup-mode [MODE] + + MODE sets the method used to perform RPF lookups. Supported modes: + + 'urib-only' + Performs the lookup on the Unicast RIB. The Multicast RIB is + never used. + 'mrib-only' + Performs the lookup on the Multicast RIB. The Unicast RIB is + never used. + 'mrib-then-urib' + Tries to perform the lookup on the Multicast RIB. If any route + is found, that route is used. Otherwise, the Unicast RIB is + tried. + 'lower-distance' + Performs a lookup on the Multicast RIB and Unicast RIB each. + The result with the lower administrative distance is used; if + they're equal, the Multicast RIB takes precedence. + 'longer-prefix' + Performs a lookup on the Multicast RIB and Unicast RIB each. + The result with the longer prefix length is used; if they're + equal, the Multicast RIB takes precedence. + + The 'mrib-then-urib' setting is the default behavior if nothing is + configured. If this is the desired behavior, it should be + explicitly configured to make the configuration immune against + possible changes in what the default behavior is. + + WARNING: Unreachable routes do not receive special treatment and do + not cause fallback to a second lookup. + + -- Command: show ip rpf ADDR + + Performs a Multicast RPF lookup, as configured with 'ip multicast + rpf-lookup-mode MODE'. ADDR specifies the multicast source address + to look up. + + > show ip rpf 192.0.2.1 + Routing entry for 192.0.2.0/24 using Unicast RIB + Known via "kernel", distance 0, metric 0, best + * 198.51.100.1, via eth0 + + Indicates that a multicast source lookup for 192.0.2.1 would use an + Unicast RIB entry for 192.0.2.0/24 with a gateway of 198.51.100.1. + + -- Command: show ip rpf + + Prints the entire Multicast RIB. Note that this is independent of + the configured RPF lookup mode, the Multicast RIB may be printed + yet not used at all. + + -- Command: ip mroute PREFIX NEXTHOP [DISTANCE] + -- Command: no ip mroute PREFIX NEXTHOP [DISTANCE] + + Adds a static route entry to the Multicast RIB. This performs + exactly as the 'ip route' command, except that it inserts the route + in the Multicast RIB instead of the Unicast RIB. + + +File: quagga.info, Node: zebra Route Filtering, Next: zebra FIB push interface, Prev: Multicast RIB Commands, Up: Zebra + +4.5 zebra Route Filtering +========================= + +Zebra supports 'prefix-list' and 'route-map' to match routes received +from other quagga components. The 'permit'/'deny' facilities provided +by these commands can be used to filter which routes zebra will install +in the kernel. + + -- Command: ip protocol PROTOCOL route-map ROUTEMAP + Apply a route-map filter to routes for the specified protocol. + PROTOCOL can be any or one of system, kernel, connected, static, + rip, ripng, ospf, ospf6, isis, bgp, hsls. + + -- Route Map: set src ADDRESS + Within a route-map, set the preferred source address for matching + routes when installing in the kernel. + + The following creates a prefix-list that matches all addresses, a +route-map that sets the preferred source address, and applies the +route-map to all 'rip' routes. + + ip prefix-list ANY permit 0.0.0.0/0 le 32 + route-map RM1 permit 10 + match ip address prefix-list ANY + set src 10.0.0.1 + + ip protocol rip route-map RM1 + + +File: quagga.info, Node: zebra FIB push interface, Next: zebra Terminal Mode Commands, Prev: zebra Route Filtering, Up: Zebra + +4.6 zebra FIB push interface +============================ + +Zebra supports a 'FIB push' interface that allows an external component +to learn the forwarding information computed by the Quagga routing +suite. + + In Quagga, the Routing Information Base (RIB) resides inside zebra. +Routing protocols communicate their best routes to zebra, and zebra +computes the best route across protocols for each prefix. This latter +information makes up the Forwarding Information Base (FIB). Zebra feeds +the FIB to the kernel, which allows the IP stack in the kernel to +forward packets according to the routes computed by Quagga. The kernel +FIB is updated in an OS-specific way. For example, the 'netlink' +interface is used on Linux, and route sockets are used on FreeBSD. + + The FIB push interface aims to provide a cross-platform mechanism to +support scenarios where the router has a forwarding path that is +distinct from the kernel, commonly a hardware-based fast path. In these +cases, the FIB needs to be maintained reliably in the fast path as well. +We refer to the component that programs the forwarding plane (directly +or indirectly) as the Forwarding Plane Manager or FPM. + + The FIB push interface comprises of a TCP connection between zebra +and the FPM. The connection is initiated by zebra - that is, the FPM +acts as the TCP server. + + The relevant zebra code kicks in when zebra is configured with the +'--enable-fpm' flag. Zebra periodically attempts to connect to the +well-known FPM port. Once the connection is up, zebra starts sending +messages containing routes over the socket to the FPM. Zebra sends a +complete copy of the forwarding table to the FPM, including routes that +it may have picked up from the kernel. The existing interaction of +zebra with the kernel remains unchanged - that is, the kernel continues +to receive FIB updates as before. + + The encapsulation header for the messages exchanged with the FPM is +defined by the file 'fpm/fpm.h' in the quagga tree. The routes +themselves are encoded in netlink or protobuf format, with netlink being +the default. + + Protobuf is one of a number of new serialization formats wherein the +message schema is expressed in a purpose-built language. Code for +encoding/decoding to/from the wire format is generated from the schema. +Protobuf messages can be extended easily while maintaining +backward-compatibility with older code. Protobuf has the following +advantages over netlink: + + * Code for serialization/deserialization is generated automatically. + This reduces the likelihood of bugs, allows third-party programs to + be integrated quickly, and makes it easy to add fields. + * The message format is not tied to an OS (Linux), and can be evolved + independently. + + As mentioned before, zebra encodes routes sent to the FPM in netlink +format by default. The format can be controlled via the '--fpm_format' +command-line option to zebra, which currently takes the values 'netlink' +and 'protobuf'. + + The zebra FPM interface uses replace semantics. That is, if a 'route +add' message for a prefix is followed by another 'route add' message, +the information in the second message is complete by itself, and +replaces the information sent in the first message. + + If the connection to the FPM goes down for some reason, zebra sends +the FPM a complete copy of the forwarding table(s) when it reconnects. + + +File: quagga.info, Node: zebra Terminal Mode Commands, Prev: zebra FIB push interface, Up: Zebra + +4.7 zebra Terminal Mode Commands +================================ + + -- Command: show ip route + Display current routes which zebra holds in its database. + + Router# show ip route + Codes: K - kernel route, C - connected, S - static, R - RIP, + B - BGP * - FIB route. + + K* 0.0.0.0/0 203.181.89.241 + S 0.0.0.0/0 203.181.89.1 + C* 127.0.0.0/8 lo + C* 203.181.89.240/28 eth0 + + -- Command: show ipv6 route + + -- Command: show interface + + -- Command: show ip prefix-list [NAME] + + -- Command: show route-map [NAME] + + -- Command: show ip protocol + + -- Command: show ipforward + Display whether the host's IP forwarding function is enabled or + not. Almost any UNIX kernel can be configured with IP forwarding + disabled. If so, the box can't work as a router. + + -- Command: show ipv6forward + Display whether the host's IP v6 forwarding is enabled or not. + + -- Command: show zebra fpm stats + Display statistics related to the zebra code that interacts with + the optional Forwarding Plane Manager (FPM) component. + + -- Command: clear zebra fpm stats + Reset statistics related to the zebra code that interacts with the + optional Forwarding Plane Manager (FPM) component. + + +File: quagga.info, Node: RIP, Next: RIPng, Prev: Zebra, Up: Top + +5 RIP +***** + +RIP - Routing Information Protocol is widely deployed interior gateway +protocol. RIP was developed in the 1970s at Xerox Labs as part of the +XNS routing protocol. RIP is a "distance-vector" protocol and is based +on the "Bellman-Ford" algorithms. As a distance-vector protocol, RIP +router send updates to its neighbors periodically, thus allowing the +convergence to a known topology. In each update, the distance to any +given network will be broadcasted to its neighboring router. + + 'ripd' supports RIP version 2 as described in RFC2453 and RIP version +1 as described in RFC1058. + +* Menu: + +* Starting and Stopping ripd:: +* RIP Configuration:: +* RIP Version Control:: +* How to Announce RIP route:: +* Filtering RIP Routes:: +* RIP Metric Manipulation:: +* RIP distance:: +* RIP route-map:: +* RIP Authentication:: +* RIP Timers:: +* Show RIP Information:: +* RIP Debug Commands:: + + +File: quagga.info, Node: Starting and Stopping ripd, Next: RIP Configuration, Up: RIP + +5.1 Starting and Stopping ripd +============================== + +The default configuration file name of 'ripd''s is 'ripd.conf'. When +invocation 'ripd' searches directory /etc/quagga. If 'ripd.conf' is not +there next search current directory. + + RIP uses UDP port 520 to send and receive RIP packets. So the user +must have the capability to bind the port, generally this means that the +user must have superuser privileges. RIP protocol requires interface +information maintained by 'zebra' daemon. So running 'zebra' is +mandatory to run 'ripd'. Thus minimum sequence for running RIP is like +below: + + # zebra -d + # ripd -d + + Please note that 'zebra' must be invoked before 'ripd'. + + To stop 'ripd'. Please use 'kill `cat /var/run/ripd.pid`'. Certain +signals have special meaningss to 'ripd'. + +'SIGHUP' + Reload configuration file 'ripd.conf'. All configurations are + reseted. All routes learned so far are cleared and removed from + routing table. +'SIGUSR1' + Rotate 'ripd' logfile. +'SIGINT' +'SIGTERM' + 'ripd' sweeps all installed RIP routes then terminates properly. + + 'ripd' invocation options. Common options that can be specified +(*note Common Invocation Options::). + +'-r' +'--retain' + When the program terminates, retain routes added by 'ripd'. + +* Menu: + +* RIP netmask:: + + +File: quagga.info, Node: RIP netmask, Up: Starting and Stopping ripd + +5.1.1 RIP netmask +----------------- + +The netmask features of 'ripd' support both version 1 and version 2 of +RIP. Version 1 of RIP originally contained no netmask information. In +RIP version 1, network classes were originally used to determine the +size of the netmask. Class A networks use 8 bits of mask, Class B +networks use 16 bits of masks, while Class C networks use 24 bits of +mask. Today, the most widely used method of a network mask is assigned +to the packet on the basis of the interface that received the packet. +Version 2 of RIP supports a variable length subnet mask (VLSM). By +extending the subnet mask, the mask can be divided and reused. Each +subnet can be used for different purposes such as large to middle size +LANs and WAN links. Quagga 'ripd' does not support the non-sequential +netmasks that are included in RIP Version 2. + + In a case of similar information with the same prefix and metric, the +old information will be suppressed. Ripd does not currently support +equal cost multipath routing. + + +File: quagga.info, Node: RIP Configuration, Next: RIP Version Control, Prev: Starting and Stopping ripd, Up: RIP + +5.2 RIP Configuration +===================== + + -- Command: router rip + The 'router rip' command is necessary to enable RIP. To disable + RIP, use the 'no router rip' command. RIP must be enabled before + carrying out any of the RIP commands. + + -- Command: no router rip + Disable RIP. + + -- RIP Command: network NETWORK + -- RIP Command: no network NETWORK + Set the RIP enable interface by NETWORK. The interfaces which have + addresses matching with NETWORK are enabled. + + This group of commands either enables or disables RIP interfaces + between certain numbers of a specified network address. For + example, if the network for 10.0.0.0/24 is RIP enabled, this would + result in all the addresses from 10.0.0.0 to 10.0.0.255 being + enabled for RIP. The 'no network' command will disable RIP for the + specified network. + + -- RIP Command: network IFNAME + -- RIP Command: no network IFNAME + Set a RIP enabled interface by IFNAME. Both the sending and + receiving of RIP packets will be enabled on the port specified in + the 'network ifname' command. The 'no network ifname' command will + disable RIP on the specified interface. + + -- RIP Command: neighbor A.B.C.D + -- RIP Command: no neighbor A.B.C.D + Specify RIP neighbor. When a neighbor doesn't understand + multicast, this command is used to specify neighbors. In some + cases, not all routers will be able to understand multicasting, + where packets are sent to a network or a group of addresses. In a + situation where a neighbor cannot process multicast packets, it is + necessary to establish a direct link between routers. The neighbor + command allows the network administrator to specify a router as a + RIP neighbor. The 'no neighbor a.b.c.d' command will disable the + RIP neighbor. + + Below is very simple RIP configuration. Interface 'eth0' and +interface which address match to '10.0.0.0/8' are RIP enabled. + + ! + router rip + network 10.0.0.0/8 + network eth0 + ! + + Passive interface + + -- RIP command: passive-interface (IFNAME|default) + -- RIP command: no passive-interface IFNAME + This command sets the specified interface to passive mode. On + passive mode interface, all receiving packets are processed as + normal and ripd does not send either multicast or unicast RIP + packets except to RIP neighbors specified with 'neighbor' command. + The interface may be specified as DEFAULT to make ripd default to + passive on all interfaces. + + The default is to be passive on all interfaces. + + RIP split-horizon + + -- Interface command: ip split-horizon + -- Interface command: no ip split-horizon + Control split-horizon on the interface. Default is 'ip + split-horizon'. If you don't perform split-horizon on the + interface, please specify 'no ip split-horizon'. + + +File: quagga.info, Node: RIP Version Control, Next: How to Announce RIP route, Prev: RIP Configuration, Up: RIP + +5.3 RIP Version Control +======================= + +RIP can be configured to send either Version 1 or Version 2 packets. +The default is to send RIPv2 while accepting both RIPv1 and RIPv2 (and +replying with packets of the appropriate version for REQUESTS / +triggered updates). The version to receive and send can be specified +globally, and further overriden on a per-interface basis if needs be for +send and receive seperately (see below). + + It is important to note that RIPv1 can not be authenticated. +Further, if RIPv1 is enabled then RIP will reply to REQUEST packets, +sending the state of its RIP routing table to any remote routers that +ask on demand. For a more detailed discussion on the security +implications of RIPv1 see *note RIP Authentication::. + + -- RIP Command: version VERSION + Set RIP version to accept for reads and send. VERSION can be + either '1" or '2". + + Disabling RIPv1 by specifying version 2 is STRONGLY encouraged, + *Note RIP Authentication::. This may become the default in a + future release. + + Default: Send Version 2, and accept either version. + + -- RIP Command: no version + Reset the global version setting back to the default. + + -- Interface command: ip rip send version VERSION + VERSION can be '1', '2' or '1 2'. + + This interface command overrides the global rip version setting, + and selects which version of RIP to send packets with, for this + interface specifically. Choice of RIP Version 1, RIP Version 2, or + both versions. In the latter case, where '1 2' is specified, + packets will be both broadcast and multicast. + + Default: Send packets according to the global version (version 2) + + -- Interface command: ip rip receive version VERSION + VERSION can be '1', '2' or '1 2'. + + This interface command overrides the global rip version setting, + and selects which versions of RIP packets will be accepted on this + interface. Choice of RIP Version 1, RIP Version 2, or both. + + Default: Accept packets according to the global setting (both 1 and + 2). + + +File: quagga.info, Node: How to Announce RIP route, Next: Filtering RIP Routes, Prev: RIP Version Control, Up: RIP + +5.4 How to Announce RIP route +============================= + + -- RIP command: redistribute kernel + -- RIP command: redistribute kernel metric <0-16> + -- RIP command: redistribute kernel route-map ROUTE-MAP + -- RIP command: no redistribute kernel + 'redistribute kernel' redistributes routing information from kernel + route entries into the RIP tables. 'no redistribute kernel' + disables the routes. + + -- RIP command: redistribute static + -- RIP command: redistribute static metric <0-16> + -- RIP command: redistribute static route-map ROUTE-MAP + -- RIP command: no redistribute static + 'redistribute static' redistributes routing information from static + route entries into the RIP tables. 'no redistribute static' + disables the routes. + + -- RIP command: redistribute connected + -- RIP command: redistribute connected metric <0-16> + -- RIP command: redistribute connected route-map ROUTE-MAP + -- RIP command: no redistribute connected + Redistribute connected routes into the RIP tables. 'no + redistribute connected' disables the connected routes in the RIP + tables. This command redistribute connected of the interface which + RIP disabled. The connected route on RIP enabled interface is + announced by default. + + -- RIP command: redistribute ospf + -- RIP command: redistribute ospf metric <0-16> + -- RIP command: redistribute ospf route-map ROUTE-MAP + -- RIP command: no redistribute ospf + 'redistribute ospf' redistributes routing information from ospf + route entries into the RIP tables. 'no redistribute ospf' disables + the routes. + + -- RIP command: redistribute bgp + -- RIP command: redistribute bgp metric <0-16> + -- RIP command: redistribute bgp route-map ROUTE-MAP + -- RIP command: no redistribute bgp + 'redistribute bgp' redistributes routing information from bgp route + entries into the RIP tables. 'no redistribute bgp' disables the + routes. + + If you want to specify RIP only static routes: + + -- RIP command: default-information originate + + -- RIP command: route A.B.C.D/M + -- RIP command: no route A.B.C.D/M + This command is specific to Quagga. The 'route' command makes a + static route only inside RIP. This command should be used only by + advanced users who are particularly knowledgeable about the RIP + protocol. In most cases, we recommend creating a static route in + Quagga and redistributing it in RIP using 'redistribute static'. + + +File: quagga.info, Node: Filtering RIP Routes, Next: RIP Metric Manipulation, Prev: How to Announce RIP route, Up: RIP + +5.5 Filtering RIP Routes +======================== + +RIP routes can be filtered by a distribute-list. + + -- Command: distribute-list ACCESS_LIST DIRECT IFNAME + You can apply access lists to the interface with a + 'distribute-list' command. ACCESS_LIST is the access list name. + DIRECT is 'in' or 'out'. If DIRECT is 'in' the access list is + applied to input packets. + + The 'distribute-list' command can be used to filter the RIP path. + 'distribute-list' can apply access-lists to a chosen interface. + First, one should specify the access-list. Next, the name of the + access-list is used in the distribute-list command. For example, + in the following configuration 'eth0' will permit only the paths + that match the route 10.0.0.0/8 + + ! + router rip + distribute-list private in eth0 + ! + access-list private permit 10 10.0.0.0/8 + access-list private deny any + ! + + 'distribute-list' can be applied to both incoming and outgoing data. + + -- Command: distribute-list prefix PREFIX_LIST (in|out) IFNAME + You can apply prefix lists to the interface with a + 'distribute-list' command. PREFIX_LIST is the prefix list name. + Next is the direction of 'in' or 'out'. If DIRECT is 'in' the + access list is applied to input packets. + + +File: quagga.info, Node: RIP Metric Manipulation, Next: RIP distance, Prev: Filtering RIP Routes, Up: RIP + +5.6 RIP Metric Manipulation +=========================== + +RIP metric is a value for distance for the network. Usually 'ripd' +increment the metric when the network information is received. +Redistributed routes' metric is set to 1. + + -- RIP command: default-metric <1-16> + -- RIP command: no default-metric <1-16> + This command modifies the default metric value for redistributed + routes. The default value is 1. This command does not affect + connected route even if it is redistributed by 'redistribute + connected'. To modify connected route's metric value, please use + 'redistribute connected metric' or 'route-map'. 'offset-list' also + affects connected routes. + + -- RIP command: offset-list ACCESS-LIST (in|out) + -- RIP command: offset-list ACCESS-LIST (in|out) IFNAME + + +File: quagga.info, Node: RIP distance, Next: RIP route-map, Prev: RIP Metric Manipulation, Up: RIP + +5.7 RIP distance +================ + +Distance value is used in zebra daemon. Default RIP distance is 120. + + -- RIP command: distance <1-255> + -- RIP command: no distance <1-255> + Set default RIP distance to specified value. + + -- RIP command: distance <1-255> A.B.C.D/M + -- RIP command: no distance <1-255> A.B.C.D/M + Set default RIP distance to specified value when the route's source + IP address matches the specified prefix. + + -- RIP command: distance <1-255> A.B.C.D/M ACCESS-LIST + -- RIP command: no distance <1-255> A.B.C.D/M ACCESS-LIST + Set default RIP distance to specified value when the route's source + IP address matches the specified prefix and the specified + access-list. + + +File: quagga.info, Node: RIP route-map, Next: RIP Authentication, Prev: RIP distance, Up: RIP + +5.8 RIP route-map +================= + +Usage of 'ripd''s route-map support. + + Optional argument route-map MAP_NAME can be added to each +'redistribute' statement. + + redistribute static [route-map MAP_NAME] + redistribute connected [route-map MAP_NAME] + ..... + + Cisco applies route-map _before_ routes will exported to rip route +table. In current Quagga's test implementation, 'ripd' applies +route-map after routes are listed in the route table and before routes +will be announced to an interface (something like output filter). I +think it is not so clear, but it is draft and it may be changed at +future. + + Route-map statement (*note Route Map::) is needed to use route-map +functionality. + + -- Route Map: match interface WORD + This command match to incoming interface. Notation of this match + is different from Cisco. Cisco uses a list of interfaces - NAME1 + NAME2 ... NAMEN. Ripd allows only one name (maybe will change in + the future). Next - Cisco means interface which includes next-hop + of routes (it is somewhat similar to "ip next-hop" statement). + Ripd means interface where this route will be sent. This + difference is because "next-hop" of same routes which sends to + different interfaces must be different. Maybe it'd be better to + made new matches - say "match interface-out NAME" or something like + that. + + -- Route Map: match ip address WORD + -- Route Map: match ip address prefix-list WORD + Match if route destination is permitted by access-list. + + -- Route Map: match ip next-hop WORD + -- Route Map: match ip next-hop prefix-list WORD + Match if route next-hop (meaning next-hop listed in the rip + route-table as displayed by "show ip rip") is permitted by + access-list. + + -- Route Map: match metric <0-4294967295> + This command match to the metric value of RIP updates. For other + protocol compatibility metric range is shown as <0-4294967295>. + But for RIP protocol only the value range <0-16> make sense. + + -- Route Map: set ip next-hop A.B.C.D + This command set next hop value in RIPv2 protocol. This command + does not affect RIPv1 because there is no next hop field in the + packet. + + -- Route Map: set metric <0-4294967295> + Set a metric for matched route when sending announcement. The + metric value range is very large for compatibility with other + protocols. For RIP, valid metric values are from 1 to 16. + + +File: quagga.info, Node: RIP Authentication, Next: RIP Timers, Prev: RIP route-map, Up: RIP + +5.9 RIP Authentication +====================== + +RIPv2 allows packets to be authenticated via either an insecure plain +text password, included with the packet, or via a more secure MD5 based +HMAC (keyed-Hashing for Message AuthentiCation), RIPv1 can not be +authenticated at all, thus when authentication is configured 'ripd' will +discard routing updates received via RIPv1 packets. + + However, unless RIPv1 reception is disabled entirely, *Note RIP +Version Control::, RIPv1 REQUEST packets which are received, which query +the router for routing information, will still be honoured by 'ripd', +and 'ripd' WILL reply to such packets. This allows 'ripd' to honour +such REQUESTs (which sometimes is used by old equipment and very simple +devices to bootstrap their default route), while still providing +security for route updates which are received. + + In short: Enabling authentication prevents routes being updated by +unauthenticated remote routers, but still can allow routes (I.e. the +entire RIP routing table) to be queried remotely, potentially by anyone +on the internet, via RIPv1. + + To prevent such unauthenticated querying of routes disable RIPv1, +*Note RIP Version Control::. + + -- Interface command: ip rip authentication mode md5 + -- Interface command: no ip rip authentication mode md5 + Set the interface with RIPv2 MD5 authentication. + + -- Interface command: ip rip authentication mode text + -- Interface command: no ip rip authentication mode text + Set the interface with RIPv2 simple password authentication. + + -- Interface command: ip rip authentication string STRING + -- Interface command: no ip rip authentication string STRING + RIP version 2 has simple text authentication. This command sets + authentication string. The string must be shorter than 16 + characters. + + -- Interface command: ip rip authentication key-chain KEY-CHAIN + -- Interface command: no ip rip authentication key-chain KEY-CHAIN + Specifiy Keyed MD5 chain. + + ! + key chain test + key 1 + key-string test + ! + interface eth1 + ip rip authentication mode md5 + ip rip authentication key-chain test + ! + + +File: quagga.info, Node: RIP Timers, Next: Show RIP Information, Prev: RIP Authentication, Up: RIP + +5.10 RIP Timers +=============== + + -- RIP command: timers basic UPDATE TIMEOUT GARBAGE + + RIP protocol has several timers. User can configure those timers' + values by 'timers basic' command. + + The default settings for the timers are as follows: + + * The update timer is 30 seconds. Every update timer seconds, + the RIP process is awakened to send an unsolicited Response + message containing the complete routing table to all + neighboring RIP routers. + + * The timeout timer is 180 seconds. Upon expiration of the + timeout, the route is no longer valid; however, it is retained + in the routing table for a short time so that neighbors can be + notified that the route has been dropped. + + * The garbage collect timer is 120 seconds. Upon expiration of + the garbage-collection timer, the route is finally removed + from the routing table. + + The 'timers basic' command allows the the default values of the + timers listed above to be changed. + + -- RIP command: no timers basic + The 'no timers basic' command will reset the timers to the default + settings listed above. + + +File: quagga.info, Node: Show RIP Information, Next: RIP Debug Commands, Prev: RIP Timers, Up: RIP + +5.11 Show RIP Information +========================= + +To display RIP routes. + + -- Command: show ip rip + Show RIP routes. + + The command displays all RIP routes. For routes that are received +through RIP, this command will display the time the packet was sent and +the tag information. This command will also display this information +for routes redistributed into RIP. + + -- Command: show ip rip status + The command displays current RIP status. It includes RIP timer, + filtering, version, RIP enabled interface and RIP peer inforation. + + ripd> show ip rip status + Routing Protocol is "rip" + Sending updates every 30 seconds with +/-50%, next due in 35 seconds + Timeout after 180 seconds, garbage collect after 120 seconds + Outgoing update filter list for all interface is not set + Incoming update filter list for all interface is not set + Default redistribution metric is 1 + Redistributing: kernel connected + Default version control: send version 2, receive version 2 + Interface Send Recv + Routing for Networks: + eth0 + eth1 + 1.1.1.1 + 203.181.89.241 + Routing Information Sources: + Gateway BadPackets BadRoutes Distance Last Update + + +File: quagga.info, Node: RIP Debug Commands, Prev: Show RIP Information, Up: RIP + +5.12 RIP Debug Commands +======================= + +Debug for RIP protocol. + + -- Command: debug rip events + Debug rip events. + + 'debug rip' will show RIP events. Sending and receiving packets, +timers, and changes in interfaces are events shown with 'ripd'. + + -- Command: debug rip packet + Debug rip packet. + + 'debug rip packet' will display detailed information about the RIP +packets. The origin and port number of the packet as well as a packet +dump is shown. + + -- Command: debug rip zebra + Debug rip between zebra communication. + + This command will show the communication between 'ripd' and 'zebra'. +The main information will include addition and deletion of paths to the +kernel and the sending and receiving of interface information. + + -- Command: show debugging rip + Display 'ripd''s debugging option. + + 'show debugging rip' will show all information currently set for ripd +debug. + + +File: quagga.info, Node: RIPng, Next: OSPFv2, Prev: RIP, Up: Top + +6 RIPng +******* + +'ripngd' supports the RIPng protocol as described in RFC2080. It's an +IPv6 reincarnation of the RIP protocol. + +* Menu: + +* Invoking ripngd:: +* ripngd Configuration:: +* ripngd Terminal Mode Commands:: +* ripngd Filtering Commands:: + + +File: quagga.info, Node: Invoking ripngd, Next: ripngd Configuration, Up: RIPng + +6.1 Invoking ripngd +=================== + +There are no 'ripngd' specific invocation options. Common options can +be specified (*note Common Invocation Options::). + + +File: quagga.info, Node: ripngd Configuration, Next: ripngd Terminal Mode Commands, Prev: Invoking ripngd, Up: RIPng + +6.2 ripngd Configuration +======================== + +Currently ripngd supports the following commands: + + -- Command: router ripng + Enable RIPng. + + -- RIPng Command: flush_timer TIME + Set flush timer. + + -- RIPng Command: network NETWORK + Set RIPng enabled interface by NETWORK + + -- RIPng Command: network IFNAME + Set RIPng enabled interface by IFNAME + + -- RIPng Command: route NETWORK + Set RIPng static routing announcement of NETWORK. + + -- Command: router zebra + This command is the default and does not appear in the + configuration. With this statement, RIPng routes go to the 'zebra' + daemon. + + +File: quagga.info, Node: ripngd Terminal Mode Commands, Next: ripngd Filtering Commands, Prev: ripngd Configuration, Up: RIPng + +6.3 ripngd Terminal Mode Commands +================================= + + -- Command: show ip ripng + + -- Command: show debugging ripng + + -- Command: debug ripng events + + -- Command: debug ripng packet + + -- Command: debug ripng zebra + + +File: quagga.info, Node: ripngd Filtering Commands, Prev: ripngd Terminal Mode Commands, Up: RIPng + +6.4 ripngd Filtering Commands +============================= + + -- Command: distribute-list ACCESS_LIST (in|out) IFNAME + You can apply an access-list to the interface using the + 'distribute-list' command. ACCESS_LIST is an access-list name. + DIRECT is 'in' or 'out'. If DIRECT is 'in', the access-list is + applied only to incoming packets. + + distribute-list local-only out sit1 + + +File: quagga.info, Node: OSPFv2, Next: OSPFv3, Prev: RIPng, Up: Top + +7 OSPFv2 +******** + +OSPF (Open Shortest Path First) version 2 is a routing protocol which is +described in 'RFC2328, OSPF Version 2'. OSPF is an IGP (Interior +Gateway Protocol). Compared with RIP, OSPF can provide scalable network +support and faster convergence times. OSPF is widely used in large +networks such as ISP (Internet Service Provider) backbone and enterprise +networks. + +* Menu: + +* OSPF Fundamentals:: +* Configuring ospfd:: +* OSPF router:: +* OSPF area:: +* OSPF interface:: +* Redistribute routes to OSPF:: +* Showing OSPF information:: +* Opaque LSA:: +* OSPF Traffic Engineering:: +* Router Information:: +* Debugging OSPF:: +* OSPF Configuration Examples:: + + +File: quagga.info, Node: OSPF Fundamentals, Next: Configuring ospfd, Up: OSPFv2 + +7.1 OSPF Fundamentals +===================== + +OSPF is, mostly, a link-state routing protocol. In contrast to +"distance-vector" protocols, such as RIP or BGP, where routers describe +available "paths" (i.e. routes) to each other, in "link-state" +protocols routers instead describe the state of their links to their +immediate neighbouring routers. + + Each router describes their link-state information in a message known +as an LSA (Link State Advertisement), which is then propogated through +to all other routers in a link-state routing domain, by a process called +"flooding". Each router thus builds up an LSDB (Link State Database) of +all the link-state messages. From this collection of LSAs in the LSDB, +each router can then calculate the shortest path to any other router, +based on some common metric, by using an algorithm such as Edgser +Dijkstra (http://www.cs.utexas.edu/users/EWD/)'s SPF (Shortest Path +First). + + By describing connectivity of a network in this way, in terms of +routers and links rather than in terms of the paths through a network, a +link-state protocol can use less bandwidth and converge more quickly +than other protocols. A link-state protocol need distribute only one +link-state message throughout the link-state domain when a link on any +single given router changes state, in order for all routers to +reconverge on the best paths through the network. In contrast, distance +vector protocols can require a progression of different path update +messages from a series of different routers in order to converge. + + The disadvantage to a link-state protocol is that the process of +computing the best paths can be relatively intensive when compared to +distance-vector protocols, in which near to no computation need be done +other than (potentially) select between multiple routes. This overhead +is mostly negligible for modern embedded CPUs, even for networks with +thousands of nodes. The primary scaling overhead lies more in coping +with the ever greater frequency of LSA updates as the size of a +link-state area increases, in managing the LSDB and required flooding. + + This section aims to give a distilled, but accurate, description of +the more important workings of OSPF which an administrator may need to +know to be able best configure and trouble-shoot OSPF. + +7.1.1 OSPF Mechanisms +--------------------- + +OSPF defines a range of mechanisms, concerned with detecting, describing +and propogating state through a network. These mechanisms will nearly +all be covered in greater detail further on. They may be broadly +classed as: + +"The Hello Protocol" + + The OSPF Hello protocol allows OSPF to quickly detect changes in + two-way reachability between routers on a link. OSPF can + additionally avail of other sources of reachability information, + such as link-state information provided by hardware, or through + dedicated reachability protocols such as BFD (Bi-directional + Forwarding Detection). + + OSPF also uses the Hello protocol to propagate certain state + between routers sharing a link, for example: + + * Hello protocol configured state, such as the dead-interval. + * Router priority, for DR/BDR election. + * DR/BDR election results. + * Any optional capabilities supported by each router. + + The Hello protocol is comparatively trivial and will not be + explored in greater detail than here. + +"LSAs" + + At the heart of OSPF are LSA (Link State Advertisement) messages. + Despite the name, some LSAs do not, strictly speaking, describe + link-state information. Common LSAs describe information such as: + + * Routers, in terms of their links. + * Networks, in terms of attached routers. + * Routes, external to a link-state domain: + + * External Routes + + Routes entirely external to OSPF. Routers originating + such routes are known as ASBR (Autonomous-System Border + Router) routers. + + * Summary Routes + + Routes which summarise routing information relating to + OSPF areas external to the OSPF link-state area at hand, + originated by ABR (Area Boundary Router) routers. + +"LSA Flooding" + OSPF defines several related mechanisms, used to manage + synchronisation of LSDBs between neighbours as neighbours form + adjacencies and the propogation, or "flooding" of new or updated + LSAs. + + *Note OSPF Flooding::. + +"Areas" + OSPF provides for the protocol to be broken up into multiple + smaller and independent link-state areas. Each area must be + connected to a common backbone area by an ABR (Area Boundary + Router). These ABR routers are responsible for summarising the + link-state routing information of an area into "Summary LSAs", + possibly in a condensed (i.e. aggregated) form, and then + originating these summaries into all other areas the ABR is + connected to. + + Note that only summaries and external routes are passed between + areas. As these describe _paths_, rather than any router + link-states, routing between areas hence is by "distance-vector", + *not* link-state. + + *Note OSPF Areas::. + +7.1.2 OSPF LSAs +--------------- + +LSAs are the core object in OSPF. Everything else in OSPF revolves +around detecting what to describe in LSAs, when to update them, how to +flood them throughout a network and how to calculate routes from them. + + There are a variety of different LSAs, for purposes such as +describing actual link-state information, describing paths (i.e. +routes), describing bandwidth usage of links for TE (Traffic +Engineering) purposes, and even arbitrary data by way of _Opaque_ LSAs. + +7.1.2.1 LSA Header +.................. + +All LSAs share a common header with the following information: + + * Type + + Different types of LSAs describe different things in OSPF. Types + include: + + * Router LSA + * Network LSA + * Network Summary LSA + * Router Summary LSA + * AS-External LSA + + The specifics of the different types of LSA are examined below. + + * Advertising Router + + The Router ID of the router originating the LSA, see *note ospf + router-id::. + + * LSA ID + + The ID of the LSA, which is typically derived in some way from the + information the LSA describes, e.g. a Router LSA uses the Router + ID as the LSA ID, a Network LSA will have the IP address of the DR + as its LSA ID. + + The combination of the Type, ID and Advertising Router ID must + uniquely identify the LSA. There can however be multiple instances + of an LSA with the same Type, LSA ID and Advertising Router ID, see + *note LSA Sequence Number: OSPF LSA sequence number. + + * Age + + A number to allow stale LSAs to, eventually, be purged by routers + from their LSDBs. + + The value nominally is one of seconds. An age of 3600, i.e. 1 + hour, is called the "MaxAge". MaxAge LSAs are ignored in routing + calculations. LSAs must be periodically refreshed by their + Advertising Router before reaching MaxAge if they are to remain + valid. + + Routers may deliberately flood LSAs with the age artificially set + to 3600 to indicate an LSA is no longer valid. This is called + "flushing" of an LSA. + + It is not abnormal to see stale LSAs in the LSDB, this can occur + where a router has shutdown without flushing its LSA(s), e.g. + where it has become disconnected from the network. Such LSAs do + little harm. + + * Sequence Number + + A number used to distinguish newer instances of an LSA from older + instances. + +7.1.2.2 Link-State LSAs +....................... + +Of all the various kinds of LSAs, just two types comprise the actual +link-state part of OSPF, Router LSAs and Network LSAs. These LSA types +are absolutely core to the protocol. + + Instances of these LSAs are specific to the link-state area in which +they are originated. Routes calculated from these two LSA types are +called "intra-area routes". + + * Router LSA + + Each OSPF Router must originate a router LSA to describe itself. + In it, the router lists each of its OSPF enabled interfaces, for + the given link-state area, in terms of: + + * Cost + + The output cost of that interface, scaled inversely to some + commonly known reference value, *Note auto-cost + reference-bandwidth: OSPF auto-cost reference-bandwidth. + + * Link Type + * Transit Network + + A link to a multi-access network, on which the router has + at least one Full adjacency with another router. + + * PtP (Point-to-Point) + + A link to a single remote router, with a Full adjacency. + No DR (Designated Router) is elected on such links; no + network LSA is originated for such a link. + + * Stub + + A link with no adjacent neighbours, or a host route. + + * Link ID and Data + + These values depend on the Link Type: + + Link Type Link ID Link Data + + -------------------------------------------------------------- + Transit Link IP address of Interface IP address + the DR + Point-to-PointRouter ID of the Local interface IP + remote router address, or the + ifindex (MIB-II + interface index) for + unnumbered links + + Stub IP address Subnet Mask + + + Links on a router may be listed multiple times in the Router LSA, + e.g. a PtP interface on which OSPF is enabled must _always_ be + described by a Stub link in the Router LSA, in addition to being + listed as PtP link in the Router LSA if the adjacency with the + remote router is Full. + + Stub links may also be used as a way to describe links on which + OSPF is _not_ spoken, known as "passive interfaces", see *note + passive-interface: OSPF passive-interface. + + * Network LSA + + On multi-access links (e.g. ethernets, certain kinds of ATM and + X.25 configurations), routers elect a DR. The DR is responsible + for originating a Network LSA, which helps reduce the information + needed to describe multi-access networks with multiple routers + attached. The DR also acts as a hub for the flooding of LSAs on + that link, thus reducing flooding overheads. + + The contents of the Network LSA describes the: + + * Subnet Mask + + As the LSA ID of a Network LSA must be the IP address of the + DR, the Subnet Mask together with the LSA ID gives you the + network address. + + * Attached Routers + + Each router fully-adjacent with the DR is listed in the LSA, + by their Router-ID. This allows the corresponding Router LSAs + to be easily retrieved from the LSDB. + + Summary of Link State LSAs: + +LSA Type LSA ID Describes LSA Data Describes + +-------------------------------------------------------------------- +Router LSA The Router ID The OSPF enabled links of + the router, within a + specific link-state area. + +Network LSA The IP address of the The Subnet Mask of the + DR for the network network, and the Router IDs + of all routers on the + network. + + With an LSDB composed of just these two types of LSA, it is possible +to construct a directed graph of the connectivity between all routers +and networks in a given OSPF link-state area. So, not surprisingly, +when OSPF routers build updated routing tables, the first stage of SPF +calculation concerns itself only with these two LSA types. + +7.1.2.3 Link-State LSA Examples +............................... + +The example below (*note OSPF Link-State LSA Example::) shows two LSAs, +both originated by the same router (Router ID 192.168.0.49) and with the +same LSA ID (192.168.0.49), but of different LSA types. + + The first LSA being the router LSA describing 192.168.0.49's links: 2 +links to multi-access networks with fully-adjacent neighbours (i.e. +Transit links) and 1 being a Stub link (no adjacent neighbours). + + The second LSA being a Network LSA, for which 192.168.0.49 is the DR, +listing the Router IDs of 4 routers on that network which are fully +adjacent with 192.168.0.49. + + # show ip ospf database router 192.168.0.49 + + OSPF Router with ID (192.168.0.53) + + + Router Link States (Area 0.0.0.0) + + LS age: 38 + Options: 0x2 : *|-|-|-|-|-|E|* + LS Flags: 0x6 + Flags: 0x2 : ASBR + LS Type: router-LSA + Link State ID: 192.168.0.49 + Advertising Router: 192.168.0.49 + LS Seq Number: 80000f90 + Checksum: 0x518b + Length: 60 + Number of Links: 3 + + Link connected to: a Transit Network + (Link ID) Designated Router address: 192.168.1.3 + (Link Data) Router Interface address: 192.168.1.3 + Number of TOS metrics: 0 + TOS 0 Metric: 10 + + Link connected to: a Transit Network + (Link ID) Designated Router address: 192.168.0.49 + (Link Data) Router Interface address: 192.168.0.49 + Number of TOS metrics: 0 + TOS 0 Metric: 10 + + Link connected to: Stub Network + (Link ID) Net: 192.168.3.190 + (Link Data) Network Mask: 255.255.255.255 + Number of TOS metrics: 0 + TOS 0 Metric: 39063 + # show ip ospf database network 192.168.0.49 + + OSPF Router with ID (192.168.0.53) + + + Net Link States (Area 0.0.0.0) + + LS age: 285 + Options: 0x2 : *|-|-|-|-|-|E|* + LS Flags: 0x6 + LS Type: network-LSA + Link State ID: 192.168.0.49 (address of Designated Router) + Advertising Router: 192.168.0.49 + LS Seq Number: 80000074 + Checksum: 0x0103 + Length: 40 + Network Mask: /29 + Attached Router: 192.168.0.49 + Attached Router: 192.168.0.52 + Attached Router: 192.168.0.53 + Attached Router: 192.168.0.54 + + Note that from one LSA, you can find the other. E.g. Given the +Network-LSA you have a list of Router IDs on that network, from which +you can then look up, in the local LSDB, the matching Router LSA. From +that Router-LSA you may (potentially) find links to other Transit +networks and Routers IDs which can be used to lookup the corresponding +Router or Network LSA. And in that fashion, one can find all the +Routers and Networks reachable from that starting LSA. + + Given the Router LSA instead, you have the IP address of the DR of +any attached transit links. Network LSAs will have that IP as their LSA +ID, so you can then look up that Network LSA and from that find all the +attached routers on that link, leading potentially to more links and +Network and Router LSAs, etc. etc. + + From just the above two LSAs, one can already see the following +partial topology: + + + --------------------- Network: ...... + | Designated Router IP: 192.168.1.3 + | + IP: 192.168.1.3 + (transit link) + (cost: 10) + Router ID: 192.168.0.49(stub)---------- IP: 192.168.3.190/32 + (cost: 10) (cost: 39063) + (transit link) + IP: 192.168.0.49 + | + | + ------------------------------ Network: 192.168.0.48/29 + | | | Designated Router IP: 192.168.0.49 + | | | + | | Router ID: 192.168.0.54 + | | + | Router ID: 192.168.0.53 + | + Router ID: 192.168.0.52 + + Note the Router IDs, though they look like IP addresses and often are +IP addresses, are not strictly speaking IP addresses, nor need they be +reachable addresses (though, OSPF will calculate routes to Router IDs). + +7.1.2.4 External LSAs +..................... + +External, or "Type 5", LSAs describe routing information which is +entirely external to OSPF, and is "injected" into OSPF. Such routing +information may have come from another routing protocol, such as RIP or +BGP, they may represent static routes or they may represent a default +route. + + An OSPF router which originates External LSAs is known as an ASBR (AS +Boundary Router). Unlike the link-state LSAs, and most other LSAs, +which are flooded only within the area in which they originate, External +LSAs are flooded through-out the OSPF network to all areas capable of +carrying External LSAs (*note OSPF Areas::). + + Routes internal to OSPF (intra-area or inter-area) are always +preferred over external routes. + + The External LSA describes the following: + + * IP Network number + + The IP Network number of the route is described by the LSA ID + field. + + * IP Network Mask + + The body of the External LSA describes the IP Network Mask of the + route. This, together with the LSA ID, describes the prefix of the + IP route concerned. + + * Metric + + The cost of the External Route. This cost may be an OSPF cost + (also known as a "Type 1" metric), i.e. equivalent to the normal + OSPF costs, or an externally derived cost ("Type 2" metric) which + is not comparable to OSPF costs and always considered larger than + any OSPF cost. Where there are both Type 1 and 2 External routes + for a route, the Type 1 is always preferred. + + * Forwarding Address + + The address of the router to forward packets to for the route. + This may be, and usually is, left as 0 to specify that the ASBR + originating the External LSA should be used. There must be an + internal OSPF route to the forwarding address, for the forwarding + address to be useable. + + * Tag + + An arbitrary 4-bytes of data, not interpreted by OSPF, which may + carry whatever information about the route which OSPF speakers + desire. + +7.1.2.5 AS External LSA Example +............................... + +To illustrate, below is an example of an External LSA in the LSDB of an +OSPF router. It describes a route to the IP prefix of 192.168.165.0/24, +originated by the ASBR with Router-ID 192.168.0.49. The metric of 20 is +external to OSPF. The forwarding address is 0, so the route should +forward to the originating ASBR if selected. + + # show ip ospf database external 192.168.165.0 + LS age: 995 + Options: 0x2 : *|-|-|-|-|-|E|* + LS Flags: 0x9 + LS Type: AS-external-LSA + Link State ID: 192.168.165.0 (External Network Number) + Advertising Router: 192.168.0.49 + LS Seq Number: 800001d8 + Checksum: 0xea27 + Length: 36 + Network Mask: /24 + Metric Type: 2 (Larger than any link state path) + TOS: 0 + Metric: 20 + Forward Address: 0.0.0.0 + External Route Tag: 0 + + We can add this to our partial topology from above, which now looks +like: + --------------------- Network: ...... + | Designated Router IP: 192.168.1.3 + | + IP: 192.168.1.3 /---- External route: 192.168.165.0/24 + (transit link) / Cost: 20 (External metric) + (cost: 10) / + Router ID: 192.168.0.49(stub)---------- IP: 192.168.3.190/32 + (cost: 10) (cost: 39063) + (transit link) + IP: 192.168.0.49 + | + | + ------------------------------ Network: 192.168.0.48/29 + | | | Designated Router IP: 192.168.0.49 + | | | + | | Router ID: 192.168.0.54 + | | + | Router ID: 192.168.0.53 + | + Router ID: 192.168.0.52 + +7.1.2.6 Summary LSAs +.................... + +Summary LSAs are created by ABRs to summarise the destinations available +within one area to other areas. These LSAs may describe IP networks, +potentially in aggregated form, or ASBR routers. + +7.1.3 OSPF Flooding +------------------- + +7.1.4 OSPF Areas +---------------- + + +File: quagga.info, Node: Configuring ospfd, Next: OSPF router, Prev: OSPF Fundamentals, Up: OSPFv2 + +7.2 Configuring ospfd +===================== + +There are no 'ospfd' specific options. Common options can be specified +(*note Common Invocation Options::) to 'ospfd'. 'ospfd' needs to +acquire interface information from 'zebra' in order to function. +Therefore 'zebra' must be running before invoking 'ospfd'. Also, if +'zebra' is restarted then 'ospfd' must be too. + + Like other daemons, 'ospfd' configuration is done in OSPF specific +configuration file 'ospfd.conf'. + + +File: quagga.info, Node: OSPF router, Next: OSPF area, Prev: Configuring ospfd, Up: OSPFv2 + +7.3 OSPF router +=============== + +To start OSPF process you have to specify the OSPF router. As of this +writing, 'ospfd' does not support multiple OSPF processes. + + -- Command: router ospf + -- Command: no router ospf + Enable or disable the OSPF process. 'ospfd' does not yet support + multiple OSPF processes. So you can not specify an OSPF process + number. + + -- OSPF Command: ospf router-id A.B.C.D + -- OSPF Command: no ospf router-id + This sets the router-ID of the OSPF process. The router-ID may be + an IP address of the router, but need not be - it can be any + arbitrary 32bit number. However it MUST be unique within the + entire OSPF domain to the OSPF speaker - bad things will happen if + multiple OSPF speakers are configured with the same router-ID! If + one is not specified then 'ospfd' will obtain a router-ID + automatically from 'zebra'. + + -- OSPF Command: ospf abr-type TYPE + -- OSPF Command: no ospf abr-type TYPE + TYPE can be cisco|ibm|shortcut|standard. The "Cisco" and "IBM" + types are equivalent. + + The OSPF standard for ABR behaviour does not allow an ABR to + consider routes through non-backbone areas when its links to the + backbone are down, even when there are other ABRs in attached + non-backbone areas which still can reach the backbone - this + restriction exists primarily to ensure routing-loops are avoided. + + With the "Cisco" or "IBM" ABR type, the default in this release of + Quagga, this restriction is lifted, allowing an ABR to consider + summaries learnt from other ABRs through non-backbone areas, and + hence route via non-backbone areas as a last resort when, and only + when, backbone links are down. + + Note that areas with fully-adjacent virtual-links are considered to + be "transit capable" and can always be used to route backbone + traffic, and hence are unaffected by this setting (*note OSPF + virtual-link::). + + More information regarding the behaviour controlled by this command + can be found in 'RFC 3509, Alternative Implementations of OSPF Area + Border Routers', and 'draft-ietf-ospf-shortcut-abr-02.txt'. + + Quote: "Though the definition of the ABR (Area Border Router) in + the OSPF specification does not require a router with multiple + attached areas to have a backbone connection, it is actually + necessary to provide successful routing to the inter-area and + external destinations. If this requirement is not met, all traffic + destined for the areas not connected to such an ABR or out of the + OSPF domain, is dropped. This document describes alternative ABR + behaviors implemented in Cisco and IBM routers." + + -- OSPF Command: ospf rfc1583compatibility + -- OSPF Command: no ospf rfc1583compatibility + '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 specifically it demands that + inter-area paths and intra-area backbone path are now of equal + preference but still both preferred to external paths. + + This command should NOT be set normally. + + -- OSPF Command: log-adjacency-changes [detail] + -- OSPF Command: no log-adjacency-changes [detail] + Configures ospfd to log changes in adjacency. With the optional + detail argument, all changes in adjacency status are shown. + Without detail, only changes to full or regressions are shown. + + -- OSPF Command: passive-interface INTERFACE + -- OSPF Command: no passive-interface INTERFACE + Do not speak OSPF interface on the given interface, but do + advertise the interface as a stub link in the router-LSA (Link + State Advertisement) for this router. This allows one to advertise + addresses on such connected interfaces without having to originate + AS-External/Type-5 LSAs (which have global flooding scope) - as + would occur if connected addresses were redistributed into OSPF + (*note Redistribute routes to OSPF::). This is the only way to + advertise non-OSPF links into stub areas. + + -- OSPF Command: timers throttle spf DELAY INITIAL-HOLDTIME + MAX-HOLDTIME + -- OSPF Command: no timers throttle spf + This command sets the initial DELAY, the INITIAL-HOLDTIME and the + MAXIMUM-HOLDTIME between when SPF is calculated and the event which + triggered the calculation. The times are specified in milliseconds + and must be in the range of 0 to 600000 milliseconds. + + The DELAY specifies the minimum amount of time to delay SPF + calculation (hence it affects how long SPF calculation is delayed + after an event which occurs outside of the holdtime of any previous + SPF calculation, and also serves as a minimum holdtime). + + Consecutive SPF calculations will always be seperated by at least + 'hold-time' milliseconds. The hold-time is adaptive and initially + is set to the INITIAL-HOLDTIME configured with the above command. + Events which occur within the holdtime of the previous SPF + calculation will cause the holdtime to be increased by + INITIAL-HOLDTIME, bounded by the MAXIMUM-HOLDTIME configured with + this command. If the adaptive hold-time elapses without any + SPF-triggering event occuring then the current holdtime is reset to + the INITIAL-HOLDTIME. The current holdtime can be viewed with + *note show ip ospf::, where it is expressed as a multiplier of the + INITIAL-HOLDTIME. + + router ospf + timers throttle spf 200 400 10000 + + In this example, the DELAY is set to 200ms, the INITIAL HOLDTIME is + set to 400ms and the MAXIMUM HOLDTIME to 10s. Hence there will + always be at least 200ms between an event which requires SPF + calculation and the actual SPF calculation. Further consecutive + SPF calculations will always be seperated by between 400ms to 10s, + the hold-time increasing by 400ms each time an SPF-triggering event + occurs within the hold-time of the previous SPF calculation. + + This command supercedes the 'timers spf' command in previous Quagga + releases. + + -- OSPF Command: max-metric router-lsa [on-startup|on-shutdown] + <5-86400> + -- OSPF Command: max-metric router-lsa administrative + -- OSPF Command: no max-metric router-lsa + [on-startup|on-shutdown|administrative] + This enables 'RFC3137, OSPF Stub Router Advertisement' support, + where the OSPF process describes its transit links in its + router-LSA as having infinite distance so that other routers will + avoid calculating transit paths through the router while still + being able to reach networks through the router. + + This support may be enabled administratively (and indefinitely) or + conditionally. Conditional enabling of max-metric router-lsas can + be for a period of seconds after startup and/or for a period of + seconds prior to shutdown. + + Enabling this for a period after startup allows OSPF to converge + fully first without affecting any existing routes used by other + routers, while still allowing any connected stub links and/or + redistributed routes to be reachable. Enabling this for a period + of time in advance of shutdown allows the router to gracefully + excuse itself from the OSPF domain. + + Enabling this feature administratively allows for administrative + intervention for whatever reason, for an indefinite period of time. + Note that if the configuration is written to file, this + administrative form of the stub-router command will also be written + to file. If 'ospfd' is restarted later, the command will then take + effect until manually deconfigured. + + Configured state of this feature as well as current status, such as + the number of second remaining till on-startup or on-shutdown ends, + can be viewed with the *note show ip ospf:: command. + + -- OSPF Command: auto-cost reference-bandwidth <1-4294967> + -- OSPF Command: no auto-cost reference-bandwidth + This sets the reference bandwidth for cost calculations, where this + bandwidth is considered equivalent to an OSPF cost of 1, specified + in Mbits/s. The default is 100Mbit/s (i.e. a link of bandwidth + 100Mbit/s or higher will have a cost of 1. Cost of lower bandwidth + links will be scaled with reference to this cost). + + This configuration setting MUST be consistent across all routers + within the OSPF domain. + + -- OSPF Command: network A.B.C.D/M area A.B.C.D + -- OSPF Command: network A.B.C.D/M area <0-4294967295> + -- OSPF Command: no network A.B.C.D/M area A.B.C.D + -- OSPF Command: no network A.B.C.D/M area <0-4294967295> + This command specifies the OSPF enabled interface(s). If the + interface has an address from range 192.168.1.0/24 then the command + below enables ospf on this interface so router can provide network + information to the other ospf routers via this interface. + + router ospf + network 192.168.1.0/24 area 0.0.0.0 + + Prefix length in interface must be equal or bigger (ie. smaller + network) than prefix length in network statement. For example + statement above doesn't enable ospf on interface with address + 192.168.1.1/23, but it does on interface with address + 192.168.1.129/25. + + Note that the behavior when there is a peer address defined on an + interface changed after release 0.99.7. Currently, if a peer + prefix has been configured, then we test whether the prefix in the + network command contains the destination prefix. Otherwise, we + test whether the network command prefix contains the local address + prefix of the interface. + + In some cases it may be more convenient to enable OSPF on a per + interface/subnet basis (*note OSPF ip ospf area command::). + + +File: quagga.info, Node: OSPF area, Next: OSPF interface, Prev: OSPF router, Up: OSPFv2 + +7.4 OSPF area +============= + + -- OSPF Command: area A.B.C.D range A.B.C.D/M + -- OSPF Command: area <0-4294967295> range A.B.C.D/M + -- OSPF Command: no area A.B.C.D range A.B.C.D/M + -- OSPF Command: no area <0-4294967295> range A.B.C.D/M + Summarize intra area paths from specified area into one Type-3 + summary-LSA announced to other areas. This command can be used + only in ABR and ONLY router-LSAs (Type-1) and network-LSAs (Type-2) + (ie. LSAs with scope area) can be summarized. Type-5 + AS-external-LSAs can't be summarized - their scope is AS. + Summarizing Type-7 AS-external-LSAs isn't supported yet by Quagga. + + router ospf + network 192.168.1.0/24 area 0.0.0.0 + network 10.0.0.0/8 area 0.0.0.10 + area 0.0.0.10 range 10.0.0.0/8 + + With configuration above one Type-3 Summary-LSA with routing info + 10.0.0.0/8 is announced into backbone area if area 0.0.0.10 + contains at least one intra-area network (ie. described with + router or network LSA) from this range. + + -- OSPF Command: area A.B.C.D range IPV4_PREFIX not-advertise + -- OSPF Command: no area A.B.C.D range IPV4_PREFIX not-advertise + Instead of summarizing intra area paths filter them - ie. intra + area paths from this range are not advertised into other areas. + This command makes sense in ABR only. + + -- OSPF Command: area A.B.C.D range IPV4_PREFIX substitute IPV4_PREFIX + -- OSPF Command: no area A.B.C.D range IPV4_PREFIX substitute + IPV4_PREFIX + Substitute summarized prefix with another prefix. + + router ospf + network 192.168.1.0/24 area 0.0.0.0 + network 10.0.0.0/8 area 0.0.0.10 + area 0.0.0.10 range 10.0.0.0/8 substitute 11.0.0.0/8 + + One Type-3 summary-LSA with routing info 11.0.0.0/8 is announced + into backbone area if area 0.0.0.10 contains at least one + intra-area network (ie. described with router-LSA or network-LSA) + from range 10.0.0.0/8. This command makes sense in ABR only. + + -- OSPF Command: area A.B.C.D virtual-link A.B.C.D + -- OSPF Command: area <0-4294967295> virtual-link A.B.C.D + -- OSPF Command: no area A.B.C.D virtual-link A.B.C.D + -- OSPF Command: no area <0-4294967295> virtual-link A.B.C.D + + -- OSPF Command: area A.B.C.D shortcut + -- OSPF Command: area <0-4294967295> shortcut + -- OSPF Command: no area A.B.C.D shortcut + -- OSPF Command: no area <0-4294967295> shortcut + Configure the area as Shortcut capable. See 'RFC3509'. This + requires that the 'abr-type' be set to 'shortcut'. + + -- OSPF Command: area A.B.C.D stub + -- OSPF Command: area <0-4294967295> stub + -- OSPF Command: no area A.B.C.D stub + -- OSPF Command: no area <0-4294967295> stub + Configure the area to be a stub area. That is, an area where no + router originates routes external to OSPF and hence an area where + all external routes are via the ABR(s). Hence, ABRs for such an + area do not need to pass AS-External LSAs (type-5s) or ASBR-Summary + LSAs (type-4) into the area. They need only pass Network-Summary + (type-3) LSAs into such an area, along with a default-route + summary. + + -- OSPF Command: area A.B.C.D stub no-summary + -- OSPF Command: area <0-4294967295> stub no-summary + -- OSPF Command: no area A.B.C.D stub no-summary + -- OSPF Command: no area <0-4294967295> stub no-summary + Prevents an 'ospfd' ABR from injecting inter-area summaries into + the specified stub area. + + -- OSPF Command: area A.B.C.D default-cost <0-16777215> + -- OSPF Command: no area A.B.C.D default-cost <0-16777215> + Set the cost of default-summary LSAs announced to stubby areas. + + -- OSPF Command: area A.B.C.D export-list NAME + -- OSPF Command: area <0-4294967295> export-list NAME + -- OSPF Command: no area A.B.C.D export-list NAME + -- OSPF Command: no area <0-4294967295> export-list NAME + Filter Type-3 summary-LSAs announced to other areas originated from + intra- area paths from specified area. + + router ospf + network 192.168.1.0/24 area 0.0.0.0 + network 10.0.0.0/8 area 0.0.0.10 + area 0.0.0.10 export-list foo + ! + access-list foo permit 10.10.0.0/16 + access-list foo deny any + + With example above any intra-area paths from area 0.0.0.10 and from + range 10.10.0.0/16 (for example 10.10.1.0/24 and 10.10.2.128/30) + are announced into other areas as Type-3 summary-LSA's, but any + others (for example 10.11.0.0/16 or 10.128.30.16/30) aren't. + + This command is only relevant if the router is an ABR for the + specified area. + + -- OSPF Command: area A.B.C.D import-list NAME + -- OSPF Command: area <0-4294967295> import-list NAME + -- OSPF Command: no area A.B.C.D import-list NAME + -- OSPF Command: no area <0-4294967295> import-list NAME + Same as export-list, but it applies to paths announced into + specified area as Type-3 summary-LSAs. + + -- OSPF Command: area A.B.C.D filter-list prefix NAME in + -- OSPF Command: area A.B.C.D filter-list prefix NAME out + -- OSPF Command: area <0-4294967295> filter-list prefix NAME in + -- OSPF Command: area <0-4294967295> filter-list prefix NAME out + -- OSPF Command: no area A.B.C.D filter-list prefix NAME in + -- OSPF Command: no area A.B.C.D filter-list prefix NAME out + -- OSPF Command: no area <0-4294967295> filter-list prefix NAME in + -- OSPF Command: no area <0-4294967295> filter-list prefix NAME out + Filtering Type-3 summary-LSAs to/from area using prefix lists. + This command makes sense in ABR only. + + -- OSPF Command: area A.B.C.D authentication + -- OSPF Command: area <0-4294967295> authentication + -- OSPF Command: no area A.B.C.D authentication + -- OSPF Command: no area <0-4294967295> authentication + Specify that simple password authentication should be used for the + given area. + + -- OSPF Command: area A.B.C.D authentication message-digest + -- OSPF Command: area <0-4294967295> authentication message-digest + + Specify that OSPF packets must be authenticated with MD5 HMACs + within the given area. Keying material must also be configured on + a per-interface basis (*note ip ospf message-digest-key::). + + MD5 authentication may also be configured on a per-interface basis + (*note ip ospf authentication message-digest::). Such + per-interface settings will override any per-area authentication + setting. + + +File: quagga.info, Node: OSPF interface, Next: Redistribute routes to OSPF, Prev: OSPF area, Up: OSPFv2 + +7.5 OSPF interface +================== + + -- Interface Command: ip ospf area AREA [ADDR] + -- Interface Command: no ip ospf area [ADDR] + + Enable OSPF on the interface, optionally restricted to just the IP + address given by ADDR, putting it in the AREA area. Per interface + area settings take precedence to network commands (*note OSPF + network command::). + + If you have a lot of interfaces, and/or a lot of subnets, then + enabling OSPF via this command may result in a slight performance + improvement. + + -- Interface Command: ip ospf authentication-key AUTH_KEY + -- Interface Command: no ip ospf authentication-key + Set OSPF authentication key to a simple password. After setting + AUTH_KEY, all OSPF packets are authenticated. AUTH_KEY has length + up to 8 chars. + + Simple text password authentication is insecure and deprecated in + favour of MD5 HMAC authentication (*note ip ospf authentication + message-digest::). + + -- Interface Command: ip ospf authentication message-digest + Specify that MD5 HMAC authentication must be used on this + interface. MD5 keying material must also be configured (*note ip + ospf message-digest-key::). Overrides any authentication enabled + on a per-area basis (*note area authentication message-digest::). + + Note that OSPF MD5 authentication requires that time never go + backwards (correct time is NOT important, only that it never goes + backwards), even across resets, if ospfd is to be able to promptly + reestabish adjacencies with its neighbours after restarts/reboots. + The host should have system time be set at boot from an external or + non-volatile source (eg battery backed clock, NTP, etc.) or else + the system clock should be periodically saved to non-volative + storage and restored at boot if MD5 authentication is to be + expected to work reliably. + + -- Interface Command: ip ospf message-digest-key KEYID md5 KEY + -- Interface Command: no ip ospf message-digest-key + Set OSPF authentication key to a cryptographic password. The + cryptographic algorithm is MD5. + + KEYID identifies secret key used to create the message digest. + This ID is part of the protocol and must be consistent across + routers on a link. + + KEY is the actual message digest key, of up to 16 chars (larger + strings will be truncated), and is associated with the given KEYID. + + -- Interface Command: ip ospf cost <1-65535> + -- Interface Command: no ip ospf cost + Set link cost for the specified interface. The cost value is set + to router-LSA's metric field and used for SPF calculation. + + -- Interface Command: ip ospf dead-interval <1-65535> + -- Interface Command: ip ospf dead-interval minimal hello-multiplier + <2-20> + -- Interface Command: no ip ospf dead-interval + Set number of seconds for RouterDeadInterval timer value used for + Wait Timer and Inactivity Timer. This value must be the same for + all routers attached to a common network. The default value is 40 + seconds. + + If 'minimal' is specified instead, then the dead-interval is set to + 1 second and one must specify a hello-multiplier. The + hello-multiplier specifies how many Hellos to send per second, from + 2 (every 500ms) to 20 (every 50ms). Thus one can have 1s + convergence time for OSPF. If this form is specified, then the + hello-interval advertised in Hello packets is set to 0 and the + hello-interval on received Hello packets is not checked, thus the + hello-multiplier need NOT be the same across multiple routers on a + common link. + + -- Interface Command: ip ospf hello-interval <1-65535> + -- Interface Command: no ip ospf hello-interval + Set number of seconds for HelloInterval timer value. Setting this + value, Hello packet will be sent every timer value seconds on the + specified interface. This value must be the same for all routers + attached to a common network. The default value is 10 seconds. + + This command has no effect if *note ip ospf dead-interval minimal:: + is also specified for the interface. + + -- Interface Command: ip ospf network + (broadcast|non-broadcast|point-to-multipoint|point-to-point) + -- Interface Command: no ip ospf network + Set explicitly network type for specifed interface. + + -- Interface Command: ip ospf priority <0-255> + -- Interface Command: no ip ospf priority + Set RouterPriority integer value. The router with the highest + priority will be more eligible to become Designated Router. + Setting the value to 0, makes the router ineligible to become + Designated Router. The default value is 1. + + -- Interface Command: ip ospf retransmit-interval <1-65535> + -- Interface Command: no ip ospf retransmit interval + Set number of seconds for RxmtInterval timer value. This value is + used when retransmitting Database Description and Link State + Request packets. The default value is 5 seconds. + + -- Interface Command: ip ospf transmit-delay + -- Interface Command: no ip ospf transmit-delay + Set number of seconds for InfTransDelay value. LSAs' age should be + incremented by this value when transmitting. The default value is + 1 seconds. + + +File: quagga.info, Node: Redistribute routes to OSPF, Next: Showing OSPF information, Prev: OSPF interface, Up: OSPFv2 + +7.6 Redistribute routes to OSPF +=============================== + + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) + ROUTE-MAP + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) + metric-type (1|2) + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) + metric-type (1|2) route-map WORD + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric + <0-16777214> + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) metric + <0-16777214> route-map WORD + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) + metric-type (1|2) metric <0-16777214> + -- OSPF Command: redistribute (kernel|connected|static|rip|bgp) + metric-type (1|2) metric <0-16777214> route-map WORD + -- OSPF Command: no redistribute (kernel|connected|static|rip|bgp) + Redistribute routes of the specified protocol or kind into OSPF, + with the metric type and metric set if specified, filtering the + routes using the given route-map if specified. Redistributed + routes may also be filtered with distribute-lists, see *note ospf + distribute-list::. + + Redistributed routes are distributed as into OSPF as Type-5 + External LSAs into links to areas that accept external routes, + Type-7 External LSAs for NSSA areas and are not redistributed at + all into Stub areas, where external routes are not permitted. + + Note that for connected routes, one may instead use + "passive-interface", see *note OSPF passive-interface::. + + -- OSPF Command: default-information originate + -- OSPF Command: default-information originate metric <0-16777214> + -- OSPF Command: default-information originate metric <0-16777214> + metric-type (1|2) + -- OSPF Command: default-information originate metric <0-16777214> + metric-type (1|2) route-map WORD + -- OSPF Command: default-information originate always + -- OSPF Command: default-information originate always metric + <0-16777214> + -- OSPF Command: default-information originate always metric + <0-16777214> metric-type (1|2) + -- OSPF Command: default-information originate always metric + <0-16777214> metric-type (1|2) route-map WORD + -- OSPF Command: no default-information originate + Originate an AS-External (type-5) LSA describing a default route + into all external-routing capable areas, of the specified metric + and metric type. If the 'always' keyword is given then the default + is always advertised, even when there is no default present in the + routing table. + + -- OSPF Command: distribute-list NAME out + (kernel|connected|static|rip|ospf + -- OSPF Command: no distribute-list NAME out + (kernel|connected|static|rip|ospf + Apply the access-list filter, NAME, to redistributed routes of the + given type before allowing the routes to redistributed into OSPF + (*note OSPF redistribute::). + + -- OSPF Command: default-metric <0-16777214> + -- OSPF Command: no default-metric + + -- OSPF Command: distance <1-255> + -- OSPF Command: no distance <1-255> + + -- OSPF Command: distance ospf (intra-area|inter-area|external) <1-255> + -- OSPF Command: no distance ospf + + +File: quagga.info, Node: Showing OSPF information, Next: Opaque LSA, Prev: Redistribute routes to OSPF, Up: OSPFv2 + +7.7 Showing OSPF information +============================ + + -- Command: show ip ospf + Show information on a variety of general OSPF and area state and + configuration information. + + -- Command: show ip ospf interface [INTERFACE] + Show state and configuration of OSPF the specified interface, or + all interfaces if no interface is given. + + -- Command: show ip ospf neighbor + -- Command: show ip ospf neighbor INTERFACE + -- Command: show ip ospf neighbor detail + -- Command: show ip ospf neighbor INTERFACE detail + + -- Command: show ip ospf database + -- Command: show ip ospf database asbr-summary + -- Command: show ip ospf database external + -- Command: show ip ospf database network + -- Command: show ip ospf database asbr-router + -- Command: show ip ospf database summary + -- Command: show ip ospf database ... LINK-STATE-ID + -- Command: show ip ospf database ... LINK-STATE-ID adv-router + ADV-ROUTER + -- Command: show ip ospf database ... adv-router ADV-ROUTER + -- Command: show ip ospf database ... LINK-STATE-ID self-originate + -- Command: show ip ospf database ... self-originate + + -- Command: show ip ospf database max-age + + -- Command: show ip ospf database self-originate + + -- Command: show ip ospf route + Show the OSPF routing table, as determined by the most recent SPF + calculation. + + +File: quagga.info, Node: Opaque LSA, Next: OSPF Traffic Engineering, Prev: Showing OSPF information, Up: OSPFv2 + +7.8 Opaque LSA +============== + + -- OSPF Command: ospf opaque-lsa + -- OSPF Command: capability opaque + -- OSPF Command: no ospf opaque-lsa + -- OSPF Command: no capability opaque + 'ospfd' support Opaque LSA (RFC2370) as fondment for MPLS Traffic + Engineering LSA. Prior to used MPLS TE, opaque-lsa must be enable + in the configuration file. Alternate command could be "mpls-te on" + (*note OSPF Traffic Engineering::). + + -- Command: show ip ospf database + (opaque-link|opaque-area|opaque-external) + -- Command: show ip ospf database + (opaque-link|opaque-area|opaque-external) LINK-STATE-ID + -- Command: show ip ospf database + (opaque-link|opaque-area|opaque-external) LINK-STATE-ID + adv-router ADV-ROUTER + -- Command: show ip ospf database + (opaque-link|opaque-area|opaque-external) adv-router + ADV-ROUTER + -- Command: show ip ospf database + (opaque-link|opaque-area|opaque-external) LINK-STATE-ID + self-originate + -- Command: show ip ospf database + (opaque-link|opaque-area|opaque-external) self-originate + Show Opaque LSA from the database. + + +File: quagga.info, Node: OSPF Traffic Engineering, Next: Router Information, Prev: Opaque LSA, Up: OSPFv2 + +7.9 Traffic Engineering +======================= + + -- OSPF Command: mpls-te on + -- OSPF Command: no mpls-te + Enable Traffic Engineering LSA flooding. + + -- OSPF Command: mpls-te router-address + -- OSPF Command: no mpls-te + Configure stable IP address for MPLS-TE. This IP address is then + advertise in Opaque LSA Type-10 TLV=1 (TE) option 1 + (Router-Address). + + -- OSPF Command: mpls-te inter-as area |as + -- OSPF Command: no mpls-te inter-as + Enable RFC5392 suuport - Inter-AS TE v2 - to flood Traffic + Engineering parameters of Inter-AS link. 2 modes are supported: + AREA and AS; LSA are flood in AREA with Opaque Type-10, + respectively in AS with Opaque Type-11. In all case, Opaque-LSA + TLV=6. + + -- Command: show ip ospf mpls-te interface + -- Command: show ip ospf mpls-te interface INTERFACE + Show MPLS Traffic Engineering parameters for all or specified + interface. + + -- Command: show ip ospf mpls-te router + Show Traffic Engineering router parameters. + + +File: quagga.info, Node: Router Information, Next: Debugging OSPF, Prev: OSPF Traffic Engineering, Up: OSPFv2 + +7.10 Router Information +======================= + + -- OSPF Command: router-info [as | area ] + -- OSPF Command: no router-info + Enable Router Information (RFC4970) LSA advertisement with AS scope + (default) or Area scope flooding when area is specified. + + -- OSPF Command: pce address + -- OSPF Command: no pce address + -- OSPF Command: pce domain as <0-65535> + -- OSPF Command: no pce domain as <0-65535> + -- OSPF Command: pce neighbor as <0-65535> + -- OSPF Command: no pce neighbor as <0-65535> + -- OSPF Command: pce flag BITPATTERN + -- OSPF Command: no pce flag + -- OSPF Command: pce scope BITPATTERN + -- OSPF Command: no pce scope + The commands are conform to RFC 5088 and allow OSPF router announce + Path Compuatation Elemenent (PCE) capabilities through the Router + Information (RI) LSA. Router Information must be enable prior to + this. The command set/unset respectively the PCE IP adress, + Autonomous System (AS) numbers of controlled domains, neighbor ASs, + flag and scope. For flag and scope, please refer to RFC5088 for + the BITPATTERN recognition. Multiple 'pce neighbor' command could + be specified in order to specify all PCE neighbours. + + -- Command: show ip ospf router-info + Show Router Capabilities flag. + -- Command: show ip ospf router-info pce + Show Router Capabilities PCE parameters. + + +File: quagga.info, Node: Debugging OSPF, Next: OSPF Configuration Examples, Prev: Router Information, Up: OSPFv2 + +7.11 Debugging OSPF +=================== + + -- Command: debug ospf packet + (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) + [detail] + -- Command: no debug ospf packet + (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) + [detail] + Dump Packet for debugging + + -- Command: debug ospf ism + -- Command: debug ospf ism (status|events|timers) + -- Command: no debug ospf ism + -- Command: no debug ospf ism (status|events|timers) + Show debug information of Interface State Machine + + -- Command: debug ospf nsm + -- Command: debug ospf nsm (status|events|timers) + -- Command: no debug ospf nsm + -- Command: no debug ospf nsm (status|events|timers) + Show debug information of Network State Machine + + -- Command: debug ospf event + -- Command: no debug ospf event + Show debug information of OSPF event + + -- Command: debug ospf nssa + -- Command: no debug ospf nssa + Show debug information about Not So Stub Area + + -- Command: debug ospf lsa + -- Command: debug ospf lsa (generate|flooding|refresh) + -- Command: no debug ospf lsa + -- Command: no debug ospf lsa (generate|flooding|refresh) + Show debug detail of Link State messages + + -- Command: debug ospf te + -- Command: no debug ospf te + Show debug information about Traffic Engineering LSA + + -- Command: debug ospf zebra + -- Command: debug ospf zebra (interface|redistribute) + -- Command: no debug ospf zebra + -- Command: no debug ospf zebra (interface|redistribute) + Show debug information of ZEBRA API + + -- Command: show debugging ospf + + +File: quagga.info, Node: OSPF Configuration Examples, Prev: Debugging OSPF, Up: OSPFv2 + +7.12 OSPF Configuration Examples +================================ + +A simple example, with MD5 authentication enabled: + + ! + interface bge0 + ip ospf authentication message-digest + ip ospf message-digest-key 1 md5 ABCDEFGHIJK + ! + router ospf + network 192.168.0.0/16 area 0.0.0.1 + area 0.0.0.1 authentication message-digest + + An ABR router, with MD5 authentication and performing summarisation +of networks between the areas: + + ! + password ABCDEF + log file /var/log/quagga/ospfd.log + service advanced-vty + ! + interface eth0 + ip ospf authentication message-digest + ip ospf message-digest-key 1 md5 ABCDEFGHIJK + ! + interface ppp0 + ! + interface br0 + ip ospf authentication message-digest + ip ospf message-digest-key 2 md5 XYZ12345 + ! + router ospf + ospf router-id 192.168.0.1 + redistribute connected + passive interface ppp0 + network 192.168.0.0/24 area 0.0.0.0 + network 10.0.0.0/16 area 0.0.0.0 + network 192.168.1.0/24 area 0.0.0.1 + area 0.0.0.0 authentication message-digest + area 0.0.0.0 range 10.0.0.0/16 + area 0.0.0.0 range 192.168.0.0/24 + area 0.0.0.1 authentication message-digest + area 0.0.0.1 range 10.2.0.0/16 + ! + + A Traffic Engineering configuration, with Inter-ASv2 support. + + - First, the 'zebra.conf' part: + + hostname HOSTNAME + password PASSWORD + log file /var/log/zebra.log + ! + interface eth0 + ip address 198.168.1.1/24 + mpls-te on + mpls-te link metric 10 + 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 eth1 + ip address 192.168.2.1/24 + mpls-te on + mpls-te link metric 10 + 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 + mpls-te neighbor 192.168.2.2 as 65000 + + - Then the 'ospfd.conf' itself: + + hostname HOSTNAME + password PASSWORD + log file /var/log/ospfd.log + ! + ! + interface eth0 + ip ospf hello-interval 60 + ip ospf dead-interval 240 + ! + interface eth1 + ip ospf hello-interval 60 + ip ospf dead-interval 240 + ! + ! + router ospf + ospf router-id 192.168.1.1 + network 192.168.0.0/16 area 1 + ospf opaque-lsa + mpls-te + mpls-te router-address 192.168.1.1 + mpls-te inter-as area 1 + ! + line vty + + A router information example with PCE advsertisement: + + ! + router ospf + ospf router-id 192.168.1.1 + network 192.168.0.0/16 area 1 + capability opaque + mpls-te + mpls-te router-address 192.168.1.1 + router-info area 0.0.0.1 + pce address 192.168.1.1 + pce flag 0x80 + pce domain as 65400 + pce neighbor as 65500 + pce neighbor as 65200 + pce scope 0x80 + ! + + +File: quagga.info, Node: OSPFv3, Next: ISIS, Prev: OSPFv2, Up: Top + +8 OSPFv3 +******** + +'ospf6d' is a daemon support OSPF version 3 for IPv6 network. OSPF for +IPv6 is described in RFC2740. + +* Menu: + +* OSPF6 router:: +* OSPF6 area:: +* OSPF6 interface:: +* Redistribute routes to OSPF6:: +* Showing OSPF6 information:: +* OSPF6 Configuration Examples:: + + +File: quagga.info, Node: OSPF6 router, Next: OSPF6 area, Up: OSPFv3 + +8.1 OSPF6 router +================ + + -- Command: router ospf6 + + -- OSPF6 Command: router-id A.B.C.D + Set router's Router-ID. + + -- OSPF6 Command: interface IFNAME area AREA + Bind interface to specified area, and start sending OSPF packets. + AREA can be specified as 0. + + -- OSPF6 Command: timers throttle spf DELAY INITIAL-HOLDTIME + MAX-HOLDTIME + -- OSPF6 Command: no timers throttle spf + This command sets the initial DELAY, the INITIAL-HOLDTIME and the + MAXIMUM-HOLDTIME between when SPF is calculated and the event which + triggered the calculation. The times are specified in milliseconds + and must be in the range of 0 to 600000 milliseconds. + + The DELAY specifies the minimum amount of time to delay SPF + calculation (hence it affects how long SPF calculation is delayed + after an event which occurs outside of the holdtime of any previous + SPF calculation, and also serves as a minimum holdtime). + + Consecutive SPF calculations will always be seperated by at least + 'hold-time' milliseconds. The hold-time is adaptive and initially + is set to the INITIAL-HOLDTIME configured with the above command. + Events which occur within the holdtime of the previous SPF + calculation will cause the holdtime to be increased by + INITIAL-HOLDTIME, bounded by the MAXIMUM-HOLDTIME configured with + this command. If the adaptive hold-time elapses without any + SPF-triggering event occuring then the current holdtime is reset to + the INITIAL-HOLDTIME. + + router ospf6 + timers throttle spf 200 400 10000 + + In this example, the DELAY is set to 200ms, the INITIAL HOLDTIME is + set to 400ms and the MAXIMUM HOLDTIME to 10s. Hence there will + always be at least 200ms between an event which requires SPF + calculation and the actual SPF calculation. Further consecutive + SPF calculations will always be seperated by between 400ms to 10s, + the hold-time increasing by 400ms each time an SPF-triggering event + occurs within the hold-time of the previous SPF calculation. + + -- OSPF6 Command: auto-cost reference-bandwidth COST + -- OSPF6 Command: no auto-cost reference-bandwidth + This sets the reference bandwidth for cost calculations, where this + bandwidth is considered equivalent to an OSPF cost of 1, specified + in Mbits/s. The default is 100Mbit/s (i.e. a link of bandwidth + 100Mbit/s or higher will have a cost of 1. Cost of lower bandwidth + links will be scaled with reference to this cost). + + This configuration setting MUST be consistent across all routers + within the OSPF domain. + + +File: quagga.info, Node: OSPF6 area, Next: OSPF6 interface, Prev: OSPF6 router, Up: OSPFv3 + +8.2 OSPF6 area +============== + +Area support for OSPFv3 is not yet implemented. + + +File: quagga.info, Node: OSPF6 interface, Next: Redistribute routes to OSPF6, Prev: OSPF6 area, Up: OSPFv3 + +8.3 OSPF6 interface +=================== + + -- Interface Command: ipv6 ospf6 cost COST + Sets interface's output cost. Default value depends on the + interface bandwidth and on the auto-cost reference bandwidth. + + -- Interface Command: ipv6 ospf6 hello-interval HELLOINTERVAL + Sets interface's Hello Interval. Default 40 + + -- Interface Command: ipv6 ospf6 dead-interval DEADINTERVAL + Sets interface's Router Dead Interval. Default value is 40. + + -- Interface Command: ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL + Sets interface's Rxmt Interval. Default value is 5. + + -- Interface Command: ipv6 ospf6 priority PRIORITY + Sets interface's Router Priority. Default value is 1. + + -- Interface Command: ipv6 ospf6 transmit-delay TRANSMITDELAY + Sets interface's Inf-Trans-Delay. Default value is 1. + + -- Interface Command: ipv6 ospf6 network (broadcast|point-to-point) + Set explicitly network type for specifed interface. + + +File: quagga.info, Node: Redistribute routes to OSPF6, Next: Showing OSPF6 information, Prev: OSPF6 interface, Up: OSPFv3 + +8.4 Redistribute routes to OSPF6 +================================ + + -- OSPF6 Command: redistribute static + -- OSPF6 Command: redistribute connected + -- OSPF6 Command: redistribute ripng + + +File: quagga.info, Node: Showing OSPF6 information, Next: OSPF6 Configuration Examples, Prev: Redistribute routes to OSPF6, Up: OSPFv3 + +8.5 Showing OSPF6 information +============================= + + -- Command: show ipv6 ospf6 [INSTANCE_ID] + INSTANCE_ID is an optional OSPF instance ID. To see router ID and + OSPF instance ID, simply type "show ipv6 ospf6 ". + + -- Command: show ipv6 ospf6 database + This command shows LSA database summary. You can specify the type + of LSA. + + -- Command: show ipv6 ospf6 interface + To see OSPF interface configuration like costs. + + -- Command: show ipv6 ospf6 neighbor + Shows state and chosen (Backup) DR of neighbor. + + -- Command: show ipv6 ospf6 request-list A.B.C.D + Shows requestlist of neighbor. + + -- Command: show ipv6 route ospf6 + This command shows internal routing table. + + +File: quagga.info, Node: OSPF6 Configuration Examples, Prev: Showing OSPF6 information, Up: OSPFv3 + +8.6 OSPF6 Configuration Examples +================================ + +Example of ospf6d configured on one interface and area: + + interface eth0 + ipv6 ospf6 instance-id 0 + ! + router ospf6 + router-id 212.17.55.53 + area 0.0.0.0 range 2001:770:105:2::/64 + interface eth0 area 0.0.0.0 + ! + + +File: quagga.info, Node: ISIS, Next: NHRP, Prev: OSPFv3, Up: Top + +9 ISIS +****** + +ISIS (Intermediate System to Intermediate System) is a routing protocol +which is described in 'ISO10589, RFC1195, RFC5308'. ISIS is an IGP +(Interior Gateway Protocol). Compared with RIP, ISIS can provide +scalable network support and faster convergence times like OSPF. ISIS +is widely used in large networks such as ISP (Internet Service Provider) +and carrier backbone networks. + +* Menu: + +* Configuring isisd:: +* ISIS router:: +* ISIS Timer:: +* ISIS region:: +* ISIS interface:: +* Showing ISIS information:: +* ISIS Traffic Engineering:: +* Debugging ISIS:: +* ISIS Configuration Examples:: + + +File: quagga.info, Node: Configuring isisd, Next: ISIS router, Up: ISIS + +9.1 Configuring isisd +===================== + +There are no 'isisd' specific options. Common options can be specified +(*note Common Invocation Options::) to 'isisd'. 'isisd' needs to +acquire interface information from 'zebra' in order to function. +Therefore 'zebra' must be running before invoking 'isisd'. Also, if +'zebra' is restarted then 'isisd' must be too. + + Like other daemons, 'isisd' configuration is done in ISIS specific +configuration file 'isisd.conf'. + + +File: quagga.info, Node: ISIS router, Next: ISIS Timer, Prev: Configuring isisd, Up: ISIS + +9.2 ISIS router +=============== + +To start ISIS process you have to specify the ISIS router. As of this +writing, 'isisd' does not support multiple ISIS processes. + + -- Command: router isis WORD + -- Command: no router isis WORD + Enable or disable the ISIS process by specifying the ISIS domain + with 'WORD'. 'isisd' does not yet support multiple ISIS processes + but you must specify the name of ISIS process. The ISIS process + name 'WORD' is then used for interface (see command *note ip router + isis WORD::). + + -- ISIS Command: net XX.XXXX. ... .XXX.XX + -- ISIS Command: no net XX.XXXX. ... .XXX.XX + Set/Unset network entity title (NET) provided in ISO format. + + -- ISIS Command: hostname dynamic + -- ISIS Command: no hostname dynamic + Enable support for dynamic hostname. + + -- ISIS Command: area-password [clear | md5] + -- ISIS Command: domain-password [clear | md5] + -- ISIS Command: no area-password + -- ISIS Command: no domain-password + Configure the authentication password for an area, respectively a + domain, as clear text or md5 one. + + -- ISIS Command: log-adjacency-changes + -- ISIS Command: no log-adjacency-changes + Log changes in adjacency state. + + -- ISIS Command: metric-style [narrow | transition | wide] + -- ISIS Command: no metric-style + Set old-style (ISO 10589) or new-style packet formats: - narrow Use + old style of TLVs with narrow metric - transition Send and accept + both styles of TLVs during transition - wide Use new style of TLVs + to carry wider metric + + -- ISIS Command: set-overload-bit + -- ISIS Command: no set-overload-bit + Set overload bit to avoid any transit traffic. + + +File: quagga.info, Node: ISIS Timer, Next: ISIS region, Prev: ISIS router, Up: ISIS + +9.3 ISIS Timer +============== + + -- ISIS Command: lsp-gen-interval <1-120> + -- ISIS Command: lsp-gen-interval [level-1 | level-2] <1-120> + -- ISIS Command: no lsp-gen-interval + -- ISIS Command: no lsp-gen-interval [level-1 | level-2] + Set minimum interval in seconds between regenerating same LSP, + globally, for an area (level-1) or a domain (level-2). + + -- ISIS Command: lsp-refresh-interval <1-65235> + -- ISIS Command: lsp-refresh-interval [level-1 | level-2] <1-65235> + -- ISIS Command: no lsp-refresh-interval + -- ISIS Command: no lsp-refresh-interval [level-1 | level-2] + Set LSP refresh interval in seconds, globally, for an area + (level-1) or a domain (level-2). + + -- ISIS Command: lsp-refresh-interval <1-65235> + -- ISIS Command: lsp-refresh-interval [level-1 | level-2] <1-65235> + -- ISIS Command: no lsp-refresh-interval + -- ISIS Command: no lsp-refresh-interval [level-1 | level-2] + Set LSP refresh interval in seconds, globally, for an area + (level-1) or a domain (level-2). + + -- ISIS Command: max-lsp-lifetime <360-65535> + -- ISIS Command: max-lsp-lifetime [level-1 | level-2] <360-65535> + -- ISIS Command: no max-lsp-lifetime + -- ISIS Command: no max-lsp-lifetime [level-1 | level-2] + Set LSP maximum LSP lifetime in seconds, globally, for an area + (level-1) or a domain (level-2). + + -- ISIS Command: spf-interval <1-120> + -- ISIS Command: spf-interval [level-1 | level-2] <1-120> + -- ISIS Command: no spf-interval + -- ISIS Command: no spf-interval [level-1 | level-2] + Set minimum interval between consecutive SPF calculations in + seconds. + + +File: quagga.info, Node: ISIS region, Next: ISIS interface, Prev: ISIS Timer, Up: ISIS + +9.4 ISIS region +=============== + + -- ISIS Command: is-type [level-1 | level-1-2 | level-2-only] + -- ISIS Command: no is-type + Define the ISIS router behavior: - level-1 Act as a station router + only - level-1-2 Act as both a station router and an area router - + level-2-only Act as an area router only + + +File: quagga.info, Node: ISIS interface, Next: Showing ISIS information, Prev: ISIS region, Up: ISIS + +9.5 ISIS interface +================== + + -- Interface Command: ip router isis WORD + -- Interface Command: no ip router isis WORD + Activate ISIS adjacency on this interface. Note that the name of + ISIS instance must be the same as the one used to configure the + ISIS process (see command *note router isis WORD::). + + -- Interface Command: isis circuit-type [level-1 | level-1-2 | level-2] + -- Interface Command: no isis circuit-type + Configure circuit type for interface: - level-1 Level-1 only + adjacencies are formed - level-1-2 Level-1-2 adjacencies are formed + - level-2-only Level-2 only adjacencies are formed + + -- Interface Command: isis csnp-interval <1-600> + -- Interface Command: isis csnp-interval <1-600> [level-1 | level-2] + -- Interface Command: no isis csnp-interval + -- Interface Command: no isis csnp-interval [level-1 | level-2] + Set CSNP interval in seconds globally, for an area (level-1) or a + domain (level-2). + + -- Interface Command: isis hello padding + Add padding to IS-IS hello packets. + + -- Interface Command: isis hello-interval <1-600> + -- Interface Command: isis hello-interval <1-600> [level-1 | level-2] + -- Interface Command: no isis hello-interval + -- Interface Command: no isis hello-interval [level-1 | level-2] + Set Hello interval in seconds globally, for an area (level-1) or a + domain (level-2). + + -- Interface Command: isis hello-multiplier <2-100> + -- Interface Command: isis hello-multiplier <2-100> [level-1 | level-2] + -- Interface Command: no isis hello-multiplier + -- Interface Command: no isis hello-multiplier [level-1 | level-2] + Set multiplier for Hello holding time globally, for an area + (level-1) or a domain (level-2). + + -- Interface Command: isis metric [<0-255> | <0-16777215>] + -- Interface Command: isis metric [<0-255> | <0-16777215>] [level-1 | + level-2] + -- Interface Command: no isis metric + -- Interface Command: no isis metric [level-1 | level-2] + Set default metric value globally, for an area (level-1) or a + domain (level-2). Max value depend if metric support narrow or + wide value (see command *note metric-style::). + + -- Interface Command: isis network point-to-point + -- Interface Command: no isis network point-to-point + Set network type to 'Point-to-Point' (broadcast by default). + + -- Interface Command: isis passive + -- Interface Command: no isis passive + Configure the passive mode for this interface. + + -- Interface Command: isis password [clear | md5] + -- Interface Command: no isis password + Configure the authentication password (clear or encoded text) for + the interface. + + -- Interface Command: isis priority <0-127> + -- Interface Command: isis priority <0-127> [level-1 | level-2] + -- Interface Command: no isis priority + -- Interface Command: no isis priority [level-1 | level-2] + Set priority for Designated Router election, globally, for the area + (level-1) or the domain (level-2). + + -- Interface Command: isis psnp-interval <1-120> + -- Interface Command: isis psnp-interval <1-120> [level-1 | level-2] + -- Interface Command: no isis psnp-interval + -- Interface Command: no isis psnp-interval [level-1 | level-2] + Set PSNP interval in seconds globally, for an area (level-1) or a + domain (level-2). + + +File: quagga.info, Node: Showing ISIS information, Next: ISIS Traffic Engineering, Prev: ISIS interface, Up: ISIS + +9.6 Showing ISIS information +============================ + + -- Command: show isis summary + Show summary information about ISIS. + + -- Command: show isis hostname + Show information about ISIS node. + + -- Command: show isis interface + -- Command: show isis interface detail + -- Command: show isis interface + Show state and configuration of ISIS specified interface, or all + interfaces if no interface is given with or without details. + + -- Command: show isis neighbor + -- Command: show isis neighbor + -- Command: show isis neighbor detail + Show state and information of ISIS specified neighbor, or all + neighbors if no system id is given with or without details. + + -- Command: show isis database + -- Command: show isis database [detail] + -- Command: show isis database [detail] + -- Command: show isis database detail + Show the ISIS database globally, for a specific LSP id without or + with details. + + -- Command: show isis topology + -- Command: show isis topology [level-1|level-2] + Show topology IS-IS paths to Intermediate Systems, globally, in + area (level-1) or domain (level-2). + + -- Command: show ip route isis + Show the ISIS routing table, as determined by the most recent SPF + calculation. + + +File: quagga.info, Node: ISIS Traffic Engineering, Next: Debugging ISIS, Prev: Showing ISIS information, Up: ISIS + +9.7 Traffic Engineering +======================= + + -- ISIS Command: mpls-te on + -- ISIS Command: no mpls-te + Enable Traffic Engineering LSP flooding. + + -- ISIS Command: mpls-te router-address + -- ISIS Command: no mpls-te router-address + Configure stable IP address for MPLS-TE. + + -- Command: show isis mpls-te interface + -- Command: show isis mpls-te interface INTERFACE + Show MPLS Traffic Engineering parameters for all or specified + interface. + + -- Command: show isis mpls-te router + Show Traffic Engineering router parameters. + + +File: quagga.info, Node: Debugging ISIS, Next: ISIS Configuration Examples, Prev: ISIS Traffic Engineering, Up: ISIS + +9.8 Debugging ISIS +================== + + -- Command: debug isis adj-packets + -- Command: no debug isis adj-packets + IS-IS Adjacency related packets. + + -- Command: debug isis checksum-errors + -- Command: no debug isis checksum-errors + IS-IS LSP checksum errors. + + -- Command: debug isis events + -- Command: no debug isis events + IS-IS Events. + + -- Command: debug isis local-updates + -- Command: no debug isis local-updates + IS-IS local update packets. + + -- Command: debug isis packet-dump + -- Command: no debug isis packet-dump + IS-IS packet dump. + + -- Command: debug isis protocol-errors + -- Command: no debug isis protocol-errors + IS-IS LSP protocol errors. + + -- Command: debug isis route-events + -- Command: no debug isis route-events + IS-IS Route related events. + + -- Command: debug isis snp-packets + -- Command: no debug isis snp-packets + IS-IS CSNP/PSNP packets. + + -- Command: debug isis spf-events + -- Command: debug isis spf-statistics + -- Command: debug isis spf-triggers + -- Command: no debug isis spf-events + -- Command: no debug isis spf-statistics + -- Command: no debug isis spf-triggers + IS-IS Shortest Path First Events, Timing and Statistic Data and + triggering events. + + -- Command: debug isis update-packets + -- Command: no debug isis update-packets + Update related packets. + + -- Command: show debugging isis + Print which ISIS debug level is activate. + + +File: quagga.info, Node: ISIS Configuration Examples, Prev: Debugging ISIS, Up: ISIS + +9.9 ISIS Configuration Examples +=============================== + +A simple example, with MD5 authentication enabled: + + ! + interface eth0 + ip router isis FOO + isis network point-to-point + isis circuit-type level-2-only + ! + router isis FOO + net 47.0023.0000.0000.0000.0000.0000.0000.1900.0004.00 + metric-style wide + is-type level-2-only + + A Traffic Engineering configuration, with Inter-ASv2 support. + + - First, the 'zebra.conf' part: + + hostname HOSTNAME + password PASSWORD + log file /var/log/zebra.log + ! + interface eth0 + ip address 10.2.2.2/24 + mpls-te on + mpls-te link metric 10 + 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 eth1 + ip address 10.1.1.1/24 + mpls-te on + mpls-te link metric 10 + 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 + mpls-te neighbor 10.1.1.2 as 65000 + + - Then the 'isisd.conf' itself: + + hostname HOSTNAME + password PASSWORD + log file /var/log/isisd.log + ! + ! + interface eth0 + ip router isis FOO + ! + interface eth1 + ip router isis FOO + ! + ! + router isis FOO + isis net 47.0023.0000.0000.0000.0000.0000.0000.1900.0004.00 + mpls-te on + mpls-te router-address 10.1.1.1 + ! + line vty + + +File: quagga.info, Node: NHRP, Next: BGP, Prev: ISIS, Up: Top + +10 NHRP +******* + +'nhrpd' is a daemon to support Next Hop Routing Protocol (NHRP). NHRP is +described in RFC2332. + + NHRP is used to improve the efficiency of routing computer network +traffic over Non-Broadcast, Multiple Access (NBMA) Networks. NHRP +provides an ARP-like solution that allows a system to dynamically learn +the NBMA address of the other systems that are part of that network, +allowing these systems to directly communicate without requiring traffic +to use an intermediate hop. + + Cisco Dynamic Multipoint VPN (DMVPN) is based on NHRP, and Quagga +nrhpd implements this scenario. + +* Menu: + +* Routing Design:: +* Configuring NHRP:: +* Hub Functionality:: +* Integration with IKE:: +* NHRP Events:: +* Configuration Example:: + + +File: quagga.info, Node: Routing Design, Next: Configuring NHRP, Up: NHRP + +10.1 Routing Design +=================== + +nhrpd never handles routing of prefixes itself. You need to run some +real routing protocol (e.g. BGP) to advertise routes over the tunnels. +What nhrpd does it establishes 'shortcut routes' that optimizes the +routing protocol to avoid going through extra nodes in NBMA GRE mesh. + + nhrpd does route NHRP domain addresses individually using per-host +prefixes. This is similar to Cisco FlexVPN; but in contrast to opennhrp +which uses a generic subnet route. + + To create NBMA GRE tunnel you might use the following (linux terminal +commands): + ip tunnel add gre1 mode gre key 42 ttl 64 + ip addr add 10.255.255.2/32 dev gre1 + ip link set gre1 up + + Note that the IP-address is assigned as host prefix to gre1. nhrpd +will automatically create additional host routes pointing to gre1 when a +connection with these hosts is established. + + The gre1 subnet prefix should be announced by routing protocol from +the hub nodes (e.g. BGP 'network' announce). This allows the routing +protocol to decide which is the closest hub and determine the relay hub +on prefix basis when direct tunnel is not established. + + nhrpd will redistribute directly connected neighbors to zebra. +Within hub nodes, these routes should be internally redistributed using +some routing protocol (e.g. iBGP) to allow hubs to be able to relay all +traffic. + + This can be achieved in hubs with the following bgp configuration +(network command defines the GRE subnet): + router bgp 65555 + network 172.16.0.0/16 + redistribute nhrp + + +File: quagga.info, Node: Configuring NHRP, Next: Hub Functionality, Prev: Routing Design, Up: NHRP + +10.2 Configuring NHRP +===================== + +FIXME + + +File: quagga.info, Node: Hub Functionality, Next: Integration with IKE, Prev: Configuring NHRP, Up: NHRP + +10.3 Hub Functionality +====================== + +In addition to routing nhrp redistributed host prefixes, the hub nodes +are also responsible to send NHRP Traffic Indication messages that +trigger creation of the shortcut tunnels. + + nhrpd sends Traffic Indication messages based on network traffic +captured using NFLOG. Typically you want to send Traffic Indications for +network traffic that is routed from gre1 back to gre1 in rate limited +manner. This can be achieved with the following iptables rule. + + iptables -A FORWARD -i gre1 -o gre1 \ + -m hashlimit --hashlimit-upto 4/minute --hashlimit-burst 1 \ + --hashlimit-mode srcip,dstip --hashlimit-srcmask 24 \ + --hashlimit-dstmask 24 --hashlimit-name loglimit-0 \ + -j NFLOG --nflog-group 1 --nflog-range 128 + + You can fine tune the src/dstmask according to the prefix lengths you +announce internal, add additional IP range matches, or rate limitation +if needed. However, the above should be good in most cases. + + This kernel NFLOG target's nflog-group is configured in global nhrp +config with: + nhrp nflog-group 1 + + To start sending these traffic notices out from hubs, use the nhrp +per-interface directive: + interface gre1 + ip nhrp redirect + + +File: quagga.info, Node: Integration with IKE, Next: NHRP Events, Prev: Hub Functionality, Up: NHRP + +10.4 Integration with IKE +========================= + +nhrpd needs tight integration with IKE daemon for various reasons. +Currently only strongSwan is supported as IKE daemon. + + nhrpd connects to strongSwan using VICI protocol based on UNIX socket +(hardcoded now as /var/run/charon.vici). + + strongSwan currently needs few patches applied. Please check out the +release +(http://git.alpinelinux.org/cgit/user/tteras/strongswan/log/?h=tteras-release) +and working tree +(http://git.alpinelinux.org/cgit/user/tteras/strongswan/log/?h=tteras) +git repositories for the patches. + + +File: quagga.info, Node: NHRP Events, Next: Configuration Example, Prev: Integration with IKE, Up: NHRP + +10.5 NHRP Events +================ + +FIXME + + +File: quagga.info, Node: Configuration Example, Prev: NHRP Events, Up: NHRP + +10.6 Configuration Example +========================== + +FIXME + + +File: quagga.info, Node: BGP, Next: Configuring Quagga as a Route Server, Prev: NHRP, Up: Top + +11 BGP +****** + +BGP stands for a Border Gateway Protocol. The lastest BGP version is 4. +It is referred as BGP-4. BGP-4 is one of the Exterior Gateway Protocols +and de-fact standard of Inter Domain routing protocol. BGP-4 is +described in 'RFC1771, A Border Gateway Protocol 4 (BGP-4)'. + + Many extensions have been added to 'RFC1771'. 'RFC2858, +Multiprotocol Extensions for BGP-4' provides multiprotocol support to +BGP-4. + +* Menu: + +* Starting BGP:: +* BGP router:: +* BGP MED:: +* BGP network:: +* BGP Peer:: +* BGP Peer Group:: +* BGP Address Family:: +* Autonomous System:: +* BGP Communities Attribute:: +* BGP Extended Communities Attribute:: +* Displaying BGP routes:: +* Capability Negotiation:: +* Route Reflector:: +* Route Server:: +* How to set up a 6-Bone connection:: +* Dump BGP packets and table:: +* BGP Configuration Examples:: + + +File: quagga.info, Node: Starting BGP, Next: BGP router, Up: BGP + +11.1 Starting BGP +================= + +Default configuration file of 'bgpd' is 'bgpd.conf'. 'bgpd' searches +the current directory first then /etc/quagga/bgpd.conf. All of bgpd's +command must be configured in 'bgpd.conf'. + + 'bgpd' specific invocation options are described below. Common +options may also be specified (*note Common Invocation Options::). + +'-p PORT' +'--bgp_port=PORT' + Set the bgp protocol's port number. + +'-r' +'--retain' + When program terminates, retain BGP routes added by zebra. + +'-l' +'--listenon' + Specify a specific IP address for bgpd to listen on, rather than + its default of INADDR_ANY / IN6ADDR_ANY. This can be useful to + constrain bgpd to an internal address, or to run multiple bgpd + processes on one host. + + +File: quagga.info, Node: BGP router, Next: BGP MED, Prev: Starting BGP, Up: BGP + +11.2 BGP router +=============== + +First of all you must configure BGP router with 'router bgp' command. +To configure BGP router, you need AS number. AS number is an +identification of autonomous system. BGP protocol uses the AS number +for detecting whether the BGP connection is internal one or external +one. + + -- Command: router bgp ASN + Enable a BGP protocol process with the specified ASN. After this + statement you can input any 'BGP Commands'. You can not create + different BGP process under different ASN without specifying + 'multiple-instance' (*note Multiple instance::). + + -- Command: no router bgp ASN + Destroy a BGP protocol process with the specified ASN. + + -- BGP: bgp router-id A.B.C.D + This command specifies the router-ID. If 'bgpd' connects to 'zebra' + it gets interface and address information. In that case default + router ID value is selected as the largest IP Address of the + interfaces. When 'router zebra' is not enabled 'bgpd' can't get + interface information so 'router-id' is set to 0.0.0.0. So please + set router-id by hand. + +* Menu: + +* BGP distance:: +* BGP decision process:: +* BGP route flap dampening:: + + +File: quagga.info, Node: BGP distance, Next: BGP decision process, Up: BGP router + +11.2.1 BGP distance +------------------- + + -- BGP: distance bgp <1-255> <1-255> <1-255> + This command change distance value of BGP. Each argument is + distance value for external routes, internal routes and local + routes. + + To have this command applied to existing routes requires a hard + clear. + + -- BGP: distance <1-255> A.B.C.D/M + -- BGP: distance <1-255> A.B.C.D/M WORD + This command set distance value to + + +File: quagga.info, Node: BGP decision process, Next: BGP route flap dampening, Prev: BGP distance, Up: BGP router + +11.2.2 BGP decision process +--------------------------- + +The decision process Quagga BGP uses to select routes is as follows: + +1. Weight check + prefer higher local weight routes to lower routes. + +2. Local preference check + prefer higher local preference routes to lower. + +3. Local route check + Prefer local routes (statics, aggregates, redistributed) to + received routes. + +4. AS path length check + Prefer shortest hop-count AS_PATHs. + +5. Origin check + Prefer the lowest origin type route. That is, prefer IGP origin + routes to EGP, to Incomplete routes. + +6. MED check + Where routes with a MED were received from the same AS, prefer the + route with the lowest MED. *Note BGP MED::. + +7. External check + Prefer the route received from an external, eBGP peer over routes + received from other types of peers. + +8. IGP cost check + Prefer the route with the lower IGP cost. + +9. Multi-path check + If multi-pathing is enabled, then check whether the routes not yet + distinguished in preference may be considered equal. If *note bgp + bestpath as-path multipath-relax:: is set, all such routes are + considered equal, otherwise routes received via iBGP with identical + AS_PATHs or routes received from eBGP neighbours in the same AS are + considered equal. + +10 Already-selected external check + + Where both routes were received from eBGP peers, then prefer the + route which is already selected. Note that this check is not + applied if *note bgp bestpath compare-routerid:: is configured. + This check can prevent some cases of oscillation. + +11. Router-ID check + Prefer the route with the lowest router-ID. If the route has an + ORIGINATOR_ID attribute, through iBGP reflection, then that router + ID is used, otherwise the router-ID of the peer the route was + received from is used. + +12. Cluster-List length check + The route with the shortest cluster-list length is used. The + cluster-list reflects the iBGP reflection path the route has taken. + +13. Peer address + Prefer the route received from the peer with the higher transport + layer address, as a last-resort tie-breaker. + + -- BGP: bgp bestpath as-path confed + This command specifies that the length of confederation path sets + and sequences should should be taken into account during the BGP + best path decision process. + + -- BGP: bgp bestpath as-path multipath-relax + This command specifies that BGP decision process should consider + paths of equal AS_PATH length candidates for multipath computation. + Without the knob, the entire AS_PATH must match for multipath + computation. + + -- BGP: bgp bestpath compare-routerid + + Ensure that when comparing routes where both are equal on most + metrics, including local-pref, AS_PATH length, IGP cost, MED, that + the tie is broken based on router-ID. + + If this option is enabled, then the already-selected check, where + already selected eBGP routes are preferred, is skipped. + + If a route has an ORIGINATOR_ID attribute because it has been + reflected, that ORIGINATOR_ID will be used. Otherwise, the + router-ID of the peer the route was received from will be used. + + The advantage of this is that the route-selection (at this point) + will be more deterministic. The disadvantage is that a few or even + one lowest-ID router may attract all trafic to otherwise-equal + paths because of this check. It may increase the possibility of + MED or IGP oscillation, unless other measures were taken to avoid + these. The exact behaviour will be sensitive to the iBGP and + reflection topology. + + +File: quagga.info, Node: BGP route flap dampening, Prev: BGP decision process, Up: BGP router + +11.2.3 BGP route flap dampening +------------------------------- + + -- BGP: bgp dampening <1-45> <1-20000> <1-20000> <1-255> + This command enables BGP route-flap dampening and specifies + dampening parameters. + + half-life + Half-life time for the penalty + reuse-threshold + Value to start reusing a route + suppress-threshold + Value to start suppressing a route + max-suppress + Maximum duration to suppress a stable route + + The route-flap damping algorithm is compatible with 'RFC2439'. The + use of this command is not recommended nowadays, see RIPE-378. + + +File: quagga.info, Node: BGP MED, Next: BGP network, Prev: BGP router, Up: BGP + +11.3 BGP MED +============ + +The BGP MED (Multi_Exit_Discriminator) attribute has properties which +can cause subtle convergence problems in BGP. These properties and +problems have proven to be hard to understand, at least historically, +and may still not be widely understood. The following attempts to +collect together and present what is known about MED, to help operators +and Quagga users in designing and configuring their networks. + + The BGP MED (Multi_Exit_Discriminator) attribute is intended to allow +one AS to indicate its preferences for its ingress points to another AS. +The MED attribute will not be propagated on to another AS by the +receiving AS - it is 'non-transitive' in the BGP sense. + + E.g., if AS X and AS Y have 2 different BGP peering points, then AS X +might set a MED of 100 on routes advertised at one and a MED of 200 at +the other. When AS Y selects between otherwise equal routes to or via +AS X, AS Y should prefer to take the path via the lower MED peering of +100 with AS X. Setting the MED allows an AS to influence the routing +taken to it within another, neighbouring AS. + + In this use of MED it is not really meaningful to compare the MED +value on routes where the next AS on the paths differs. E.g., if AS Y +also had a route for some destination via AS Z in addition to the routes +from AS X, and AS Z had also set a MED, it wouldn't make sense for AS Y +to compare AS Z's MED values to those of AS X. The MED values have been +set by different administrators, with different frames of reference. + + The default behaviour of BGP therefore is to not compare MED values +across routes received from different neighbouring ASes. In Quagga this +is done by comparing the neighbouring, left-most AS in the received +AS_PATHs of the routes and only comparing MED if those are the same. + + Unfortunately, this behaviour of MED, of sometimes being compared +across routes and sometimes not, depending on the properties of those +other routes, means MED can cause the order of preference over all the +routes to be undefined. That is, given routes A, B, and C, if A is +preferred to B, and B is preferred to C, then a well-defined order +should mean the preference is transitive (in the sense of orders (1)) +and that A would be preferred to C. + + However, when MED is involved this need not be the case. With MED it +is possible that C is actually preferred over A. So A is preferred to B, +B is preferred to C, but C is preferred to A. This can be true even +where BGP defines a deterministic "most preferred" route out of the full +set of A,B,C. With MED, for any given set of routes there may be a +deterministically preferred route, but there need not be any way to +arrange them into any order of preference. With unmodified MED, the +order of preference of routes literally becomes undefined. + + That MED can induce non-transitive preferences over routes can cause +issues. Firstly, it may be perceived to cause routing table churn +locally at speakers; secondly, and more seriously, it may cause routing +instability in iBGP topologies, where sets of speakers continually +oscillate between different paths. + + The first issue arises from how speakers often implement routing +decisions. Though BGP defines a selection process that will +deterministically select the same route as best at any given speaker, +even with MED, that process requires evaluating all routes together. +For performance and ease of implementation reasons, many implementations +evaluate route preferences in a pair-wise fashion instead. Given there +is no well-defined order when MED is involved, the best route that will +be chosen becomes subject to implementation details, such as the order +the routes are stored in. That may be (locally) non-deterministic, e.g. +it may be the order the routes were received in. + + This indeterminism may be considered undesirable, though it need not +cause problems. It may mean additional routing churn is perceived, as +sometimes more updates may be produced than at other times in reaction +to some event . + + This first issue can be fixed with a more deterministic route +selection that ensures routes are ordered by the neighbouring AS during +selection. *Note bgp deterministic-med::. This may reduce the number +of updates as routes are received, and may in some cases reduce routing +churn. Though, it could equally deterministically produce the largest +possible set of updates in response to the most common sequence of +received updates. + + A deterministic order of evaluation tends to imply an additional +overhead of sorting over any set of n routes to a destination. The +implementation of deterministic MED in Quagga scales significantly worse +than most sorting algorithms at present, with the number of paths to a +given destination. That number is often low enough to not cause any +issues, but where there are many paths, the deterministic comparison may +quickly become increasingly expensive in terms of CPU. + + Deterministic local evaluation can _not_ fix the second, more major, +issue of MED however. Which is that the non-transitive preference of +routes MED can cause may lead to routing instability or oscillation +across multiple speakers in iBGP topologies. This can occur with +full-mesh iBGP, but is particularly problematic in non-full-mesh iBGP +topologies that further reduce the routing information known to each +speaker. This has primarily been documented with iBGP route-reflection +topologies. However, any route-hiding technologies potentially could +also exacerbate oscillation with MED. + + This second issue occurs where speakers each have only a subset of +routes, and there are cycles in the preferences between different +combinations of routes - as the undefined order of preference of MED +allows - and the routes are distributed in a way that causes the BGP +speakers to 'chase' those cycles. This can occur even if all speakers +use a deterministic order of evaluation in route selection. + + E.g., speaker 4 in AS A might receive a route from speaker 2 in AS X, +and from speaker 3 in AS Y; while speaker 5 in AS A might receive that +route from speaker 1 in AS Y. AS Y might set a MED of 200 at speaker 1, +and 100 at speaker 3. I.e, using ASN:ID:MED to label the speakers: + + + /---------------\ + X:2------|--A:4-------A:5--|-Y:1:200 + Y:3:100--|-/ | + \---------------/ + + + Assuming all other metrics are equal (AS_PATH, ORIGIN, 0 IGP costs), +then based on the RFC4271 decision process speaker 4 will choose X:2 +over Y:3:100, based on the lower ID of 2. Speaker 4 advertises X:2 to +speaker 5. Speaker 5 will continue to prefer Y:1:200 based on the ID, +and advertise this to speaker 4. Speaker 4 will now have the full set +of routes, and the Y:1:200 it receives from 5 will beat X:2, but when +speaker 4 compares Y:1:200 to Y:3:100 the MED check now becomes active +as the ASes match, and now Y:3:100 is preferred. Speaker 4 therefore +now advertises Y:3:100 to 5, which will also agrees that Y:3:100 is +preferred to Y:1:200, and so withdraws the latter route from 4. Speaker +4 now has only X:2 and Y:3:100, and X:2 beats Y:3:100, and so speaker 4 +implicitly updates its route to speaker 5 to X:2. Speaker 5 sees that +Y:1:200 beats X:2 based on the ID, and advertises Y:1:200 to speaker 4, +and the cycle continues. + + The root cause is the lack of a clear order of preference caused by +how MED sometimes is and sometimes is not compared, leading to this +cycle in the preferences between the routes: + + + /---> X:2 ---beats---> Y:3:100 --\ + | | + | | + \---beats--- Y:1:200 <---beats---/ + + + This particular type of oscillation in full-mesh iBGP topologies can +be avoided by speakers preferring already selected, external routes +rather than choosing to update to new a route based on a post-MED metric +(e.g. router-ID), at the cost of a non-deterministic selection process. +Quagga implements this, as do many other implementations, so long as it +is not overridden by setting *note bgp bestpath compare-routerid::, and +see also *note BGP decision process::, . + + However, more complex and insidious cycles of oscillation are +possible with iBGP route-reflection, which are not so easily avoided. +These have been documented in various places. See, e.g., 'McPherson, D. +and Gill, V. and Walton, D., "Border Gateway Protocol (BGP) Persistent +Route Oscillation Condition", IETF RFC3345', and 'Flavel, A. and M. +Roughan, "Stable and flexible iBGP", ACM SIGCOMM 2009', and 'Griffin, T. +and G. Wilfong, "On the correctness of IBGP configuration", ACM SIGCOMM +2002' for concrete examples and further references. + + There is as of this writing _no_ known way to use MED for its +original purpose; _and_ reduce routing information in iBGP topologies; +_and_ be sure to avoid the instability problems of MED due the +non-transitive routing preferences it can induce; in general on +arbitrary networks. + + There may be iBGP topology specific ways to reduce the instability +risks, even while using MED, e.g. by constraining the reflection +topology and by tuning IGP costs between route-reflector clusters, see +RFC3345 for details. In the near future, the Add-Path extension to BGP +may also solve MED oscillation while still allowing MED to be used as +intended, by distributing "best-paths per neighbour AS". This would be +at the cost of distributing at least as many routes to all speakers as a +full-mesh iBGP would, if not more, while also imposing similar CPU +overheads as the "Deterministic MED" feature at each Add-Path reflector. + + More generally, the instability problems that MED can introduce on +more complex, non-full-mesh, iBGP topologies may be avoided either by: + + * Setting *note bgp always-compare-med::, however this allows MED to + be compared across values set by different neighbour ASes, which + may not produce coherent desirable results, of itself. + + * Effectively ignoring MED by setting MED to the same value (e.g. 0) + using *note routemap set metric:: on all received routes, in + combination with setting *note bgp always-compare-med:: on all + speakers. This is the simplest and most performant way to avoid + MED oscillation issues, where an AS is happy not to allow + neighbours to inject this problematic metric. + + As MED is evaluated after the AS_PATH length check, another possible +use for MED is for intra-AS steering of routes with equal AS_PATH +length, as an extension of the last case above. As MED is evaluated +before IGP metric, this can allow cold-potato routing to be implemented +to send traffic to preferred hand-offs with neighbours, rather than the +closest hand-off according to the IGP metric. + + Note that even if action is taken to address the MED non-transitivity +issues, other oscillations may still be possible. E.g., on IGP cost if +iBGP and IGP topologies are at cross-purposes with each other - see the +Flavel and Roughan paper above for an example. Hence the guideline that +the iBGP topology should follow the IGP topology. + + -- BGP: bgp deterministic-med + + Carry out route-selection in way that produces deterministic + answers locally, even in the face of MED and the lack of a + well-defined order of preference it can induce on routes. Without + this option the preferred route with MED may be determined largely + by the order that routes were received in. + + Setting this option will have a performance cost that may be + noticeable when there are many routes for each destination. + Currently in Quagga it is implemented in a way that scales poorly + as the number of routes per destination increases. + + The default is that this option is not set. + + Note that there are other sources of indeterminism in the route +selection process, specifically, the preference for older and already +selected routes from eBGP peers, *Note BGP decision process::. + + -- BGP: bgp always-compare-med + + Always compare the MED on routes, even when they were received from + different neighbouring ASes. Setting this option makes the order + of preference of routes more defined, and should eliminate MED + induced oscillations. + + If using this option, it may also be desirable to use *note + routemap set metric:: to set MED to 0 on routes received from + external neighbours. + + This option can be used, together with *note routemap set metric:: + to use MED as an intra-AS metric to steer equal-length AS_PATH + routes to, e.g., desired exit points. + + ---------- Footnotes ---------- + + (1) For some set of objects to have an order, there _must_ be some +binary ordering relation that is defined for _every_ combination of +those objects, and that relation _must_ be transitive. I.e., if the +relation operator is ≺, and if a ≺ b and b ≺ c then that relation +must carry over and it _must_ be that a ≺ c for the objects to have an +order. The ordering relation may allow for equality, i.e. a ≺ b and +b ≺ a may both be true amd imply that a and b are equal in the order +and not distinguished by it, in which case the set has a partial order. +Otherwise, if there is an order, all the objects have a distinct place +in the order and the set has a total order. + + +File: quagga.info, Node: BGP network, Next: BGP Peer, Prev: BGP MED, Up: BGP + +11.4 BGP network +================ + +* Menu: + +* BGP route:: +* Route Aggregation:: +* Redistribute to BGP:: + + +File: quagga.info, Node: BGP route, Next: Route Aggregation, Up: BGP network + +11.4.1 BGP route +---------------- + + -- BGP: network A.B.C.D/M + This command adds the announcement network. + router bgp 1 + network 10.0.0.0/8 + This configuration example says that network 10.0.0.0/8 will be + announced to all neighbors. Some vendors' routers don't advertise + routes if they aren't present in their IGP routing tables; 'bgpd' + doesn't care about IGP routes when announcing its routes. + + -- BGP: no network A.B.C.D/M + + +File: quagga.info, Node: Route Aggregation, Next: Redistribute to BGP, Prev: BGP route, Up: BGP network + +11.4.2 Route Aggregation +------------------------ + + -- BGP: aggregate-address A.B.C.D/M + This command specifies an aggregate address. + + -- BGP: aggregate-address A.B.C.D/M as-set + This command specifies an aggregate address. Resulting routes + include AS set. + + -- BGP: aggregate-address A.B.C.D/M summary-only + This command specifies an aggregate address. Aggreated routes will + not be announce. + + -- BGP: no aggregate-address A.B.C.D/M + + +File: quagga.info, Node: Redistribute to BGP, Prev: Route Aggregation, Up: BGP network + +11.4.3 Redistribute to BGP +-------------------------- + + -- BGP: redistribute kernel + Redistribute kernel route to BGP process. + + -- BGP: redistribute static + Redistribute static route to BGP process. + + -- BGP: redistribute connected + Redistribute connected route to BGP process. + + -- BGP: redistribute rip + Redistribute RIP route to BGP process. + + -- BGP: redistribute ospf + Redistribute OSPF route to BGP process. + + +File: quagga.info, Node: BGP Peer, Next: BGP Peer Group, Prev: BGP network, Up: BGP + +11.5 BGP Peer +============= + +* Menu: + +* Defining Peer:: +* BGP Peer commands:: +* Peer filtering:: + + +File: quagga.info, Node: Defining Peer, Next: BGP Peer commands, Up: BGP Peer + +11.5.1 Defining Peer +-------------------- + + -- BGP: neighbor PEER remote-as ASN + Creates a new neighbor whose remote-as is ASN. PEER can be an IPv4 + address or an IPv6 address. + router bgp 1 + neighbor 10.0.0.1 remote-as 2 + In this case my router, in AS-1, is trying to peer with AS-2 at + 10.0.0.1. + + This command must be the first command used when configuring a + neighbor. If the remote-as is not specified, 'bgpd' will complain + like this: + can't find neighbor 10.0.0.1 + + +File: quagga.info, Node: BGP Peer commands, Next: Peer filtering, Prev: Defining Peer, Up: BGP Peer + +11.5.2 BGP Peer commands +------------------------ + +In a 'router bgp' clause there are neighbor specific configurations +required. + + -- BGP: neighbor PEER shutdown + -- BGP: no neighbor PEER shutdown + Shutdown the peer. We can delete the neighbor's configuration by + 'no neighbor PEER remote-as AS-NUMBER' but all configuration of the + neighbor will be deleted. When you want to preserve the + configuration, but want to drop the BGP peer, use this syntax. + + -- BGP: neighbor PEER ebgp-multihop + -- BGP: no neighbor PEER ebgp-multihop + + -- BGP: neighbor PEER description ... + -- BGP: no neighbor PEER description ... + Set description of the peer. + + -- BGP: neighbor PEER version VERSION + Set up the neighbor's BGP version. VERSION can be 4, 4+ or 4-. + BGP version 4 is the default value used for BGP peering. BGP + version 4+ means that the neighbor supports Multiprotocol + Extensions for BGP-4. BGP version 4- is similar but the neighbor + speaks the old Internet-Draft revision 00's Multiprotocol + Extensions for BGP-4. Some routing software is still using this + version. + + -- BGP: neighbor PEER interface IFNAME + -- BGP: no neighbor PEER interface IFNAME + When you connect to a BGP peer over an IPv6 link-local address, you + have to specify the IFNAME of the interface used for the + connection. To specify IPv4 session addresses, see the 'neighbor + PEER update-source' command below. + + This command is deprecated and may be removed in a future release. + Its use should be avoided. + + -- BGP: neighbor PEER next-hop-self [all] + -- BGP: no neighbor PEER next-hop-self [all] + This command specifies an announced route's nexthop as being + equivalent to the address of the bgp router if it is learned via + eBGP. If the optional keyword 'all' is specified the modifiation is + done also for routes learned via iBGP. + + -- BGP: neighbor PEER update-source + -- BGP: no neighbor PEER update-source + Specify the IPv4 source address to use for the BGP session to this + neighbour, may be specified as either an IPv4 address directly or + as an interface name (in which case the 'zebra' daemon MUST be + running in order for 'bgpd' to be able to retrieve interface + state). + router bgp 64555 + neighbor foo update-source 192.168.0.1 + neighbor bar update-source lo0 + + -- BGP: neighbor PEER default-originate + -- BGP: no neighbor PEER default-originate + 'bgpd''s default is to not announce the default route (0.0.0.0/0) + even it is in routing table. When you want to announce default + routes to the peer, use this command. + + -- BGP: neighbor PEER port PORT + -- BGP: neighbor PEER port PORT + + -- BGP: neighbor PEER send-community + -- BGP: neighbor PEER send-community + + -- BGP: neighbor PEER weight WEIGHT + -- BGP: no neighbor PEER weight WEIGHT + This command specifies a default WEIGHT value for the neighbor's + routes. + + -- BGP: neighbor PEER maximum-prefix NUMBER + -- BGP: no neighbor PEER maximum-prefix NUMBER + + -- BGP: neighbor PEER local-as AS-NUMBER + -- BGP: neighbor PEER local-as AS-NUMBER no-prepend + -- BGP: neighbor PEER local-as AS-NUMBER no-prepend replace-as + -- BGP: no neighbor PEER local-as + Specify an alternate AS for this BGP process when interacting with + the specified peer. With no modifiers, the specified local-as is + prepended to the received AS_PATH when receiving routing updates + from the peer, and prepended to the outgoing AS_PATH (after the + process local AS) when transmitting local routes to the peer. + + If the no-prepend attribute is specified, then the supplied + local-as is not prepended to the received AS_PATH. + + If the replace-as attribute is specified, then only the supplied + local-as is prepended to the AS_PATH when transmitting local-route + updates to this peer. + + Note that replace-as can only be specified if no-prepend is. + + This command is only allowed for eBGP peers. + + -- BGP: neighbor PEER ttl-security hops NUMBER + -- BGP: no neighbor PEER ttl-security hops NUMBER + This command enforces Generalized TTL Security Mechanism (GTSM), as + specified in RFC 5082. With this command, only neighbors that are + the specified number of hops away will be allowed to become + neighbors. This command is mututally exclusive with + 'ebgp-multihop'. + + +File: quagga.info, Node: Peer filtering, Prev: BGP Peer commands, Up: BGP Peer + +11.5.3 Peer filtering +--------------------- + + -- BGP: neighbor PEER distribute-list NAME [in|out] + This command specifies a distribute-list for the peer. DIRECT is + 'in' or 'out'. + + -- BGP command: neighbor PEER prefix-list NAME [in|out] + + -- BGP command: neighbor PEER filter-list NAME [in|out] + + -- BGP: neighbor PEER route-map NAME [in|out] + Apply a route-map on the neighbor. DIRECT must be 'in' or 'out'. + + -- BGP: bgp route-reflector allow-outbound-policy + By default, attribute modification via route-map policy out is not + reflected on reflected routes. This option allows the + modifications to be reflected as well. Once enabled, it affects + all reflected routes. + + +File: quagga.info, Node: BGP Peer Group, Next: BGP Address Family, Prev: BGP Peer, Up: BGP + +11.6 BGP Peer Group +=================== + + -- BGP: neighbor WORD peer-group + This command defines a new peer group. + + -- BGP: neighbor PEER peer-group WORD + This command bind specific peer to peer group WORD. + + +File: quagga.info, Node: BGP Address Family, Next: Autonomous System, Prev: BGP Peer Group, Up: BGP + +11.7 BGP Address Family +======================= + +Multiprotocol BGP enables BGP to carry routing information for multiple +Network Layer protocols. BGP supports multiple Address Family +Identifier (AFI), namely IPv4 and IPv6. Support is also provided for +multiple sets of per-AFI information via Subsequent Address Family +Identifiers (SAFI). In addition to unicast information, VPN information +'RFC4364' and 'RFC4659', and Encapsulation information 'RFC5512' is +supported. + + -- Command: show ip bgp vpnv4 all + -- Command: show ipv6 bgp vpn all + Print active IPV4 or IPV6 routes advertised via the VPN SAFI. + + -- Command: show ip bgp encap all + -- Command: show ipv6 bgp encap all + Print active IPV4 or IPV6 routes advertised via the Encapsulation + SAFI. + + -- Command: show bgp ipv4 encap summary + -- Command: show bgp ipv4 vpn summary + -- Command: show bgp ipv6 encap summary + -- Command: show bgp ipv6 vpn summary + Print a summary of neighbor connections for the specified AFI/SAFI + combination. + + +File: quagga.info, Node: Autonomous System, Next: BGP Communities Attribute, Prev: BGP Address Family, Up: BGP + +11.8 Autonomous System +====================== + +The AS (Autonomous System) number is one of the essential element of +BGP. BGP is a distance vector routing protocol, and the AS-Path +framework provides distance vector metric and loop detection to BGP. +'RFC1930, Guidelines for creation, selection, and registration of an +Autonomous System (AS)' provides some background on the concepts of an +AS. + + The AS number is a two octet value, ranging in value from 1 to 65535. +The AS numbers 64512 through 65535 are defined as private AS numbers. +Private AS numbers must not to be advertised in the global Internet. + +* Menu: + +* AS Path Regular Expression:: +* Display BGP Routes by AS Path:: +* AS Path Access List:: +* Using AS Path in Route Map:: +* Private AS Numbers:: + + +File: quagga.info, Node: AS Path Regular Expression, Next: Display BGP Routes by AS Path, Up: Autonomous System + +11.8.1 AS Path Regular Expression +--------------------------------- + +AS path regular expression can be used for displaying BGP routes and AS +path access list. AS path regular expression is based on 'POSIX 1003.2' +regular expressions. Following description is just a subset of 'POSIX' +regular expression. User can use full 'POSIX' regular expression. +Adding to that special character '_' is added for AS path regular +expression. + +'.' + Matches any single character. +'*' + Matches 0 or more occurrences of pattern. +'+' + Matches 1 or more occurrences of pattern. +'?' + Match 0 or 1 occurrences of pattern. +'^' + Matches the beginning of the line. +'$' + Matches the end of the line. +'_' + Character '_' has special meanings in AS path regular expression. + It matches to space and comma , and AS set delimiter { and } and AS + confederation delimiter '(' and ')'. And it also matches to the + beginning of the line and the end of the line. So '_' can be used + for AS value boundaries match. 'show ip bgp regexp _7675_' matches + to all of BGP routes which as AS number include 7675. + + +File: quagga.info, Node: Display BGP Routes by AS Path, Next: AS Path Access List, Prev: AS Path Regular Expression, Up: Autonomous System + +11.8.2 Display BGP Routes by AS Path +------------------------------------ + +To show BGP routes which has specific AS path information 'show ip bgp' +command can be used. + + -- Command: show ip bgp regexp LINE + This commands display BGP routes that matches AS path regular + expression LINE. + + +File: quagga.info, Node: AS Path Access List, Next: Using AS Path in Route Map, Prev: Display BGP Routes by AS Path, Up: Autonomous System + +11.8.3 AS Path Access List +-------------------------- + +AS path access list is user defined AS path. + + -- Command: ip as-path access-list WORD {permit|deny} LINE + This command defines a new AS path access list. + + -- Command: no ip as-path access-list WORD + -- Command: no ip as-path access-list WORD {permit|deny} LINE + + +File: quagga.info, Node: Using AS Path in Route Map, Next: Private AS Numbers, Prev: AS Path Access List, Up: Autonomous System + +11.8.4 Using AS Path in Route Map +--------------------------------- + + -- Route Map: match as-path WORD + + -- Route Map: set as-path prepend AS-PATH + Prepend the given string of AS numbers to the AS_PATH. + + -- Route Map: set as-path prepend last-as NUM + Prepend the existing last AS number (the leftmost ASN) to the + AS_PATH. + + +File: quagga.info, Node: Private AS Numbers, Prev: Using AS Path in Route Map, Up: Autonomous System + +11.8.5 Private AS Numbers +------------------------- + + +File: quagga.info, Node: BGP Communities Attribute, Next: BGP Extended Communities Attribute, Prev: Autonomous System, Up: BGP + +11.9 BGP Communities Attribute +============================== + +BGP communities attribute is widely used for implementing policy +routing. Network operators can manipulate BGP communities attribute +based on their network policy. BGP communities attribute is defined in +'RFC1997, BGP Communities Attribute' and 'RFC1998, An Application of the +BGP Community Attribute in Multi-home Routing'. It is an optional +transitive attribute, therefore local policy can travel through +different autonomous system. + + Communities attribute is a set of communities values. Each +communities value is 4 octet long. The following format is used to +define communities value. + +'AS:VAL' + This format represents 4 octet communities value. 'AS' is high + order 2 octet in digit format. 'VAL' is low order 2 octet in digit + format. This format is useful to define AS oriented policy value. + For example, '7675:80' can be used when AS 7675 wants to pass local + policy value 80 to neighboring peer. +'internet' + 'internet' represents well-known communities value 0. +'no-export' + 'no-export' represents well-known communities value 'NO_EXPORT' + (0xFFFFFF01). All routes carry this value must not be advertised + to outside a BGP confederation boundary. If neighboring BGP peer + is part of BGP confederation, the peer is considered as inside a + BGP confederation boundary, so the route will be announced to the + peer. +'no-advertise' + 'no-advertise' represents well-known communities value + 'NO_ADVERTISE' + (0xFFFFFF02). All routes carry this value must not be advertise to + other BGP peers. +'local-AS' + 'local-AS' represents well-known communities value + 'NO_EXPORT_SUBCONFED' (0xFFFFFF03). All routes carry this value + must not be advertised to external BGP peers. Even if the + neighboring router is part of confederation, it is considered as + external BGP peer, so the route will not be announced to the peer. + + When BGP communities attribute is received, duplicated communities +value in the communities attribute is ignored and each communities +values are sorted in numerical order. + +* Menu: + +* BGP Community Lists:: +* Numbered BGP Community Lists:: +* BGP Community in Route Map:: +* Display BGP Routes by Community:: +* Using BGP Communities Attribute:: + + +File: quagga.info, Node: BGP Community Lists, Next: Numbered BGP Community Lists, Up: BGP Communities Attribute + +11.9.1 BGP Community Lists +-------------------------- + +BGP community list is a user defined BGP communites attribute list. BGP +community list can be used for matching or manipulating BGP communities +attribute in updates. + + There are two types of community list. One is standard community +list and another is expanded community list. Standard community list +defines communities attribute. Expanded community list defines +communities attribute string with regular expression. Standard +community list is compiled into binary format when user define it. +Standard community list will be directly compared to BGP communities +attribute in BGP updates. Therefore the comparison is faster than +expanded community list. + + -- Command: ip community-list standard NAME {permit|deny} COMMUNITY + This command defines a new standard community list. COMMUNITY is + communities value. The COMMUNITY is compiled into community + structure. We can define multiple community list under same name. + In that case match will happen user defined order. Once the + community list matches to communities attribute in BGP updates it + return permit or deny by the community list definition. When there + is no matched entry, deny will be returned. When COMMUNITY is + empty it matches to any routes. + + -- Command: ip community-list expanded NAME {permit|deny} LINE + This command defines a new expanded community list. LINE is a + string expression of communities attribute. LINE can include + regular expression to match communities attribute in BGP updates. + + -- Command: no ip community-list NAME + -- Command: no ip community-list standard NAME + -- Command: no ip community-list expanded NAME + These commands delete community lists specified by NAME. All of + community lists shares a single name space. So community lists can + be removed simpley specifying community lists name. + + -- Command: show ip community-list + -- Command: show ip community-list NAME + This command display current community list information. When NAME + is specified the specified community list's information is shown. + + # show ip community-list + Named Community standard list CLIST + permit 7675:80 7675:100 no-export + deny internet + Named Community expanded list EXPAND + permit : + + # show ip community-list CLIST + Named Community standard list CLIST + permit 7675:80 7675:100 no-export + deny internet + + +File: quagga.info, Node: Numbered BGP Community Lists, Next: BGP Community in Route Map, Prev: BGP Community Lists, Up: BGP Communities Attribute + +11.9.2 Numbered BGP Community Lists +----------------------------------- + +When number is used for BGP community list name, the number has special +meanings. Community list number in the range from 1 and 99 is standard +community list. Community list number in the range from 100 to 199 is +expanded community list. These community lists are called as numbered +community lists. On the other hand normal community lists is called as +named community lists. + + -- Command: ip community-list <1-99> {permit|deny} COMMUNITY + This command defines a new community list. <1-99> is standard + community list number. Community list name within this range + defines standard community list. When COMMUNITY is empty it + matches to any routes. + + -- Command: ip community-list <100-199> {permit|deny} COMMUNITY + This command defines a new community list. <100-199> is expanded + community list number. Community list name within this range + defines expanded community list. + + -- Command: ip community-list NAME {permit|deny} COMMUNITY + When community list type is not specifed, the community list type + is automatically detected. If COMMUNITY can be compiled into + communities attribute, the community list is defined as a standard + community list. Otherwise it is defined as an expanded community + list. This feature is left for backward compability. Use of this + feature is not recommended. + + +File: quagga.info, Node: BGP Community in Route Map, Next: Display BGP Routes by Community, Prev: Numbered BGP Community Lists, Up: BGP Communities Attribute + +11.9.3 BGP Community in Route Map +--------------------------------- + +In Route Map (*note Route Map::), we can match or set BGP communities +attribute. Using this feature network operator can implement their +network policy based on BGP communities attribute. + + Following commands can be used in Route Map. + + -- Route Map: match community WORD + -- Route Map: match community WORD exact-match + This command perform match to BGP updates using community list + WORD. When the one of BGP communities value match to the one of + communities value in community list, it is match. When + 'exact-match' keyword is spcified, match happen only when BGP + updates have completely same communities value specified in the + community list. + + -- Route Map: set community none + -- Route Map: set community COMMUNITY + -- Route Map: set community COMMUNITY additive + This command manipulate communities value in BGP updates. When + 'none' is specified as communities value, it removes entire + communities attribute from BGP updates. When COMMUNITY is not + 'none', specified communities value is set to BGP updates. If BGP + updates already has BGP communities value, the existing BGP + communities value is replaced with specified COMMUNITY value. When + 'additive' keyword is specified, COMMUNITY is appended to the + existing communities value. + + -- Route Map: set comm-list WORD delete + This command remove communities value from BGP communities + attribute. The WORD is community list name. When BGP route's + communities value matches to the community list WORD, the + communities value is removed. When all of communities value is + removed eventually, the BGP update's communities attribute is + completely removed. + + +File: quagga.info, Node: Display BGP Routes by Community, Next: Using BGP Communities Attribute, Prev: BGP Community in Route Map, Up: BGP Communities Attribute + +11.9.4 Display BGP Routes by Community +-------------------------------------- + +To show BGP routes which has specific BGP communities attribute, 'show +ip bgp' command can be used. The COMMUNITY value and community list can +be used for 'show ip bgp' command. + + -- Command: show ip bgp community + -- Command: show ip bgp community COMMUNITY + -- Command: show ip bgp community COMMUNITY exact-match + 'show ip bgp community' displays BGP routes which has communities + attribute. When COMMUNITY is specified, BGP routes that matches + COMMUNITY value is displayed. For this command, 'internet' keyword + can't be used for COMMUNITY value. When 'exact-match' is + specified, it display only routes that have an exact match. + + -- Command: show ip bgp community-list WORD + -- Command: show ip bgp community-list WORD exact-match + This commands display BGP routes that matches community list WORD. + When 'exact-match' is specified, display only routes that have an + exact match. + + +File: quagga.info, Node: Using BGP Communities Attribute, Prev: Display BGP Routes by Community, Up: BGP Communities Attribute + +11.9.5 Using BGP Communities Attribute +-------------------------------------- + +Following configuration is the most typical usage of BGP communities +attribute. AS 7675 provides upstream Internet connection to AS 100. +When following configuration exists in AS 7675, AS 100 networks operator +can set local preference in AS 7675 network by setting BGP communities +attribute to the updates. + + router bgp 7675 + neighbor 192.168.0.1 remote-as 100 + neighbor 192.168.0.1 route-map RMAP in + ! + ip community-list 70 permit 7675:70 + ip community-list 70 deny + ip community-list 80 permit 7675:80 + ip community-list 80 deny + ip community-list 90 permit 7675:90 + ip community-list 90 deny + ! + route-map RMAP permit 10 + match community 70 + set local-preference 70 + ! + route-map RMAP permit 20 + match community 80 + set local-preference 80 + ! + route-map RMAP permit 30 + match community 90 + set local-preference 90 + + Following configuration announce 10.0.0.0/8 from AS 100 to AS 7675. +The route has communities value 7675:80 so when above configuration +exists in AS 7675, announced route's local preference will be set to +value 80. + + router bgp 100 + network 10.0.0.0/8 + neighbor 192.168.0.2 remote-as 7675 + neighbor 192.168.0.2 route-map RMAP out + ! + ip prefix-list PLIST permit 10.0.0.0/8 + ! + route-map RMAP permit 10 + match ip address prefix-list PLIST + set community 7675:80 + + Following configuration is an example of BGP route filtering using +communities attribute. This configuration only permit BGP routes which +has BGP communities value 0:80 and 0:90. Network operator can put +special internal communities value at BGP border router, then limit the +BGP routes announcement into the internal network. + + router bgp 7675 + neighbor 192.168.0.1 remote-as 100 + neighbor 192.168.0.1 route-map RMAP in + ! + ip community-list 1 permit 0:80 0:90 + ! + route-map RMAP permit in + match community 1 + + Following exmaple filter BGP routes which has communities value 1:1. +When there is no match community-list returns deny. To avoid filtering +all of routes, we need to define permit any at last. + + router bgp 7675 + neighbor 192.168.0.1 remote-as 100 + neighbor 192.168.0.1 route-map RMAP in + ! + ip community-list standard FILTER deny 1:1 + ip community-list standard FILTER permit + ! + route-map RMAP permit 10 + match community FILTER + + Communities value keyword 'internet' has special meanings in standard +community lists. In below example 'internet' act as match any. It +matches all of BGP routes even if the route does not have communities +attribute at all. So community list 'INTERNET' is same as above +example's 'FILTER'. + + ip community-list standard INTERNET deny 1:1 + ip community-list standard INTERNET permit internet + + Following configuration is an example of communities value deletion. +With this configuration communities value 100:1 and 100:2 is removed +from BGP updates. For communities value deletion, only 'permit' +community-list is used. 'deny' community-list is ignored. + + router bgp 7675 + neighbor 192.168.0.1 remote-as 100 + neighbor 192.168.0.1 route-map RMAP in + ! + ip community-list standard DEL permit 100:1 100:2 + ! + route-map RMAP permit 10 + set comm-list DEL delete + + +File: quagga.info, Node: BGP Extended Communities Attribute, Next: Displaying BGP routes, Prev: BGP Communities Attribute, Up: BGP + +11.10 BGP Extended Communities Attribute +======================================== + +BGP extended communities attribute is introduced with MPLS VPN/BGP +technology. MPLS VPN/BGP expands capability of network infrastructure +to provide VPN functionality. At the same time it requires a new +framework for policy routing. With BGP Extended Communities Attribute +we can use Route Target or Site of Origin for implementing network +policy for MPLS VPN/BGP. + + BGP Extended Communities Attribute is similar to BGP Communities +Attribute. It is an optional transitive attribute. BGP Extended +Communities Attribute can carry multiple Extended Community value. Each +Extended Community value is eight octet length. + + BGP Extended Communities Attribute provides an extended range +compared with BGP Communities Attribute. Adding to that there is a type +field in each value to provides community space structure. + + There are two format to define Extended Community value. One is AS +based format the other is IP address based format. + +'AS:VAL' + This is a format to define AS based Extended Community value. 'AS' + part is 2 octets Global Administrator subfield in Extended + Community value. 'VAL' part is 4 octets Local Administrator + subfield. '7675:100' represents AS 7675 policy value 100. +'IP-Address:VAL' + This is a format to define IP address based Extended Community + value. 'IP-Address' part is 4 octets Global Administrator + subfield. 'VAL' part is 2 octets Local Administrator subfield. + '10.0.0.1:100' represents + +* Menu: + +* BGP Extended Community Lists:: +* BGP Extended Communities in Route Map:: + + +File: quagga.info, Node: BGP Extended Community Lists, Next: BGP Extended Communities in Route Map, Up: BGP Extended Communities Attribute + +11.10.1 BGP Extended Community Lists +------------------------------------ + +Expanded Community Lists is a user defined BGP Expanded Community Lists. + + -- Command: ip extcommunity-list standard NAME {permit|deny} + EXTCOMMUNITY + This command defines a new standard extcommunity-list. + EXTCOMMUNITY is extended communities value. The EXTCOMMUNITY is + compiled into extended community structure. We can define multiple + extcommunity-list under same name. In that case match will happen + user defined order. Once the extcommunity-list matches to extended + communities attribute in BGP updates it return permit or deny based + upon the extcommunity-list definition. When there is no matched + entry, deny will be returned. When EXTCOMMUNITY is empty it + matches to any routes. + + -- Command: ip extcommunity-list expanded NAME {permit|deny} LINE + This command defines a new expanded extcommunity-list. LINE is a + string expression of extended communities attribute. LINE can + include regular expression to match extended communities attribute + in BGP updates. + + -- Command: no ip extcommunity-list NAME + -- Command: no ip extcommunity-list standard NAME + -- Command: no ip extcommunity-list expanded NAME + These commands delete extended community lists specified by NAME. + All of extended community lists shares a single name space. So + extended community lists can be removed simpley specifying the + name. + + -- Command: show ip extcommunity-list + -- Command: show ip extcommunity-list NAME + This command display current extcommunity-list information. When + NAME is specified the community list's information is shown. + + # show ip extcommunity-list + + +File: quagga.info, Node: BGP Extended Communities in Route Map, Prev: BGP Extended Community Lists, Up: BGP Extended Communities Attribute + +11.10.2 BGP Extended Communities in Route Map +--------------------------------------------- + + -- Route Map: match extcommunity WORD + + -- Route Map: set extcommunity rt EXTCOMMUNITY + This command set Route Target value. + + -- Route Map: set extcommunity soo EXTCOMMUNITY + This command set Site of Origin value. + + +File: quagga.info, Node: Displaying BGP routes, Next: Capability Negotiation, Prev: BGP Extended Communities Attribute, Up: BGP + +11.11 Displaying BGP Routes +=========================== + +* Menu: + +* Show IP BGP:: +* More Show IP BGP:: + + +File: quagga.info, Node: Show IP BGP, Next: More Show IP BGP, Up: Displaying BGP routes + +11.11.1 Show IP BGP +------------------- + + -- Command: show ip bgp + -- Command: show ip bgp A.B.C.D + -- Command: show ip bgp X:X::X:X + This command displays BGP routes. When no route is specified it + display all of IPv4 BGP routes. + + BGP table version is 0, local router ID is 10.1.1.1 + Status codes: s suppressed, d damped, h history, * valid, > best, i - internal + Origin codes: i - IGP, e - EGP, ? - incomplete + + Network Next Hop Metric LocPrf Weight Path + *> 1.1.1.1/32 0.0.0.0 0 32768 i + + Total number of prefixes 1 + + +File: quagga.info, Node: More Show IP BGP, Prev: Show IP BGP, Up: Displaying BGP routes + +11.11.2 More Show IP BGP +------------------------ + + -- Command: show ip bgp regexp LINE + This command display BGP routes using AS path regular expression + (*note Display BGP Routes by AS Path::). + + -- Command: show ip bgp community COMMUNITY + -- Command: show ip bgp community COMMUNITY exact-match + This command display BGP routes using COMMUNITY (*note Display BGP + Routes by Community::). + + -- Command: show ip bgp community-list WORD + -- Command: show ip bgp community-list WORD exact-match + This command display BGP routes using community list (*note Display + BGP Routes by Community::). + + -- Command: show ip bgp summary + + -- Command: show ip bgp neighbor [PEER] + + -- Command: clear ip bgp PEER + Clear peers which have addresses of X.X.X.X + + -- Command: clear ip bgp PEER soft in + Clear peer using soft reconfiguration. + + -- Command: show ip bgp dampened-paths + Display paths suppressed due to dampening + + -- Command: show ip bgp flap-statistics + Display flap statistics of routes + + -- Command: show debug + + -- Command: debug event + + -- Command: debug update + + -- Command: debug keepalive + + -- Command: no debug event + + -- Command: no debug update + + -- Command: no debug keepalive + + +File: quagga.info, Node: Capability Negotiation, Next: Route Reflector, Prev: Displaying BGP routes, Up: BGP + +11.12 Capability Negotiation +============================ + +When adding IPv6 routing information exchange feature to BGP. There were +some proposals. IETF (Internet Engineering Task Force) IDR (Inter +Domain Routing) WG (Working group) adopted a proposal called +Multiprotocol Extension for BGP. The specification is described in +'RFC2283'. The protocol does not define new protocols. It defines new +attributes to existing BGP. When it is used exchanging IPv6 routing +information it is called BGP-4+. When it is used for exchanging +multicast routing information it is called MBGP. + + 'bgpd' supports Multiprotocol Extension for BGP. So if remote peer +supports the protocol, 'bgpd' can exchange IPv6 and/or multicast routing +information. + + Traditional BGP did not have the feature to detect remote peer's +capabilities, e.g. whether it can handle prefix types other than IPv4 +unicast routes. This was a big problem using Multiprotocol Extension +for BGP to operational network. 'RFC2842, Capabilities Advertisement +with BGP-4' adopted a feature called Capability Negotiation. 'bgpd' use +this Capability Negotiation to detect the remote peer's capabilities. +If the peer is only configured as IPv4 unicast neighbor, 'bgpd' does not +send these Capability Negotiation packets (at least not unless other +optional BGP features require capability negotation). + + By default, Quagga will bring up peering with minimal common +capability for the both sides. For example, local router has unicast +and multicast capabilitie and remote router has unicast capability. In +this case, the local router will establish the connection with unicast +only capability. When there are no common capabilities, Quagga sends +Unsupported Capability error and then resets the connection. + + If you want to completely match capabilities with remote peer. +Please use 'strict-capability-match' command. + + -- BGP: neighbor PEER strict-capability-match + -- BGP: no neighbor PEER strict-capability-match + Strictly compares remote capabilities and local capabilities. If + capabilities are different, send Unsupported Capability error then + reset connection. + + You may want to disable sending Capability Negotiation OPEN message +optional parameter to the peer when remote peer does not implement +Capability Negotiation. Please use 'dont-capability-negotiate' command +to disable the feature. + + -- BGP: neighbor PEER dont-capability-negotiate + -- BGP: no neighbor PEER dont-capability-negotiate + Suppress sending Capability Negotiation as OPEN message optional + parameter to the peer. This command only affects the peer is + configured other than IPv4 unicast configuration. + + When remote peer does not have capability negotiation feature, remote +peer will not send any capabilities at all. In that case, bgp +configures the peer with configured capabilities. + + You may prefer locally configured capabilities more than the +negotiated capabilities even though remote peer sends capabilities. If +the peer is configured by 'override-capability', 'bgpd' ignores received +capabilities then override negotiated capabilities with configured +values. + + -- BGP: neighbor PEER override-capability + -- BGP: no neighbor PEER override-capability + Override the result of Capability Negotiation with local + configuration. Ignore remote peer's capability value. + + +File: quagga.info, Node: Route Reflector, Next: Route Server, Prev: Capability Negotiation, Up: BGP + +11.13 Route Reflector +===================== + + -- BGP: bgp cluster-id A.B.C.D + + -- BGP: neighbor PEER route-reflector-client + -- BGP: no neighbor PEER route-reflector-client + + +File: quagga.info, Node: Route Server, Next: How to set up a 6-Bone connection, Prev: Route Reflector, Up: BGP + +11.14 Route Server +================== + +At an Internet Exchange point, many ISPs are connected to each other by +external BGP peering. Normally these external BGP connection are done +by 'full mesh' method. As with internal BGP full mesh formation, this +method has a scaling problem. + + This scaling problem is well known. Route Server is a method to +resolve the problem. Each ISP's BGP router only peers to Route Server. +Route Server serves as BGP information exchange to other BGP routers. +By applying this method, numbers of BGP connections is reduced from +O(n*(n-1)/2) to O(n). + + Unlike normal BGP router, Route Server must have several routing +tables for managing different routing policies for each BGP speaker. We +call the routing tables as different 'view's. 'bgpd' can work as normal +BGP router or Route Server or both at the same time. + +* Menu: + +* Multiple instance:: +* BGP instance and view:: +* Routing policy:: +* Viewing the view:: + + +File: quagga.info, Node: Multiple instance, Next: BGP instance and view, Up: Route Server + +11.14.1 Multiple instance +------------------------- + +To enable multiple view function of 'bgpd', you must turn on multiple +instance feature beforehand. + + -- Command: bgp multiple-instance + Enable BGP multiple instance feature. After this feature is + enabled, you can make multiple BGP instances or multiple BGP views. + + -- Command: no bgp multiple-instance + Disable BGP multiple instance feature. You can not disable this + feature when BGP multiple instances or views exist. + + When you want to make configuration more Cisco like one, + + -- Command: bgp config-type cisco + Cisco compatible BGP configuration output. + + When bgp config-type cisco is specified, + + "no synchronization" is displayed. "no auto-summary" is displayed. + + "network" and "aggregate-address" argument is displayed as "A.B.C.D +M.M.M.M" + + Quagga: network 10.0.0.0/8 Cisco: network 10.0.0.0 + + Quagga: aggregate-address 192.168.0.0/24 Cisco: aggregate-address +192.168.0.0 255.255.255.0 + + Community attribute handling is also different. If there is no +configuration is specified community attribute and extended community +attribute are sent to neighbor. When user manually disable the feature +community attribute is not sent to the neighbor. In case of 'bgp +config-type cisco' is specified, community attribute is not sent to the +neighbor by default. To send community attribute user has to specify +'neighbor A.B.C.D send-community' command. + + ! + router bgp 1 + neighbor 10.0.0.1 remote-as 1 + no neighbor 10.0.0.1 send-community + ! + router bgp 1 + neighbor 10.0.0.1 remote-as 1 + neighbor 10.0.0.1 send-community + ! + + -- Command: bgp config-type zebra + Quagga style BGP configuration. This is default. + + +File: quagga.info, Node: BGP instance and view, Next: Routing policy, Prev: Multiple instance, Up: Route Server + +11.14.2 BGP instance and view +----------------------------- + +BGP instance is a normal BGP process. The result of route selection +goes to the kernel routing table. You can setup different AS at the +same time when BGP multiple instance feature is enabled. + + -- Command: router bgp AS-NUMBER + Make a new BGP instance. You can use arbitrary word for the NAME. + + bgp multiple-instance + ! + router bgp 1 + neighbor 10.0.0.1 remote-as 2 + neighbor 10.0.0.2 remote-as 3 + ! + router bgp 2 + neighbor 10.0.0.3 remote-as 4 + neighbor 10.0.0.4 remote-as 5 + + BGP view is almost same as normal BGP process. The result of route +selection does not go to the kernel routing table. BGP view is only for +exchanging BGP routing information. + + -- Command: router bgp AS-NUMBER view NAME + Make a new BGP view. You can use arbitrary word for the NAME. + This view's route selection result does not go to the kernel + routing table. + + With this command, you can setup Route Server like below. + + bgp multiple-instance + ! + router bgp 1 view 1 + neighbor 10.0.0.1 remote-as 2 + neighbor 10.0.0.2 remote-as 3 + ! + router bgp 2 view 2 + neighbor 10.0.0.3 remote-as 4 + neighbor 10.0.0.4 remote-as 5 + + +File: quagga.info, Node: Routing policy, Next: Viewing the view, Prev: BGP instance and view, Up: Route Server + +11.14.3 Routing policy +---------------------- + +You can set different routing policy for a peer. For example, you can +set different filter for a peer. + + bgp multiple-instance + ! + router bgp 1 view 1 + neighbor 10.0.0.1 remote-as 2 + neighbor 10.0.0.1 distribute-list 1 in + ! + router bgp 1 view 2 + neighbor 10.0.0.1 remote-as 2 + neighbor 10.0.0.1 distribute-list 2 in + + This means BGP update from a peer 10.0.0.1 goes to both BGP view 1 +and view 2. When the update is inserted into view 1, distribute-list 1 +is applied. On the other hand, when the update is inserted into view 2, +distribute-list 2 is applied. + + +File: quagga.info, Node: Viewing the view, Prev: Routing policy, Up: Route Server + +11.14.4 Viewing the view +------------------------ + +To display routing table of BGP view, you must specify view name. + + -- Command: show ip bgp view NAME + Display routing table of BGP view NAME. + + +File: quagga.info, Node: How to set up a 6-Bone connection, Next: Dump BGP packets and table, Prev: Route Server, Up: BGP + +11.15 How to set up a 6-Bone connection +======================================= + + zebra configuration + =================== + ! + ! Actually there is no need to configure zebra + ! + + bgpd configuration + ================== + ! + ! This means that routes go through zebra and into the kernel. + ! + router zebra + ! + ! MP-BGP configuration + ! + router bgp 7675 + bgp router-id 10.0.0.1 + neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 remote-as AS-NUMBER + ! + address-family ipv6 + network 3ffe:506::/32 + neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 activate + neighbor 3ffe:1cfa:0:2:2a0:c9ff:fe9e:f56 route-map set-nexthop out + neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 remote-as AS-NUMBER + neighbor 3ffe:1cfa:0:2:2c0:4fff:fe68:a231 route-map set-nexthop out + exit-address-family + ! + ipv6 access-list all permit any + ! + ! Set output nexthop address. + ! + route-map set-nexthop permit 10 + match ipv6 address all + set ipv6 nexthop global 3ffe:1cfa:0:2:2c0:4fff:fe68:a225 + set ipv6 nexthop local fe80::2c0:4fff:fe68:a225 + ! + ! logfile FILENAME is obsolete. Please use log file FILENAME + + log file bgpd.log + ! + + +File: quagga.info, Node: Dump BGP packets and table, Next: BGP Configuration Examples, Prev: How to set up a 6-Bone connection, Up: BGP + +11.16 Dump BGP packets and table +================================ + + -- Command: dump bgp all PATH [INTERVAL] + -- Command: dump bgp all-et PATH [INTERVAL] + -- Command: no dump bgp all [PATH] [INTERVAL] + Dump all BGP packet and events to PATH file. If INTERVAL is set, a + new file will be created for echo INTERVAL of seconds. The path + PATH can be set with date and time formatting (strftime). The type + ‘all-et’ enables support for Extended Timestamp Header (*note + Packet Binary Dump Format::). (*note Packet Binary Dump Format::) + + -- Command: dump bgp updates PATH [INTERVAL] + -- Command: dump bgp updates-et PATH [INTERVAL] + -- Command: no dump bgp updates [PATH] [INTERVAL] + Dump only BGP updates messages to PATH file. If INTERVAL is set, a + new file will be created for echo INTERVAL of seconds. The path + PATH can be set with date and time formatting (strftime). The type + ‘updates-et’ enables support for Extended Timestamp Header + (*note Packet Binary Dump Format::). + + -- Command: dump bgp routes-mrt PATH + -- Command: dump bgp routes-mrt PATH INTERVAL + -- Command: no dump bgp route-mrt [PATH] [INTERVAL] + Dump whole BGP routing table to PATH. This is heavy process. The + path PATH can be set with date and time formatting (strftime). If + INTERVAL is set, a new file will be created for echo INTERVAL of + seconds. + + Note: the interval variable can also be set using hours and minutes: +04h20m00. + + +File: quagga.info, Node: BGP Configuration Examples, Prev: Dump BGP packets and table, Up: BGP + +11.17 BGP Configuration Examples +================================ + +Example of a session to an upstream, advertising only one prefix to it. + + router bgp 64512 + bgp router-id 10.236.87.1 + network 10.236.87.0/24 + neighbor upstream peer-group + neighbor upstream remote-as 64515 + neighbor upstream capability dynamic + neighbor upstream prefix-list pl-allowed-adv out + neighbor 10.1.1.1 peer-group upstream + neighbor 10.1.1.1 description ACME ISP + ! + ip prefix-list pl-allowed-adv seq 5 permit 82.195.133.0/25 + ip prefix-list pl-allowed-adv seq 10 deny any + + + A more complex example. With upstream, peer and customer sessions. +Advertising global prefixes and NO_EXPORT prefixes and providing actions +for customer routes based on community values. Extensive use of +route-maps and the 'call' feature to support selective advertising of +prefixes. This example is intended as guidance only, it has NOT been +tested and almost certainly containts silly mistakes, if not serious +flaws. + + router bgp 64512 + bgp router-id 10.236.87.1 + network 10.123.456.0/24 + network 10.123.456.128/25 route-map rm-no-export + neighbor upstream capability dynamic + neighbor upstream route-map rm-upstream-out out + neighbor cust capability dynamic + neighbor cust route-map rm-cust-in in + neighbor cust route-map rm-cust-out out + neighbor cust send-community both + neighbor peer capability dynamic + neighbor peer route-map rm-peer-in in + neighbor peer route-map rm-peer-out out + neighbor peer send-community both + neighbor 10.1.1.1 remote-as 64515 + neighbor 10.1.1.1 peer-group upstream + neighbor 10.2.1.1 remote-as 64516 + neighbor 10.2.1.1 peer-group upstream + neighbor 10.3.1.1 remote-as 64517 + neighbor 10.3.1.1 peer-group cust-default + neighbor 10.3.1.1 description customer1 + neighbor 10.3.1.1 prefix-list pl-cust1-network in + neighbor 10.4.1.1 remote-as 64518 + neighbor 10.4.1.1 peer-group cust + neighbor 10.4.1.1 prefix-list pl-cust2-network in + neighbor 10.4.1.1 description customer2 + neighbor 10.5.1.1 remote-as 64519 + neighbor 10.5.1.1 peer-group peer + neighbor 10.5.1.1 prefix-list pl-peer1-network in + neighbor 10.5.1.1 description peer AS 1 + neighbor 10.6.1.1 remote-as 64520 + neighbor 10.6.1.1 peer-group peer + neighbor 10.6.1.1 prefix-list pl-peer2-network in + neighbor 10.6.1.1 description peer AS 2 + ! + ip prefix-list pl-default permit 0.0.0.0/0 + ! + ip prefix-list pl-upstream-peers permit 10.1.1.1/32 + ip prefix-list pl-upstream-peers permit 10.2.1.1/32 + ! + ip prefix-list pl-cust1-network permit 10.3.1.0/24 + ip prefix-list pl-cust1-network permit 10.3.2.0/24 + ! + ip prefix-list pl-cust2-network permit 10.4.1.0/24 + ! + ip prefix-list pl-peer1-network permit 10.5.1.0/24 + ip prefix-list pl-peer1-network permit 10.5.2.0/24 + ip prefix-list pl-peer1-network permit 192.168.0.0/24 + ! + ip prefix-list pl-peer2-network permit 10.6.1.0/24 + ip prefix-list pl-peer2-network permit 10.6.2.0/24 + ip prefix-list pl-peer2-network permit 192.168.1.0/24 + ip prefix-list pl-peer2-network permit 192.168.2.0/24 + ip prefix-list pl-peer2-network permit 172.16.1/24 + ! + ip as-path access-list asp-own-as permit ^$ + ip as-path access-list asp-own-as permit _64512_ + ! + ! ################################################################# + ! Match communities we provide actions for, on routes receives from + ! customers. Communities values of :X, with X, have actions: + ! + ! 100 - blackhole the prefix + ! 200 - set no_export + ! 300 - advertise only to other customers + ! 400 - advertise only to upstreams + ! 500 - set no_export when advertising to upstreams + ! 2X00 - set local_preference to X00 + ! + ! blackhole the prefix of the route + ip community-list standard cm-blackhole permit 64512:100 + ! + ! set no-export community before advertising + ip community-list standard cm-set-no-export permit 64512:200 + ! + ! advertise only to other customers + ip community-list standard cm-cust-only permit 64512:300 + ! + ! advertise only to upstreams + ip community-list standard cm-upstream-only permit 64512:400 + ! + ! advertise to upstreams with no-export + ip community-list standard cm-upstream-noexport permit 64512:500 + ! + ! set local-pref to least significant 3 digits of the community + ip community-list standard cm-prefmod-100 permit 64512:2100 + ip community-list standard cm-prefmod-200 permit 64512:2200 + ip community-list standard cm-prefmod-300 permit 64512:2300 + ip community-list standard cm-prefmod-400 permit 64512:2400 + ip community-list expanded cme-prefmod-range permit 64512:2... + ! + ! Informational communities + ! + ! 3000 - learned from upstream + ! 3100 - learned from customer + ! 3200 - learned from peer + ! + ip community-list standard cm-learnt-upstream permit 64512:3000 + ip community-list standard cm-learnt-cust permit 64512:3100 + ip community-list standard cm-learnt-peer permit 64512:3200 + ! + ! ################################################################### + ! Utility route-maps + ! + ! These utility route-maps generally should not used to permit/deny + ! routes, i.e. they do not have meaning as filters, and hence probably + ! should be used with 'on-match next'. These all finish with an empty + ! permit entry so as not interfere with processing in the caller. + ! + route-map rm-no-export permit 10 + set community additive no-export + route-map rm-no-export permit 20 + ! + route-map rm-blackhole permit 10 + description blackhole, up-pref and ensure it cant escape this AS + set ip next-hop 127.0.0.1 + set local-preference 10 + set community additive no-export + route-map rm-blackhole permit 20 + ! + ! Set local-pref as requested + route-map rm-prefmod permit 10 + match community cm-prefmod-100 + set local-preference 100 + route-map rm-prefmod permit 20 + match community cm-prefmod-200 + set local-preference 200 + route-map rm-prefmod permit 30 + match community cm-prefmod-300 + set local-preference 300 + route-map rm-prefmod permit 40 + match community cm-prefmod-400 + set local-preference 400 + route-map rm-prefmod permit 50 + ! + ! Community actions to take on receipt of route. + route-map rm-community-in permit 10 + description check for blackholing, no point continuing if it matches. + match community cm-blackhole + call rm-blackhole + route-map rm-community-in permit 20 + match community cm-set-no-export + call rm-no-export + on-match next + route-map rm-community-in permit 30 + match community cme-prefmod-range + call rm-prefmod + route-map rm-community-in permit 40 + ! + ! ##################################################################### + ! Community actions to take when advertising a route. + ! These are filtering route-maps, + ! + ! Deny customer routes to upstream with cust-only set. + route-map rm-community-filt-to-upstream deny 10 + match community cm-learnt-cust + match community cm-cust-only + route-map rm-community-filt-to-upstream permit 20 + ! + ! Deny customer routes to other customers with upstream-only set. + route-map rm-community-filt-to-cust deny 10 + match community cm-learnt-cust + match community cm-upstream-only + route-map rm-community-filt-to-cust permit 20 + ! + ! ################################################################### + ! The top-level route-maps applied to sessions. Further entries could + ! be added obviously.. + ! + ! Customers + route-map rm-cust-in permit 10 + call rm-community-in + on-match next + route-map rm-cust-in permit 20 + set community additive 64512:3100 + route-map rm-cust-in permit 30 + ! + route-map rm-cust-out permit 10 + call rm-community-filt-to-cust + on-match next + route-map rm-cust-out permit 20 + ! + ! Upstream transit ASes + route-map rm-upstream-out permit 10 + description filter customer prefixes which are marked cust-only + call rm-community-filt-to-upstream + on-match next + route-map rm-upstream-out permit 20 + description only customer routes are provided to upstreams/peers + match community cm-learnt-cust + ! + ! Peer ASes + ! outbound policy is same as for upstream + route-map rm-peer-out permit 10 + call rm-upstream-out + ! + route-map rm-peer-in permit 10 + set community additive 64512:3200 + + +File: quagga.info, Node: Configuring Quagga as a Route Server, Next: VTY shell, Prev: BGP, Up: Top + +12 Configuring Quagga as a Route Server +*************************************** + +The purpose of a Route Server is to centralize the peerings between BGP +speakers. For example if we have an exchange point scenario with four +BGP speakers, each of which maintaining a BGP peering with the other +three we can convert it into a centralized scenario where each of the +four establishes a single BGP peering against the Route Server. + + We will first describe briefly the Route Server model implemented by +Quagga. We will explain the commands that have been added for +configuring that model. And finally we will show a full example of +Quagga configured as Route Server. + +* Menu: + +* Description of the Route Server model:: +* Commands for configuring a Route Server:: +* Example of Route Server Configuration:: + + +File: quagga.info, Node: Description of the Route Server model, Next: Commands for configuring a Route Server, Up: Configuring Quagga as a Route Server + +12.1 Description of the Route Server model +========================================== + +First we are going to describe the normal processing that BGP +announcements suffer inside a standard BGP speaker, as shown in *note +Figure 12.1: fig:normal-processing, it consists of three steps: + + * When an announcement is received from some peer, the 'In' filters + configured for that peer are applied to the announcement. These + filters can reject the announcement, accept it unmodified, or + accept it with some of its attributes modified. + + * The announcements that pass the 'In' filters go into the Best Path + Selection process, where they are compared to other announcements + referred to the same destination that have been received from + different peers (in case such other announcements exist). For each + different destination, the announcement which is selected as the + best is inserted into the BGP speaker's Loc-RIB. + + * The routes which are inserted in the Loc-RIB are considered for + announcement to all the peers (except the one from which the route + came). This is done by passing the routes in the Loc-RIB through + the 'Out' filters corresponding to each peer. These filters can + reject the route, accept it unmodified, or accept it with some of + its attributes modified. Those routes which are accepted by the + 'Out' filters of a peer are announced to that peer. + +[image src="fig-normal-processing.png" alt="Normal announcement processing" text=" + _______________________________ + / _________ _________ \\ +From Peer A --->|(A)-|Best | | |-[A]|--->To Peer A +From Peer B --->|(B)-|Path |-->|Local-RIB|-[B]|--->To Peer B +From Peer C --->|(C)-|Selection| | |-[C]|--->To Peer C +From Peer D --->|(D)-|_________| |_________|-[D]|--->To Peer D + \\_______________________________/ + +Key: (X) - 'In' Filter applied to Peer X's announcements + [X] - 'Out' Filter applied to announcements to Peer X"] + +Figure 12.1: Announcement processing inside a "normal" BGP speaker + + Of course we want that the routing tables obtained in each of the +routers are the same when using the route server than when not. But as +a consequence of having a single BGP peering (against the route server), +the BGP speakers can no longer distinguish from/to which peer each +announce comes/goes. This means that the routers connected to the route +server are not able to apply by themselves the same input/output filters +as in the full mesh scenario, so they have to delegate those functions +to the route server. + + Even more, the "best path" selection must be also performed inside +the route server on behalf of its clients. The reason is that if, after +applying the filters of the announcer and the (potential) receiver, the +route server decides to send to some client two or more different +announcements referred to the same destination, the client will only +retain the last one, considering it as an implicit withdrawal of the +previous announcements for the same destination. This is the expected +behavior of a BGP speaker as defined in 'RFC1771', and even though there +are some proposals of mechanisms that permit multiple paths for the same +destination to be sent through a single BGP peering, none are currently +supported by most existing BGP implementations. + + As a consequence a route server must maintain additional information +and perform additional tasks for a RS-client that those necessary for +common BGP peerings. Essentially a route server must: + + * Maintain a separated Routing Information Base (Loc-RIB) for each + peer configured as RS-client, containing the routes selected as a + result of the "Best Path Selection" process that is performed on + behalf of that RS-client. + + * Whenever it receives an announcement from a RS-client, it must + consider it for the Loc-RIBs of the other RS-clients. + + * This means that for each of them the route server must pass + the announcement through the appropriate 'Out' filter of the + announcer. + + * Then through the appropriate 'In' filter of the potential + receiver. + + * Only if the announcement is accepted by both filters it will + be passed to the "Best Path Selection" process. + + * Finally, it might go into the Loc-RIB of the receiver. + + When we talk about the "appropriate" filter, both the announcer and +the receiver of the route must be taken into account. Suppose that the +route server receives an announcement from client A, and the route +server is considering it for the Loc-RIB of client B. The filters that +should be applied are the same that would be used in the full mesh +scenario, i.e., first the 'Out' filter of router A for announcements +going to router B, and then the 'In' filter of router B for +announcements coming from router A. + + We call "Export Policy" of a RS-client to the set of 'Out' filters +that the client would use if there was no route server. The same +applies for the "Import Policy" of a RS-client and the set of 'In' +filters of the client if there was no route server. + + It is also common to demand from a route server that it does not +modify some BGP attributes (next-hop, as-path and MED) that are usually +modified by standard BGP speakers before announcing a route. + + The announcement processing model implemented by Quagga is shown in +*note Figure 12.2: fig:rs-processing. The figure shows a mixture of +RS-clients (B, C and D) with normal BGP peers (A). There are some +details that worth additional comments: + + * Announcements coming from a normal BGP peer are also considered for + the Loc-RIBs of all the RS-clients. But logically they do not pass + through any export policy. + + * Those peers that are configured as RS-clients do not receive any + announce from the 'Main' Loc-RIB. + + * Apart from import and export policies, 'In' and 'Out' filters can + also be set for RS-clients. 'In' filters might be useful when the + route server has also normal BGP peers. On the other hand, 'Out' + filters for RS-clients are probably unnecessary, but we decided not + to remove them as they do not hurt anybody (they can always be left + empty). + +[image src="fig-rs-processing.png" alt="Route Server Processing Model" text="From Peer A + | From RS-Client B + | | From RS-Client C + | | | From RS-Client D + | | | | + | | | | Main / Normal RIB + | | | | ________________________________ + | | | | / _________ _________ \\ + | | | +--->|(D)-|Best | | Main | | + | | +--|--->|(C)-|Path |-->|Local-RIB|->[A]|--->To Peer A + | +--|--|--->|(B)-|Selection| | | | + +--|--|--|--->|(A)-|_________| |_________| | + | | | | \\________________________________/ + | | | | + | | | | ________________________________ + | | | | / _________ _________ \\ + | | | +--->*D*->|{B}-|Best | |RS-Client| | + | | +--|--->*C*->|{B}-|Path |-->|Local-RIB|->[B]|--->To RS-Client B + | | | | | |Selection| | for B | | + +--|--|--|-------->|{B}-|_________| |_________| | + | | | | \\________________________________/ + | | | | + | | | | ________________________________ + | | | | / _________ _________ \\ + | | | +--->*D*->|{C}-|Best | |RS-Client| | + | | | | | |Path |-->|Local-RIB|->[C]|--->To RS-Client C + | +--|--|--->*B*->|{C}-|Selection| | for C | | + +--|--|--|-------->|{C}-|_________| |_________| | + | | | \\________________________________/ + | | | + | | | ________________________________ + | | | / _________ _________ \\ + | | | | |Best | |RS-Client| | + | | +------>*C*->|{D}-|Path |-->|Local-RIB|->[D]|--->To RS-Client D + | +--------->*B*->|{D}-|Selection| | for D | | + +----------------->|{D}-|_________| |_________| | + \\________________________________/ + + +Key: (X) - 'In' Filter applied to Peer X's announcements before + considering announcement for the normal main Local-RIB + [X] - 'Out' Filter applied to announcements to Peer X + *X* - 'Export' Filter of RS-Client X, to apply X's policies + before its routes may be considered for other RS-Clients + RIBs. + {X} - 'Import' Filter of RS-Client X, to apply X's policies + on routes before allowing them into X's RIB."] + +Figure 12.2: Announcement processing model implemented by the Route +Server + + +File: quagga.info, Node: Commands for configuring a Route Server, Next: Example of Route Server Configuration, Prev: Description of the Route Server model, Up: Configuring Quagga as a Route Server + +12.2 Commands for configuring a Route Server +============================================ + +Now we will describe the commands that have been added to quagga in +order to support the route server features. + + -- Route-Server: neighbor PEER-GROUP route-server-client + -- Route-Server: neighbor A.B.C.D route-server-client + -- Route-Server: neighbor X:X::X:X route-server-client + This command configures the peer given by PEER, A.B.C.D or X:X::X:X + as an RS-client. + + Actually this command is not new, it already existed in standard + Quagga. It enables the transparent mode for the specified peer. + This means that some BGP attributes (as-path, next-hop and MED) of + the routes announced to that peer are not modified. + + With the route server patch, this command, apart from setting the + transparent mode, creates a new Loc-RIB dedicated to the specified + peer (those named 'Loc-RIB for X' in *note Figure 12.2: + fig:rs-processing.). Starting from that moment, every announcement + received by the route server will be also considered for the new + Loc-RIB. + + -- Route-Server: neigbor {A.B.C.D|X.X::X.X|peer-group} route-map WORD + {import|export} + This set of commands can be used to specify the route-map that + represents the Import or Export policy of a peer which is + configured as a RS-client (with the previous command). + + -- Route-Server: match peer {A.B.C.D|X:X::X:X} + This is a new _match_ statement for use in route-maps, enabling + them to describe import/export policies. As we said before, an + import/export policy represents a set of input/output filters of + the RS-client. This statement makes possible that a single + route-map represents the full set of filters that a BGP speaker + would use for its different peers in a non-RS scenario. + + The _match peer_ statement has different semantics whether it is + used inside an import or an export route-map. In the first case + the statement matches if the address of the peer who sends the + announce is the same that the address specified by + {A.B.C.D|X:X::X:X}. For export route-maps it matches when + {A.B.C.D|X:X::X:X} is the address of the RS-Client into whose + Loc-RIB the announce is going to be inserted (how the same export + policy is applied before different Loc-RIBs is shown in *note + Figure 12.2: fig:rs-processing.). + + -- Route-map Command: call WORD + This command (also used inside a route-map) jumps into a different + route-map, whose name is specified by WORD. When the called + route-map finishes, depending on its result the original route-map + continues or not. Apart from being useful for making import/export + route-maps easier to write, this command can also be used inside + any normal (in or out) route-map. + + +File: quagga.info, Node: Example of Route Server Configuration, Prev: Commands for configuring a Route Server, Up: Configuring Quagga as a Route Server + +12.3 Example of Route Server Configuration +========================================== + +Finally we are going to show how to configure a Quagga daemon to act as +a Route Server. For this purpose we are going to present a scenario +without route server, and then we will show how to use the +configurations of the BGP routers to generate the configuration of the +route server. + + All the configuration files shown in this section have been taken +from scenarios which were tested using the VNUML tool VNUML +(http://www.dit.upm.es/vnuml). + +* Menu: + +* Configuration of the BGP routers without Route Server:: +* Configuration of the BGP routers with Route Server:: +* Configuration of the Route Server itself:: +* Further considerations about Import and Export route-maps:: + + +File: quagga.info, Node: Configuration of the BGP routers without Route Server, Next: Configuration of the BGP routers with Route Server, Up: Example of Route Server Configuration + +12.3.1 Configuration of the BGP routers without Route Server +------------------------------------------------------------ + +We will suppose that our initial scenario is an exchange point with +three BGP capable routers, named RA, RB and RC. Each of the BGP speakers +generates some routes (with the NETWORK command), and establishes BGP +peerings against the other two routers. These peerings have In and Out +route-maps configured, named like "PEER-X-IN" or "PEER-X-OUT". For +example the configuration file for router RA could be the following: + + #Configuration for router 'RA' + ! + hostname RA + password **** + ! + router bgp 65001 + no bgp default ipv4-unicast + neighbor 2001:0DB8::B remote-as 65002 + neighbor 2001:0DB8::C remote-as 65003 + ! + address-family ipv6 + network 2001:0DB8:AAAA:1::/64 + network 2001:0DB8:AAAA:2::/64 + network 2001:0DB8:0000:1::/64 + network 2001:0DB8:0000:2::/64 + + neighbor 2001:0DB8::B activate + neighbor 2001:0DB8::B soft-reconfiguration inbound + neighbor 2001:0DB8::B route-map PEER-B-IN in + neighbor 2001:0DB8::B route-map PEER-B-OUT out + + neighbor 2001:0DB8::C activate + neighbor 2001:0DB8::C soft-reconfiguration inbound + neighbor 2001:0DB8::C route-map PEER-C-IN in + neighbor 2001:0DB8::C route-map PEER-C-OUT out + exit-address-family + ! + ipv6 prefix-list COMMON-PREFIXES seq 5 permit 2001:0DB8:0000::/48 ge 64 le 64 + ipv6 prefix-list COMMON-PREFIXES seq 10 deny any + ! + ipv6 prefix-list PEER-A-PREFIXES seq 5 permit 2001:0DB8:AAAA::/48 ge 64 le 64 + ipv6 prefix-list PEER-A-PREFIXES seq 10 deny any + ! + ipv6 prefix-list PEER-B-PREFIXES seq 5 permit 2001:0DB8:BBBB::/48 ge 64 le 64 + ipv6 prefix-list PEER-B-PREFIXES seq 10 deny any + ! + ipv6 prefix-list PEER-C-PREFIXES seq 5 permit 2001:0DB8:CCCC::/48 ge 64 le 64 + ipv6 prefix-list PEER-C-PREFIXES seq 10 deny any + ! + route-map PEER-B-IN permit 10 + match ipv6 address prefix-list COMMON-PREFIXES + set metric 100 + route-map PEER-B-IN permit 20 + match ipv6 address prefix-list PEER-B-PREFIXES + set community 65001:11111 + ! + route-map PEER-C-IN permit 10 + match ipv6 address prefix-list COMMON-PREFIXES + set metric 200 + route-map PEER-C-IN permit 20 + match ipv6 address prefix-list PEER-C-PREFIXES + set community 65001:22222 + ! + route-map PEER-B-OUT permit 10 + match ipv6 address prefix-list PEER-A-PREFIXES + ! + route-map PEER-C-OUT permit 10 + match ipv6 address prefix-list PEER-A-PREFIXES + ! + line vty + ! + + +File: quagga.info, Node: Configuration of the BGP routers with Route Server, Next: Configuration of the Route Server itself, Prev: Configuration of the BGP routers without Route Server, Up: Example of Route Server Configuration + +12.3.2 Configuration of the BGP routers with Route Server +--------------------------------------------------------- + +To convert the initial scenario into one with route server, first we +must modify the configuration of routers RA, RB and RC. Now they must +not peer between them, but only with the route server. For example, +RA's configuration would turn into: + + # Configuration for router 'RA' + ! + hostname RA + password **** + ! + router bgp 65001 + no bgp default ipv4-unicast + neighbor 2001:0DB8::FFFF remote-as 65000 + ! + address-family ipv6 + network 2001:0DB8:AAAA:1::/64 + network 2001:0DB8:AAAA:2::/64 + network 2001:0DB8:0000:1::/64 + network 2001:0DB8:0000:2::/64 + + neighbor 2001:0DB8::FFFF activate + neighbor 2001:0DB8::FFFF soft-reconfiguration inbound + exit-address-family + ! + line vty + ! + + Which is logically much simpler than its initial configuration, as it +now maintains only one BGP peering and all the filters (route-maps) have +disappeared. + + +File: quagga.info, Node: Configuration of the Route Server itself, Next: Further considerations about Import and Export route-maps, Prev: Configuration of the BGP routers with Route Server, Up: Example of Route Server Configuration + +12.3.3 Configuration of the Route Server itself +----------------------------------------------- + +As we said when we described the functions of a route server (*note +Description of the Route Server model::), it is in charge of all the +route filtering. To achieve that, the In and Out filters from the RA, +RB and RC configurations must be converted into Import and Export +policies in the route server. + + This is a fragment of the route server configuration (we only show +the policies for client RA): + + # Configuration for Route Server ('RS') + ! + hostname RS + password ix + ! + bgp multiple-instance + ! + router bgp 65000 view RS + no bgp default ipv4-unicast + neighbor 2001:0DB8::A remote-as 65001 + neighbor 2001:0DB8::B remote-as 65002 + neighbor 2001:0DB8::C remote-as 65003 + ! + address-family ipv6 + neighbor 2001:0DB8::A activate + neighbor 2001:0DB8::A route-server-client + neighbor 2001:0DB8::A route-map RSCLIENT-A-IMPORT import + neighbor 2001:0DB8::A route-map RSCLIENT-A-EXPORT export + neighbor 2001:0DB8::A soft-reconfiguration inbound + + neighbor 2001:0DB8::B activate + neighbor 2001:0DB8::B route-server-client + neighbor 2001:0DB8::B route-map RSCLIENT-B-IMPORT import + neighbor 2001:0DB8::B route-map RSCLIENT-B-EXPORT export + neighbor 2001:0DB8::B soft-reconfiguration inbound + + neighbor 2001:0DB8::C activate + neighbor 2001:0DB8::C route-server-client + neighbor 2001:0DB8::C route-map RSCLIENT-C-IMPORT import + neighbor 2001:0DB8::C route-map RSCLIENT-C-EXPORT export + neighbor 2001:0DB8::C soft-reconfiguration inbound + exit-address-family + ! + ipv6 prefix-list COMMON-PREFIXES seq 5 permit 2001:0DB8:0000::/48 ge 64 le 64 + ipv6 prefix-list COMMON-PREFIXES seq 10 deny any + ! + ipv6 prefix-list PEER-A-PREFIXES seq 5 permit 2001:0DB8:AAAA::/48 ge 64 le 64 + ipv6 prefix-list PEER-A-PREFIXES seq 10 deny any + ! + ipv6 prefix-list PEER-B-PREFIXES seq 5 permit 2001:0DB8:BBBB::/48 ge 64 le 64 + ipv6 prefix-list PEER-B-PREFIXES seq 10 deny any + ! + ipv6 prefix-list PEER-C-PREFIXES seq 5 permit 2001:0DB8:CCCC::/48 ge 64 le 64 + ipv6 prefix-list PEER-C-PREFIXES seq 10 deny any + ! + route-map RSCLIENT-A-IMPORT permit 10 + match peer 2001:0DB8::B + call A-IMPORT-FROM-B + route-map RSCLIENT-A-IMPORT permit 20 + match peer 2001:0DB8::C + call A-IMPORT-FROM-C + ! + route-map A-IMPORT-FROM-B permit 10 + match ipv6 address prefix-list COMMON-PREFIXES + set metric 100 + route-map A-IMPORT-FROM-B permit 20 + match ipv6 address prefix-list PEER-B-PREFIXES + set community 65001:11111 + ! + route-map A-IMPORT-FROM-C permit 10 + match ipv6 address prefix-list COMMON-PREFIXES + set metric 200 + route-map A-IMPORT-FROM-C permit 20 + match ipv6 address prefix-list PEER-C-PREFIXES + set community 65001:22222 + ! + route-map RSCLIENT-A-EXPORT permit 10 + match peer 2001:0DB8::B + match ipv6 address prefix-list PEER-A-PREFIXES + route-map RSCLIENT-A-EXPORT permit 20 + match peer 2001:0DB8::C + match ipv6 address prefix-list PEER-A-PREFIXES + ! + ... + ... + ... + + If you compare the initial configuration of RA with the route server +configuration above, you can see how easy it is to generate the Import +and Export policies for RA from the In and Out route-maps of RA's +original configuration. + + When there was no route server, RA maintained two peerings, one with +RB and another with RC. Each of this peerings had an In route-map +configured. To build the Import route-map for client RA in the route +server, simply add route-map entries following this scheme: + + route-map permit 10 + match peer + call + route-map permit 20 + match peer + call + + This is exactly the process that has been followed to generate the +route-map RSCLIENT-A-IMPORT. The route-maps that are called inside it +(A-IMPORT-FROM-B and A-IMPORT-FROM-C) are exactly the same than the In +route-maps from the original configuration of RA (PEER-B-IN and +PEER-C-IN), only the name is different. + + The same could have been done to create the Export policy for RA +(route-map RSCLIENT-A-EXPORT), but in this case the original Out +route-maps where so simple that we decided not to use the CALL WORD +commands, and we integrated all in a single route-map +(RSCLIENT-A-EXPORT). + + The Import and Export policies for RB and RC are not shown, but the +process would be identical. + + +File: quagga.info, Node: Further considerations about Import and Export route-maps, Prev: Configuration of the Route Server itself, Up: Example of Route Server Configuration + +12.3.4 Further considerations about Import and Export route-maps +---------------------------------------------------------------- + +The current version of the route server patch only allows to specify a +route-map for import and export policies, while in a standard BGP +speaker apart from route-maps there are other tools for performing input +and output filtering (access-lists, community-lists, ...). But this +does not represent any limitation, as all kinds of filters can be +included in import/export route-maps. For example suppose that in the +non-route-server scenario peer RA had the following filters configured +for input from peer B: + + neighbor 2001:0DB8::B prefix-list LIST-1 in + neighbor 2001:0DB8::B filter-list LIST-2 in + neighbor 2001:0DB8::B route-map PEER-B-IN in + ... + ... + route-map PEER-B-IN permit 10 + match ipv6 address prefix-list COMMON-PREFIXES + set local-preference 100 + route-map PEER-B-IN permit 20 + match ipv6 address prefix-list PEER-B-PREFIXES + set community 65001:11111 + + It is posible to write a single route-map which is equivalent to the +three filters (the community-list, the prefix-list and the route-map). +That route-map can then be used inside the Import policy in the route +server. Lets see how to do it: + + neighbor 2001:0DB8::A route-map RSCLIENT-A-IMPORT import + ... + ! + ... + route-map RSCLIENT-A-IMPORT permit 10 + match peer 2001:0DB8::B + call A-IMPORT-FROM-B + ... + ... + ! + route-map A-IMPORT-FROM-B permit 1 + match ipv6 address prefix-list LIST-1 + match as-path LIST-2 + on-match goto 10 + route-map A-IMPORT-FROM-B deny 2 + route-map A-IMPORT-FROM-B permit 10 + match ipv6 address prefix-list COMMON-PREFIXES + set local-preference 100 + route-map A-IMPORT-FROM-B permit 20 + match ipv6 address prefix-list PEER-B-PREFIXES + set community 65001:11111 + ! + ... + ... + + The route-map A-IMPORT-FROM-B is equivalent to the three filters +(LIST-1, LIST-2 and PEER-B-IN). The first entry of route-map +A-IMPORT-FROM-B (sequence number 1) matches if and only if both the +prefix-list LIST-1 and the filter-list LIST-2 match. If that happens, +due to the "on-match goto 10" statement the next route-map entry to be +processed will be number 10, and as of that point route-map +A-IMPORT-FROM-B is identical to PEER-B-IN. If the first entry does not +match, 'on-match goto 10" will be ignored and the next processed entry +will be number 2, which will deny the route. + + Thus, the result is the same that with the three original filters, +i.e., if either LIST-1 or LIST-2 rejects the route, it does not reach +the route-map PEER-B-IN. In case both LIST-1 and LIST-2 accept the +route, it passes to PEER-B-IN, which can reject, accept or modify the +route. + + +File: quagga.info, Node: VTY shell, Next: Filtering, Prev: Configuring Quagga as a Route Server, Up: Top + +13 VTY shell +************ + +'vtysh' is integrated shell of Quagga software. + + To use vtysh please specify --enable-vtysh to configure script. To +use PAM for authentication use --with-libpam option to configure script. + + vtysh only searches /etc/quagga path for vtysh.conf which is the +vtysh configuration file. Vtysh does not search current directory for +configuration file because the file includes user authentication +settings. + + Currently, vtysh.conf has only two commands. + +* Menu: + +* VTY shell username:: +* VTY shell integrated configuration:: + + +File: quagga.info, Node: VTY shell username, Next: VTY shell integrated configuration, Up: VTY shell + +13.1 VTY shell username +======================= + + -- Command: username USERNAME nopassword + + With this set, user foo does not need password authentication for + user vtysh. With PAM vtysh uses PAM authentication mechanism. + + If vtysh is compiled without PAM authentication, every user can use + vtysh without authentication. vtysh requires read/write permission + to the various daemons vty sockets, this can be accomplished + through use of unix groups and the -enable-vty-group configure + option. + + +File: quagga.info, Node: VTY shell integrated configuration, Prev: VTY shell username, Up: VTY shell + +13.2 VTY shell integrated configuration +======================================= + + -- Command: service integrated-vtysh-config + Write out integrated Quagga.conf file when 'write file' is issued. + + This command controls the behaviour of vtysh when it is told to + write out the configuration. Per default, vtysh will instruct each + daemon to write out their own config files when 'write file' is + issued. However, if 'service integrated-vtysh-config' is set, when + 'write file' is issued, vtysh will instruct the daemons will write + out a Quagga.conf with all daemons' commands integrated into it. + + Vtysh per default behaves as if 'write-conf daemon' is set. Note + that both may be set at same time if one wishes to have both + Quagga.conf and daemon specific files written out. Further, note + that the daemons are hard-coded to first look for the integrated + Quagga.conf file before looking for their own file. + + We recommend you do not mix the use of the two types of files. + Further, it is better not to use the integrated Quagga.conf file, + as any syntax error in it can lead to /all/ of your daemons being + unable to start up. Per daemon files are more robust as impact of + errors in configuration are limited to the daemon in whose file the + error is made. + + +File: quagga.info, Node: Filtering, Next: Route Map, Prev: VTY shell, Up: Top + +14 Filtering +************ + +Quagga provides many very flexible filtering features. Filtering is +used for both input and output of the routing information. Once +filtering is defined, it can be applied in any direction. + +* Menu: + +* IP Access List:: +* IP Prefix List:: + + +File: quagga.info, Node: IP Access List, Next: IP Prefix List, Up: Filtering + +14.1 IP Access List +=================== + + -- Command: access-list NAME permit IPV4-NETWORK + -- Command: access-list NAME deny IPV4-NETWORK + + Basic filtering is done by 'access-list' as shown in the following +example. + + access-list filter deny 10.0.0.0/9 + access-list filter permit 10.0.0.0/8 + + +File: quagga.info, Node: IP Prefix List, Prev: IP Access List, Up: Filtering + +14.2 IP Prefix List +=================== + +'ip prefix-list' provides the most powerful prefix based filtering +mechanism. In addition to 'access-list' functionality, 'ip prefix-list' +has prefix length range specification and sequential number +specification. You can add or delete prefix based filters to arbitrary +points of prefix-list using sequential number specification. + + If no ip prefix-list is specified, it acts as permit. If 'ip +prefix-list' is defined, and no match is found, default deny is applied. + + -- Command: ip prefix-list NAME (permit|deny) PREFIX [le LEN] [ge LEN] + -- Command: ip prefix-list NAME seq NUMBER (permit|deny) PREFIX [le + LEN] [ge LEN] + + You can create 'ip prefix-list' using above commands. + + seq + seq NUMBER can be set either automatically or manually. In + the case that sequential numbers are set manually, the user + may pick any number less than 4294967295. In the case that + sequential number are set automatically, the sequential number + will increase by a unit of five (5) per list. If a list with + no specified sequential number is created after a list with a + specified sequential number, the list will automatically pick + the next multiple of five (5) as the list number. For + example, if a list with number 2 already exists and a new list + with no specified number is created, the next list will be + numbered 5. If lists 2 and 7 already exist and a new list + with no specified number is created, the new list will be + numbered 10. + + le + 'le' command specifies prefix length. The prefix list will be + applied if the prefix length is less than or equal to the le + prefix length. + + ge + 'ge' command specifies prefix length. The prefix list will be + applied if the prefix length is greater than or equal to the + ge prefix length. + + Less than or equal to prefix numbers and greater than or equal to +prefix numbers can be used together. The order of the le and ge +commands does not matter. + + If a prefix list with a different sequential number but with the +exact same rules as a previous list is created, an error will result. +However, in the case that the sequential number and the rules are +exactly similar, no error will result. + + If a list with the same sequential number as a previous list is +created, the new list will overwrite the old list. + + Matching of IP Prefix is performed from the smaller sequential number +to the larger. The matching will stop once any rule has been applied. + + In the case of no le or ge command, the prefix length must match +exactly the length specified in the prefix list. + + -- Command: no ip prefix-list NAME + +* Menu: + +* ip prefix-list description:: +* ip prefix-list sequential number control:: +* Showing ip prefix-list:: +* Clear counter of ip prefix-list:: + + +File: quagga.info, Node: ip prefix-list description, Next: ip prefix-list sequential number control, Up: IP Prefix List + +14.2.1 ip prefix-list description +--------------------------------- + + -- Command: ip prefix-list NAME description DESC + Descriptions may be added to prefix lists. This command adds a + description to the prefix list. + + -- Command: no ip prefix-list NAME description [DESC] + Deletes the description from a prefix list. It is possible to use + the command without the full description. + + +File: quagga.info, Node: ip prefix-list sequential number control, Next: Showing ip prefix-list, Prev: ip prefix-list description, Up: IP Prefix List + +14.2.2 ip prefix-list sequential number control +----------------------------------------------- + + -- Command: ip prefix-list sequence-number + With this command, the IP prefix list sequential number is + displayed. This is the default behavior. + + -- Command: no ip prefix-list sequence-number + With this command, the IP prefix list sequential number is not + displayed. + + +File: quagga.info, Node: Showing ip prefix-list, Next: Clear counter of ip prefix-list, Prev: ip prefix-list sequential number control, Up: IP Prefix List + +14.2.3 Showing ip prefix-list +----------------------------- + + -- Command: show ip prefix-list + Display all IP prefix lists. + + -- Command: show ip prefix-list NAME + Show IP prefix list can be used with a prefix list name. + + -- Command: show ip prefix-list NAME seq NUM + Show IP prefix list can be used with a prefix list name and + sequential number. + + -- Command: show ip prefix-list NAME A.B.C.D/M + If the command longer is used, all prefix lists with prefix lengths + equal to or longer than the specified length will be displayed. If + the command first match is used, the first prefix length match will + be displayed. + + -- Command: show ip prefix-list NAME A.B.C.D/M longer + + -- Command: show ip prefix-list NAME A.B.C.D/M first-match + + -- Command: show ip prefix-list summary + -- Command: show ip prefix-list summary NAME + + -- Command: show ip prefix-list detail + -- Command: show ip prefix-list detail NAME + + +File: quagga.info, Node: Clear counter of ip prefix-list, Prev: Showing ip prefix-list, Up: IP Prefix List + +14.2.4 Clear counter of ip prefix-list +-------------------------------------- + + -- Command: clear ip prefix-list + Clears the counters of all IP prefix lists. Clear IP Prefix List + can be used with a specified name and prefix. + + -- Command: clear ip prefix-list NAME + + -- Command: clear ip prefix-list NAME A.B.C.D/M + + +File: quagga.info, Node: Route Map, Next: IPv6 Support, Prev: Filtering, Up: Top + +15 Route Map +************ + +Route maps provide a means to both filter and/or apply actions to route, +hence allowing policy to be applied to routes. + +* Menu: + +* Route Map Command:: +* Route Map Match Command:: +* Route Map Set Command:: +* Route Map Call Command:: +* Route Map Exit Action Command:: +* Route Map Examples:: + + Route-maps are an ordered list of route-map entries. Each entry may +specify up to four distincts sets of clauses: + +'Matching Policy' + + This specifies the policy implied if the 'Matching Conditions' are + met or not met, and which actions of the route-map are to be taken, + if any. The two possibilities are: + + - 'permit': If the entry matches, then carry out the 'Set + Actions'. Then finish processing the route-map, permitting + the route, unless an 'Exit Action' indicates otherwise. + + - 'deny': If the entry matches, then finish processing the + route-map and deny the route (return 'deny'). + + The 'Matching Policy' is specified as part of the command which + defines the ordered entry in the route-map. See below. + +'Matching Conditions' + + A route-map entry may, optionally, specify one or more conditions + which must be matched if the entry is to be considered further, as + governed by the Match Policy. If a route-map entry does not + explicitely specify any matching conditions, then it always + matches. + +'Set Actions' + + A route-map entry may, optionally, specify one or more 'Set + Actions' to set or modify attributes of the route. + +'Call Action' + + Call to another route-map, after any 'Set Actions' have been + carried out. If the route-map called returns 'deny' then + processing of the route-map finishes and the route is denied, + regardless of the 'Matching Policy' or the 'Exit Policy'. If the + called route-map returns 'permit', then 'Matching Policy' and 'Exit + Policy' govern further behaviour, as normal. + +'Exit Policy' + + An entry may, optionally, specify an alternative 'Exit Policy' to + take if the entry matched, rather than the normal policy of exiting + the route-map and permitting the route. The two possibilities are: + + - 'next': Continue on with processing of the route-map entries. + + - 'goto N': Jump ahead to the first route-map entry whose order + in the route-map is >= N. Jumping to a previous entry is not + permitted. + + The default action of a route-map, if no entries match, is to deny. +I.e. a route-map essentially has as its last entry an empty 'deny' +entry, which matches all routes. To change this behaviour, one must +specify an empty 'permit' entry as the last entry in the route-map. + + To summarise the above: + + Match No Match +----------------------------- +_Permit_ action cont +_Deny_ deny cont + +'action' + - Apply _set_ statements + + - If _call_ is present, call given route-map. If that returns a + 'deny', finish processing and return 'deny'. + + - If 'Exit Policy' is _next_, goto next route-map entry + + - If 'Exit Policy' is _goto_, goto first entry whose order in + the list is >= the given order. + + - Finish processing the route-map and permit the route. + +'deny' + - The route is denied by the route-map (return 'deny'). + +'cont' + - goto next route-map entry + + +File: quagga.info, Node: Route Map Command, Next: Route Map Match Command, Up: Route Map + +15.1 Route Map Command +====================== + + -- Command: route-map ROUTE-MAP-NAME (permit|deny) ORDER + + Configure the ORDER'th entry in ROUTE-MAP-NAME with 'Match Policy' + of either _permit_ or _deny_. + + +File: quagga.info, Node: Route Map Match Command, Next: Route Map Set Command, Prev: Route Map Command, Up: Route Map + +15.2 Route Map Match Command +============================ + + -- Route-map Command: match ip address ACCESS_LIST + Matches the specified ACCESS_LIST + + -- Route-map Command: match ip next-hop IPV4_ADDR + Matches the specified IPV4_ADDR. + + -- Route-map Command: match as-path AS_PATH + Matches the specified AS_PATH. + + -- Route-map Command: match metric METRIC + Matches the specified METRIC. + + -- Route-map Command: match local-preference METRIC + Matches the specified LOCAL-PREFERENCE. + + -- Route-map Command: match community COMMUNITY_LIST + Matches the specified COMMUNITY_LIST + + +File: quagga.info, Node: Route Map Set Command, Next: Route Map Call Command, Prev: Route Map Match Command, Up: Route Map + +15.3 Route Map Set Command +========================== + + -- Route-map Command: set ip next-hop IPV4_ADDRESS + Set the BGP nexthop address. + + -- Route-map Command: set local-preference LOCAL_PREF + Set the BGP local preference. + + -- Route-map Command: set weight WEIGHT + Set the route's weight. + + -- Route-map Command: set metric METRIC + Set the BGP attribute MED. + + -- Route-map Command: set as-path prepend AS_PATH + Set the BGP AS path to prepend. + + -- Route-map Command: set community COMMUNITY + Set the BGP community attribute. + + -- Route-map Command: set ipv6 next-hop global IPV6_ADDRESS + Set the BGP-4+ global IPv6 nexthop address. + + -- Route-map Command: set ipv6 next-hop local IPV6_ADDRESS + Set the BGP-4+ link local IPv6 nexthop address. + + +File: quagga.info, Node: Route Map Call Command, Next: Route Map Exit Action Command, Prev: Route Map Set Command, Up: Route Map + +15.4 Route Map Call Command +=========================== + + -- Route-map Command: call NAME + Call route-map NAME. If it returns deny, deny the route and finish + processing the route-map. + + +File: quagga.info, Node: Route Map Exit Action Command, Next: Route Map Examples, Prev: Route Map Call Command, Up: Route Map + +15.5 Route Map Exit Action Command +================================== + + -- Route-map Command: on-match next + -- Route-map Command: continue + Proceed on to the next entry in the route-map. + + -- Route-map Command: on-match goto N + -- Route-map Command: continue N + Proceed processing the route-map at the first entry whose order is + >= N + + +File: quagga.info, Node: Route Map Examples, Prev: Route Map Exit Action Command, Up: Route Map + +15.6 Route Map Examples +======================= + +A simple example of a route-map: + + route-map test permit 10 + match ip address 10 + set local-preference 200 + + This means that if a route matches ip access-list number 10 it's +local-preference value is set to 200. + + See *note BGP Configuration Examples:: for examples of more +sophisticated useage of route-maps, including of the 'call' action. + + +File: quagga.info, Node: IPv6 Support, Next: Kernel Interface, Prev: Route Map, Up: Top + +16 IPv6 Support +*************** + +Quagga fully supports IPv6 routing. As described so far, Quagga +supports RIPng, OSPFv3, and BGP-4+. You can give IPv6 addresses to an +interface and configure static IPv6 routing information. Quagga IPv6 +also provides automatic address configuration via a feature called +'address auto configuration'. To do it, the router must send router +advertisement messages to the all nodes that exist on the network. + +* Menu: + +* Router Advertisement:: + + +File: quagga.info, Node: Router Advertisement, Up: IPv6 Support + +16.1 Router Advertisement +========================= + + -- Interface Command: no ipv6 nd suppress-ra + Send router advertisment messages. + + -- Interface Command: ipv6 nd suppress-ra + Don't send router advertisment messages. + + -- Interface Command: ipv6 nd prefix IPV6PREFIX [VALID-LIFETIME] + [PREFERRED-LIFETIME] [off-link] [no-autoconfig] + [router-address] + Configuring the IPv6 prefix to include in router advertisements. + Several prefix specific optional parameters and flags may follow: + * VALID-LIFETIME - the length of time in seconds during what the + prefix is valid for the purpose of on-link determination. + Value INFINITE represents infinity (i.e. a value of all one + bits ('0xffffffff')). + + Range: '<0-4294967295>' Default: '2592000' + + * PREFERRED-LIFETIME - the length of time in seconds during what + addresses generated from the prefix remain preferred. Value + INFINITE represents infinity. + + Range: '<0-4294967295>' Default: '604800' + + * OFF-LINK - indicates that advertisement makes no statement + about on-link or off-link properties of the prefix. + + Default: not set, i.e. this prefix can be used for on-link + determination. + + * NO-AUTOCONFIG - indicates to hosts on the local link that the + specified prefix cannot be used for IPv6 autoconfiguration. + + Default: not set, i.e. prefix can be used for + autoconfiguration. + + * ROUTER-ADDRESS - indicates to hosts on the local link that the + specified prefix contains a complete IP address by setting R + flag. + + Default: not set, i.e. hosts do not assume a complete IP + address is placed. + + -- Interface Command: ipv6 nd ra-interval <1-1800> + -- Interface Command: no ipv6 nd ra-interval [<1-1800>] + The maximum time allowed between sending unsolicited multicast + router advertisements from the interface, in seconds. + + Default: '600' + + -- Interface Command: ipv6 nd ra-interval msec <70-1800000> + -- Interface Command: no ipv6 nd ra-interval [msec <70-1800000>] + The maximum time allowed between sending unsolicited multicast + router advertisements from the interface, in milliseconds. + + Default: '600000' + + -- Interface Command: ipv6 nd ra-lifetime <0-9000> + -- Interface Command: no ipv6 nd ra-lifetime [<0-9000>] + The value to be placed in the Router Lifetime field of router + advertisements sent from the interface, in seconds. Indicates the + usefulness of the router as a default router on this interface. + Setting the value to zero indicates that the router should not be + considered a default router on this interface. Must be either zero + or between value specified with IPV6 ND RA-INTERVAL (or default) + and 9000 seconds. + + Default: '1800' + + -- Interface Command: ipv6 nd reachable-time <1-3600000> + -- Interface Command: no ipv6 nd reachable-time [<1-3600000>] + The value to be placed in the Reachable Time field in the Router + Advertisement messages sent by the router, in milliseconds. The + configured time enables the router to detect unavailable neighbors. + The value zero means unspecified (by this router). + + Default: '0' + + -- Interface Command: ipv6 nd managed-config-flag + -- Interface Command: no ipv6 nd managed-config-flag + Set/unset flag in IPv6 router advertisements which indicates to + hosts that they should use managed (stateful) protocol for + addresses autoconfiguration in addition to any addresses + autoconfigured using stateless address autoconfiguration. + + Default: not set + + -- Interface Command: ipv6 nd other-config-flag + -- Interface Command: no ipv6 nd other-config-flag + Set/unset flag in IPv6 router advertisements which indicates to + hosts that they should use administered (stateful) protocol to + obtain autoconfiguration information other than addresses. + + Default: not set + + -- Interface Command: ipv6 nd home-agent-config-flag + -- Interface Command: no ipv6 nd home-agent-config-flag + Set/unset flag in IPv6 router advertisements which indicates to + hosts that the router acts as a Home Agent and includes a Home + Agent Option. + + Default: not set + + -- Interface Command: ipv6 nd home-agent-preference <0-65535> + -- Interface Command: no ipv6 nd home-agent-preference [<0-65535>] + The value to be placed in Home Agent Option, when Home Agent config + flag is set, which indicates to hosts Home Agent preference. The + default value of 0 stands for the lowest preference possible. + + Default: 0 + + -- Interface Command: ipv6 nd home-agent-lifetime <0-65520> + -- Interface Command: no ipv6 nd home-agent-lifetime [<0-65520>] + The value to be placed in Home Agent Option, when Home Agent config + flag is set, which indicates to hosts Home Agent Lifetime. The + default value of 0 means to place the current Router Lifetime + value. + + Default: 0 + + -- Interface Command: ipv6 nd adv-interval-option + -- Interface Command: no ipv6 nd adv-interval-option + Include an Advertisement Interval option which indicates to hosts + the maximum time, in milliseconds, between successive unsolicited + Router Advertisements. + + Default: not set + + -- Interface Command: ipv6 nd router-preference (high|medium|low) + -- Interface Command: no ipv6 nd router-preference [(high|medium|low)] + Set default router preference in IPv6 router advertisements per + RFC4191. + + Default: medium + + -- Interface Command: ipv6 nd mtu <1-65535> + -- Interface Command: no ipv6 nd mtu [<1-65535>] + Include an MTU (type 5) option in each RA packet to assist the + attached hosts in proper interface configuration. The announced + value is not verified to be consistent with router interface MTU. + + Default: don't advertise any MTU option + + interface eth0 + no ipv6 nd suppress-ra + ipv6 nd prefix 2001:0DB8:5009::/64 + + For more information see 'RFC2462 (IPv6 Stateless Address +Autoconfiguration)' , 'RFC4861 (Neighbor Discovery for IP Version 6 +(IPv6))' , 'RFC6275 (Mobility Support in IPv6)' and 'RFC4191 (Default +Router Preferences and More-Specific Routes)'. + + +File: quagga.info, Node: Kernel Interface, Next: SNMP Support, Prev: IPv6 Support, Up: Top + +17 Kernel Interface +******************* + +There are several different methods for reading kernel routing table +information, updating kernel routing tables, and for looking up +interfaces. + +'ioctl' + The 'ioctl' method is a very traditional way for reading or writing + kernel information. 'ioctl' can be used for looking up interfaces + and for modifying interface addresses, flags, mtu settings and + other types of information. Also, 'ioctl' can insert and delete + kernel routing table entries. It will soon be available on almost + any platform which zebra supports, but it is a little bit ugly thus + far, so if a better method is supported by the kernel, zebra will + use that. + +'sysctl' + 'sysctl' can lookup kernel information using MIB (Management + Information Base) syntax. Normally, it only provides a way of + getting information from the kernel. So one would usually want to + change kernel information using another method such as 'ioctl'. + +'proc filesystem' + 'proc filesystem' provides an easy way of getting kernel + information. + +'routing socket' + +'netlink' + On recent Linux kernels (2.0.x and 2.2.x), there is a kernel/user + communication support called 'netlink'. It makes asynchronous + communication between kernel and Quagga possible, similar to a + routing socket on BSD systems. + + Before you use this feature, be sure to select (in kernel + configuration) the kernel/netlink support option 'Kernel/User + network link driver' and 'Routing messages'. + + Today, the /dev/route special device file is obsolete. Netlink + communication is done by reading/writing over netlink socket. + + After the kernel configuration, please reconfigure and rebuild + Quagga. You can use netlink as a dynamic routing update channel + between Quagga and the kernel. + + +File: quagga.info, Node: SNMP Support, Next: Zebra Protocol, Prev: Kernel Interface, Up: Top + +18 SNMP Support +*************** + +SNMP (Simple Network Managing Protocol) is a widely implemented feature +for collecting network information from router and/or host. Quagga +itself does not support SNMP agent (server daemon) functionality but is +able to connect to a SNMP agent using the SMUX protocol ('RFC1227') or +the AgentX protocol ('RFC2741') and make the routing protocol MIBs +available through it. + +* Menu: + +* Getting and installing an SNMP agent:: +* AgentX configuration:: +* SMUX configuration:: +* MIB and command reference:: +* Handling SNMP Traps:: + + +File: quagga.info, Node: Getting and installing an SNMP agent, Next: AgentX configuration, Up: SNMP Support + +18.1 Getting and installing an SNMP agent +========================================= + +There are several SNMP agent which support SMUX or AgentX. We recommend +to use the latest version of 'net-snmp' which was formerly known as +'ucd-snmp'. It is free and open software and available at + and as binary package for most Linux +distributions. 'net-snmp' has to be compiled with +'--with-mib-modules=agentx' to be able to accept connections from Quagga +using AgentX protocol or with '--with-mib-modules=smux' to use SMUX +protocol. + + Nowadays, SMUX is a legacy protocol. The AgentX protocol should be +preferred for any new deployment. Both protocols have the same +coverage. + + +File: quagga.info, Node: AgentX configuration, Next: SMUX configuration, Prev: Getting and installing an SNMP agent, Up: SNMP Support + +18.2 AgentX configuration +========================= + +To enable AgentX protocol support, Quagga must have been build with the +'--enable-snmp' or '--enable-snmp=agentx' option. Both the master SNMP +agent (snmpd) and each of the Quagga daemons must be configured. In +'/etc/snmp/snmpd.conf', 'master agentx' directive should be added. In +each of the Quagga daemons, 'agentx' command will enable AgentX support. + + /etc/snmp/snmpd.conf: + # + # example access restrictions setup + # + com2sec readonly default public + group MyROGroup v1 readonly + view all included .1 80 + access MyROGroup "" any noauth exact all none none + # + # enable master agent for AgentX subagents + # + master agentx + + /etc/quagga/ospfd.conf: + ! ... the rest of ospfd.conf has been omitted for clarity ... + ! + agentx + ! + + Upon successful connection, you should get something like this in the +log of each Quagga daemons: + + 2012/05/25 11:39:08 ZEBRA: snmp[info]: NET-SNMP version 5.4.3 AgentX subagent connected + + Then, you can use the following command to check everything works as +expected: + + # snmpwalk -c public -v1 localhost .1.3.6.1.2.1.14.1.1 + OSPF-MIB::ospfRouterId.0 = IpAddress: 192.168.42.109 + [...] + + The AgentX protocol can be transported over a Unix socket or using +TCP or UDP. It usually defaults to a Unix socket and depends on how +NetSNMP was built. If need to configure Quagga to use another +transport, you can configure it through '/etc/snmp/quagga.conf': + + /etc/snmp/quagga.conf: + [snmpd] + # Use a remote master agent + agentXSocket tcp:192.168.15.12:705 + + +File: quagga.info, Node: SMUX configuration, Next: MIB and command reference, Prev: AgentX configuration, Up: SNMP Support + +18.3 SMUX configuration +======================= + +To enable SMUX protocol support, Quagga must have been build with the +'--enable-snmp=smux' option. + + A separate connection has then to be established between the SNMP +agent (snmpd) and each of the Quagga daemons. This connections each use +different OID numbers and passwords. Be aware that this OID number is +not the one that is used in queries by clients, it is solely used for +the intercommunication of the daemons. + + In the following example the ospfd daemon will be connected to the +snmpd daemon using the password "quagga_ospfd". For testing it is +recommending to take exactly the below snmpd.conf as wrong access +restrictions can be hard to debug. + + /etc/snmp/snmpd.conf: + # + # example access restrictions setup + # + com2sec readonly default public + group MyROGroup v1 readonly + view all included .1 80 + access MyROGroup "" any noauth exact all none none + # + # the following line is relevant for Quagga + # + smuxpeer .1.3.6.1.4.1.3317.1.2.5 quagga_ospfd + + /etc/quagga/ospf: + ! ... the rest of ospfd.conf has been omitted for clarity ... + ! + smux peer .1.3.6.1.4.1.3317.1.2.5 quagga_ospfd + ! + + After restarting snmpd and quagga, a successful connection can be +verified in the syslog and by querying the SNMP daemon: + + snmpd[12300]: [smux_accept] accepted fd 12 from 127.0.0.1:36255 + snmpd[12300]: accepted smux peer: \ + oid GNOME-PRODUCT-ZEBRA-MIB::ospfd, quagga-0.96.5 + + # snmpwalk -c public -v1 localhost .1.3.6.1.2.1.14.1.1 + OSPF-MIB::ospfRouterId.0 = IpAddress: 192.168.42.109 + + Be warned that the current version (5.1.1) of the Net-SNMP daemon +writes a line for every SNMP connect to the syslog which can lead to +enormous log file sizes. If that is a problem you should consider to +patch snmpd and comment out the troublesome 'snmp_log()' line in the +function 'netsnmp_agent_check_packet()' in 'agent/snmp_agent.c'. + diff --git a/doc/quagga.info-2 b/doc/quagga.info-2 new file mode 100644 index 0000000..c1e6a1b --- /dev/null +++ b/doc/quagga.info-2 @@ -0,0 +1,1905 @@ +This is quagga.info, produced by makeinfo version 6.3 from quagga.texi. + +Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions, except that this permission notice may be stated + in a translation approved by Kunihiro Ishiguro. +INFO-DIR-SECTION Routing Software: +START-INFO-DIR-ENTRY +* Quagga: (quagga). The Quagga Software Routing Suite +END-INFO-DIR-ENTRY + + This file documents the Quagga Software Routing Suite which manages +common TCP/IP routing protocols. + + This is Edition 1.2.3, last updated 4 February 2018 of 'The Quagga +Manual', for Quagga Version 1.2.3. + + Copyright (C) 1999-2005 Kunihiro Ishiguro, et al. + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions, except that this permission notice may be stated + in a translation approved by Kunihiro Ishiguro. + + +File: quagga.info, Node: MIB and command reference, Next: Handling SNMP Traps, Prev: SMUX configuration, Up: SNMP Support + +18.4 MIB and command reference +============================== + +The following OID numbers are used for the interprocess communication of +snmpd and the Quagga daemons with SMUX only. + (OIDs below .iso.org.dod.internet.private.enterprises) + zebra .1.3.6.1.4.1.3317.1.2.1 .gnome.gnomeProducts.zebra.zserv + bgpd .1.3.6.1.4.1.3317.1.2.2 .gnome.gnomeProducts.zebra.bgpd + ripd .1.3.6.1.4.1.3317.1.2.3 .gnome.gnomeProducts.zebra.ripd + ospfd .1.3.6.1.4.1.3317.1.2.5 .gnome.gnomeProducts.zebra.ospfd + ospf6d .1.3.6.1.4.1.3317.1.2.6 .gnome.gnomeProducts.zebra.ospf6d + + Sadly, SNMP has not been implemented in all daemons yet. The +following OID numbers are used for querying the SNMP daemon by a client: + zebra .1.3.6.1.2.1.4.24 .iso.org.dot.internet.mgmt.mib-2.ip.ipForward + ospfd .1.3.6.1.2.1.14 .iso.org.dot.internet.mgmt.mib-2.ospf + bgpd .1.3.6.1.2.1.15 .iso.org.dot.internet.mgmt.mib-2.bgp + ripd .1.3.6.1.2.1.23 .iso.org.dot.internet.mgmt.mib-2.rip2 + ospf6d .1.3.6.1.3.102 .iso.org.dod.internet.experimental.ospfv3 + + The following syntax is understood by the Quagga daemons for +configuring SNMP using SMUX: + -- Command: smux peer OID + -- Command: no smux peer OID + + -- Command: smux peer OID PASSWORD + -- Command: no smux peer OID PASSWORD + + Here is the syntax for using AgentX: + -- Command: agentx + -- Command: no agentx + + +File: quagga.info, Node: Handling SNMP Traps, Prev: MIB and command reference, Up: SNMP Support + +18.5 Handling SNMP Traps +======================== + +To handle snmp traps make sure your snmp setup of quagga works correctly +as described in the quagga documentation in *Note SNMP Support::. + + The BGP4 mib will send traps on peer up/down events. These should be +visible in your snmp logs with a message similar to: + + 'snmpd[13733]: Got trap from peer on fd 14' + + To react on these traps they should be handled by a trapsink. +Configure your trapsink by adding the following lines to +'/etc/snmpd/snmpd.conf': + + # send traps to the snmptrapd on localhost + trapsink localhost + + This will send all traps to an snmptrapd running on localhost. You +can of course also use a dedicated management station to catch traps. +Configure the snmptrapd daemon by adding the following line to +'/etc/snmpd/snmptrapd.conf': + + traphandle .1.3.6.1.4.1.3317.1.2.2 /etc/snmp/snmptrap_handle.sh + + This will use the bash script '/etc/snmp/snmptrap_handle.sh' to +handle the BGP4 traps. To add traps for other protocol daemons, lookup +their appropriate OID from their mib. (For additional information about +which traps are supported by your mib, lookup the mib on +). + + Make sure snmptrapd is started. + + The snmptrap_handle.sh script I personally use for handling BGP4 +traps is below. You can of course do all sorts of things when handling +traps, like sound a siren, have your display flash, etc., be creative +;). + + #!/bin/bash + + # routers name + ROUTER=`hostname -s` + + #email address use to sent out notification + EMAILADDR="john@doe.com" + #email address used (allongside above) where warnings should be sent + EMAILADDR_WARN="sms-john@doe.com" + + # type of notification + TYPE="Notice" + + # local snmp community for getting AS belonging to peer + COMMUNITY="" + + # if a peer address is in $WARN_PEERS a warning should be sent + WARN_PEERS="192.0.2.1" + + + # get stdin + INPUT=`cat -` + + # get some vars from stdin + uptime=`echo $INPUT | cut -d' ' -f5` + peer=`echo $INPUT | cut -d' ' -f8 | \ + sed -e 's/SNMPv2-SMI::mib-2.15.3.1.14.//g'` + peerstate=`echo $INPUT | cut -d' ' -f13` + errorcode=`echo $INPUT | cut -d' ' -f9 | sed -e 's/\"//g'` + suberrorcode=`echo $INPUT | cut -d' ' -f10 | sed -e 's/\"//g'` + remoteas=`snmpget -v2c -c $COMMUNITY \ + localhost SNMPv2-SMI::mib-2.15.3.1.9.$peer \ + | cut -d' ' -f4` + + WHOISINFO=`whois -h whois.ripe.net " -r AS$remoteas" | \ + egrep '(as-name|descr)'` + asname=`echo "$WHOISINFO" | grep "^as-name:" | \ + sed -e 's/^as-name://g' -e 's/ //g' -e 's/^ //g' | uniq` + asdescr=`echo "$WHOISINFO" | grep "^descr:" | \ + sed -e 's/^descr://g' -e 's/ //g' -e 's/^ //g' | uniq` + + # if peer address is in $WARN_PEER, the email should also + # be sent to $EMAILADDR_WARN + for ip in $WARN_PEERS; do + if [ "x$ip" == "x$peer" ]; then + EMAILADDR="$EMAILADDR,$EMAILADDR_WARN" + TYPE="WARNING" + break + fi + done + + + # convert peer state + case "$peerstate" in + 1) peerstate="Idle" ;; + 2) peerstate="Connect" ;; + 3) peerstate="Active" ;; + 4) peerstate="Opensent" ;; + 5) peerstate="Openconfirm" ;; + 6) peerstate="Established" ;; + *) peerstate="Unknown" ;; + esac + + # get textual messages for errors + case "$errorcode" in + 00) + error="No error" + suberror="" + ;; + 01) + error="Message Header Error" + case "$suberrorcode" in + 01) suberror="Connection Not Synchronized" ;; + 02) suberror="Bad Message Length" ;; + 03) suberror="Bad Message Type" ;; + *) suberror="Unknown" ;; + esac + ;; + 02) + error="OPEN Message Error" + case "$suberrorcode" in + 01) suberror="Unsupported Version Number" ;; + 02) suberror="Bad Peer AS" ;; + 03) suberror="Bad BGP Identifier" ;; + 04) suberror="Unsupported Optional Parameter" ;; + 05) suberror="Authentication Failure" ;; + 06) suberror="Unacceptable Hold Time" ;; + *) suberror="Unknown" ;; + esac + ;; + 03) + error="UPDATE Message Error" + case "$suberrorcode" in + 01) suberror="Malformed Attribute List" ;; + 02) suberror="Unrecognized Well-known Attribute" ;; + 03) suberror="Missing Well-known Attribute" ;; + 04) suberror="Attribute Flags Error" ;; + 05) suberror="Attribute Length Error" ;; + 06) suberror="Invalid ORIGIN Attribute" ;; + 07) suberror="AS Routing Loop" ;; + 08) suberror="Invalid NEXT_HOP Attribute" ;; + 09) suberror="Optional Attribute Error" ;; + 10) suberror="Invalid Network Field" ;; + 11) suberror="Malformed AS_PATH" ;; + *) suberror="Unknown" ;; + esac + ;; + 04) + error="Hold Timer Expired" + suberror="" + ;; + 05) + error="Finite State Machine Error" + suberror="" + ;; + 06) + error="Cease" + case "$suberrorcode" in + 01) suberror="Maximum Number of Prefixes Reached" ;; + 02) suberror="Administratively Shutdown" ;; + 03) suberror="Peer Unconfigured" ;; + 04) suberror="Administratively Reset" ;; + 05) suberror="Connection Rejected" ;; + 06) suberror="Other Configuration Change" ;; + 07) suberror="Connection collision resolution" ;; + 08) suberror="Out of Resource" ;; + 09) suberror="MAX" ;; + *) suberror="Unknown" ;; + esac + ;; + *) + error="Unknown" + suberror="" + ;; + esac + + # create textual message from errorcodes + if [ "x$suberror" == "x" ]; then + NOTIFY="$errorcode ($error)" + else + NOTIFY="$errorcode/$suberrorcode ($error/$suberror)" + fi + + + # form a decent subject + SUBJECT="$TYPE: $ROUTER [bgp] $peer is $peerstate: $NOTIFY" + # create the email body + MAIL=`cat << EOF + BGP notification on router $ROUTER. + + Peer: $peer + AS: $remoteas + New state: $peerstate + Notification: $NOTIFY + + Info: + $asname + $asdescr + + Snmpd uptime: $uptime + EOF` + + # mail the notification + echo "$MAIL" | mail -s "$SUBJECT" $EMAILADDR + + +File: quagga.info, Node: Zebra Protocol, Next: Packet Binary Dump Format, Prev: SNMP Support, Up: Top + +Appendix A Zebra Protocol +************************* + +A.1 Overview of the Zebra Protocol +================================== + +Zebra Protocol is used by protocol daemons to communicate with the zebra +daemon. + + Each protocol daemon may request and send information to and from the +zebra daemon such as interface states, routing state, +nexthop-validation, and so on. Protocol daemons may also install routes +with zebra. The zebra daemon manages which route is installed into the +forwarding table with the kernel. + + Zebra Protocol is a streaming protocol, with a common header. The +protocol is versioned to allow for incompatible changes. Version 0 is +implicitely versioned. Version 1 onwards has an explicit version field. +Version 0 can be distinguished from all other versions by examining the +3rd byte of the header, which contains a marker value of 255 for all +versions bar version 0. The marker byte corresponds to the command +field in version 0, and the marker value is a reserved command in +version 0. + + Version 0 is used by all versions of GNU Zebra as of this writing, +and versions of Quagga up to and including Quagga 0.98. The version 1 +header was introduced with Quagga 0.99.3. The version 3 header was +introduced with Quagga 1.0.20160309. + +A.2 Zebra Protocol Definition +============================= + +A.2.1 Zebra Protocol Header (version 0) +--------------------------------------- + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-------------------------------+---------------+ + | Length (2) | Command (1) | + +-------------------------------+---------------+ + +A.2.2 Zebra Protocol Common Header (version 1 and 2) +---------------------------------------------------- + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-------------------------------+---------------+-------------+ + | Length (2) | Marker (1) | Version (1) | + +-------------------------------+---------------+-------------+ + | Command (2) | + +-------------------------------+ + +A.2.3 Zebra Protocol Common Header (version 3) +---------------------------------------------- + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-------------------------------+---------------+-------------+ + | Length (2) | Marker (1) | Version (1) | + +-------------------------------+---------------+-------------+ + | VRF ID (2) | Command (2) | + +-------------------------------+-----------------------------+ + +A.2.4 Zebra Protocol Header Field Definitions +--------------------------------------------- + +'Length' + Total packet length including this header. The minimum length is 3 + bytes for version 0 messages, 6 bytes for version 1 and 2 messages, + and 8 bytes for version 3. + +'Marker' + Static marker with a value of 255 always. This is to allow version + 0 Zserv headers (which do not include version explicitely) to be + distinguished from versioned headers. Not present in version 0 + messages. + +'Version' + Version number of the Zserv message. Clients should not continue + processing messages past the version field for versions they do not + recognise. Not present in version 0 messages. + +'VRF ID' + Virtual Routing/Forwarding context ID, to which the message + applies. Only present from version 3 onwards. + +'Command' + The Zebra Protocol command. + +A.2.5 Zebra Protocol Commands +----------------------------- + +Command Value +----------------------------------------------------- +ZEBRA_INTERFACE_ADD 1 +ZEBRA_INTERFACE_DELETE 2 +ZEBRA_INTERFACE_ADDRESS_ADD 3 +ZEBRA_INTERFACE_ADDRESS_DELETE 4 +ZEBRA_INTERFACE_UP 5 +ZEBRA_INTERFACE_DOWN 6 +ZEBRA_IPV4_ROUTE_ADD 7 +ZEBRA_IPV4_ROUTE_DELETE 8 +ZEBRA_IPV6_ROUTE_ADD 9 +ZEBRA_IPV6_ROUTE_DELETE 10 +ZEBRA_REDISTRIBUTE_ADD 11 +ZEBRA_REDISTRIBUTE_DELETE 12 +ZEBRA_REDISTRIBUTE_DEFAULT_ADD 13 +ZEBRA_REDISTRIBUTE_DEFAULT_DELETE 14 +ZEBRA_IPV4_NEXTHOP_LOOKUP 15 +ZEBRA_IPV6_NEXTHOP_LOOKUP 16 + + +File: quagga.info, Node: Packet Binary Dump Format, Next: Command Index, Prev: Zebra Protocol, Up: Top + +Appendix B Packet Binary Dump Format +************************************ + +Quagga can dump routing protocol packet into file with a binary format +(*note Dump BGP packets and table::). + + It seems to be better that we share the MRT's header format for +backward compatibility with MRT's dump logs. We should also define the +binary format excluding the header, because we must support both IP v4 +and v6 addresses as socket addresses and / or routing entries. + + In the last meeting, we discussed to have a version field in the +header. But Masaki told us that we can define new 'type' value rather +than having a 'version' field, and it seems to be better because we +don't need to change header format. + + Here is the common header format. This is same as that of MRT. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Time | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Subtype | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + If 'type' is PROTOCOL_BGP4MP_ET, the common header format will +contain an additional microsecond field (RFC6396 2011). + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Time | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Subtype | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Microsecond | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + If 'type' is PROTOCOL_BGP4MP, 'subtype' is BGP4MP_STATE_CHANGE, and +Address Family == IP (version 4) + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source AS number | Destination AS number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface Index | Address Family | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Old State | New State | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Where State is the value defined in RFC1771. + + If 'type' is PROTOCOL_BGP4MP, 'subtype' is BGP4MP_STATE_CHANGE, and +Address Family == IP version 6 + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source AS number | Destination AS number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface Index | Address Family | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Old State | New State | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + If 'type' is PROTOCOL_BGP4MP, 'subtype' is BGP4MP_MESSAGE, and +Address Family == IP (version 4) + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source AS number | Destination AS number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface Index | Address Family | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | BGP Message Packet | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Where BGP Message Packet is the whole contents of the BGP4 message +including header portion. + + If 'type' is PROTOCOL_BGP4MP, 'subtype' is BGP4MP_MESSAGE, and +Address Family == IP version 6 + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source AS number | Destination AS number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface Index | Address Family | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination IP address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | BGP Message Packet | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + If 'type' is PROTOCOL_BGP4MP, 'subtype' is BGP4MP_ENTRY, and Address +Family == IP (version 4) + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | View # | Status | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Time Last Change | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address Family | SAFI | Next-Hop-Len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next Hop Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prefix Length | Address Prefix [variable] | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Attribute Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | BGP Attribute [variable length] | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + If 'type' is PROTOCOL_BGP4MP, 'subtype' is BGP4MP_ENTRY, and Address +Family == IP version 6 + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | View # | Status | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Time Last Change | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address Family | SAFI | Next-Hop-Len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next Hop Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next Hop Address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next Hop Address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next Hop Address (Cont'd) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prefix Length | Address Prefix [variable] | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address Prefix (cont'd) [variable] | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Attribute Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | BGP Attribute [variable length] | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + BGP4 Attribute must not contain MP_UNREACH_NLRI. If BGP Attribute has +MP_REACH_NLRI field, it must has zero length NLRI, e.g., MP_REACH_NLRI +has only Address Family, SAFI and next-hop values. + + If 'type' is PROTOCOL_BGP4MP and 'subtype' is BGP4MP_SNAPSHOT, + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | View # | File Name [variable] | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + The file specified in "File Name" contains all routing entries, which +are in the format of "subtype == BGP4MP_ENTRY". + + Constants: + /* type value */ + #define MSG_PROTOCOL_BGP4MP 16 + #define MSG_PROTOCOL_BGP4MP_ET 17 + /* subtype value */ + #define BGP4MP_STATE_CHANGE 0 + #define BGP4MP_MESSAGE 1 + #define BGP4MP_ENTRY 2 + #define BGP4MP_SNAPSHOT 3 + + +File: quagga.info, Node: Command Index, Next: VTY Key Index, Prev: Packet Binary Dump Format, Up: Top + +Command Index +************* + +[index] +* Menu: + +* access-class ACCESS-LIST: Basic Config Commands. + (line 146) +* access-list NAME deny IPV4-NETWORK: IP Access List. (line 7) +* access-list NAME permit IPV4-NETWORK: IP Access List. (line 6) +* admin-grp BANDWIDTH: Link Parameters Commands. + (line 25) +* agentx: MIB and command reference. + (line 32) +* aggregate-address A.B.C.D/M: Route Aggregation. (line 6) +* aggregate-address A.B.C.D/M as-set: Route Aggregation. (line 9) +* aggregate-address A.B.C.D/M summary-only: Route Aggregation. + (line 13) +* area <0-4294967295> authentication: OSPF area. (line 125) +* area <0-4294967295> authentication message-digest: OSPF area. + (line 132) +* area <0-4294967295> export-list NAME: OSPF area. (line 84) +* area <0-4294967295> filter-list prefix NAME in: OSPF area. (line 115) +* area <0-4294967295> filter-list prefix NAME out: OSPF area. (line 116) +* area <0-4294967295> import-list NAME: OSPF area. (line 107) +* area <0-4294967295> range A.B.C.D/M: OSPF area. (line 7) +* area <0-4294967295> shortcut: OSPF area. (line 54) +* area <0-4294967295> stub: OSPF area. (line 61) +* area <0-4294967295> stub no-summary: OSPF area. (line 73) +* area <0-4294967295> virtual-link A.B.C.D: OSPF area. (line 49) +* area A.B.C.D authentication: OSPF area. (line 124) +* area A.B.C.D authentication message-digest: OSPF area. (line 131) +* area A.B.C.D default-cost <0-16777215>: OSPF area. (line 79) +* area A.B.C.D export-list NAME: OSPF area. (line 83) +* area A.B.C.D filter-list prefix NAME in: OSPF area. (line 113) +* area A.B.C.D filter-list prefix NAME out: OSPF area. (line 114) +* area A.B.C.D import-list NAME: OSPF area. (line 106) +* area A.B.C.D range A.B.C.D/M: OSPF area. (line 6) +* area A.B.C.D range IPV4_PREFIX not-advertise: OSPF area. (line 27) +* area A.B.C.D range IPV4_PREFIX substitute IPV4_PREFIX: OSPF area. + (line 33) +* area A.B.C.D shortcut: OSPF area. (line 53) +* area A.B.C.D stub: OSPF area. (line 60) +* area A.B.C.D stub no-summary: OSPF area. (line 72) +* area A.B.C.D virtual-link A.B.C.D: OSPF area. (line 48) +* area-password [clear | md5] : ISIS router. (line 25) +* auto-cost reference-bandwidth <1-4294967>: OSPF router. (line 161) +* auto-cost reference-bandwidth COST: OSPF6 router. (line 49) +* ava-bw BANDWIDTH: Link Parameters Commands. + (line 40) +* bandwidth <1-10000000>: Standard Commands. (line 30) +* banner motd default: Basic Config Commands. + (line 128) +* bgp always-compare-med: BGP MED. (line 226) +* bgp bestpath as-path confed: BGP decision process. + (line 67) +* bgp bestpath as-path multipath-relax: BGP decision process. + (line 72) +* bgp bestpath compare-routerid: BGP decision process. + (line 78) +* bgp cluster-id A.B.C.D: Route Reflector. (line 6) +* bgp config-type cisco: Multiple instance. (line 19) +* bgp config-type zebra: Multiple instance. (line 52) +* bgp dampening <1-45> <1-20000> <1-20000> <1-255>: BGP route flap dampening. + (line 6) +* bgp deterministic-med: BGP MED. (line 207) +* bgp multiple-instance: Multiple instance. (line 9) +* bgp route-reflector allow-outbound-policy: Peer filtering. (line 17) +* bgp router-id A.B.C.D: BGP router. (line 21) +* call NAME: Route Map Call Command. + (line 6) +* call WORD: Commands for configuring a Route Server. + (line 51) +* capability opaque: Opaque LSA. (line 7) +* clear ip bgp PEER: More Show IP BGP. (line 24) +* clear ip bgp PEER soft in: More Show IP BGP. (line 27) +* clear ip prefix-list: Clear counter of ip prefix-list. + (line 6) +* clear ip prefix-list NAME: Clear counter of ip prefix-list. + (line 10) +* clear ip prefix-list NAME A.B.C.D/M: Clear counter of ip prefix-list. + (line 12) +* clear zebra fpm stats: zebra Terminal Mode Commands. + (line 40) +* configure terminal: Terminal Mode Commands. + (line 12) +* continue: Route Map Exit Action Command. + (line 7) +* continue N: Route Map Exit Action Command. + (line 11) +* debug event: More Show IP BGP. (line 38) +* debug isis adj-packets: Debugging ISIS. (line 6) +* debug isis checksum-errors: Debugging ISIS. (line 10) +* debug isis events: Debugging ISIS. (line 14) +* debug isis local-updates: Debugging ISIS. (line 18) +* debug isis packet-dump: Debugging ISIS. (line 22) +* debug isis protocol-errors: Debugging ISIS. (line 26) +* debug isis route-events: Debugging ISIS. (line 30) +* debug isis snp-packets: Debugging ISIS. (line 34) +* debug isis spf-events: Debugging ISIS. (line 38) +* debug isis spf-statistics: Debugging ISIS. (line 39) +* debug isis spf-triggers: Debugging ISIS. (line 40) +* debug isis update-packets: Debugging ISIS. (line 47) +* debug keepalive: More Show IP BGP. (line 42) +* debug ospf event: Debugging OSPF. (line 26) +* debug ospf ism: Debugging OSPF. (line 14) +* debug ospf ism (status|events|timers): Debugging OSPF. (line 15) +* debug ospf lsa: Debugging OSPF. (line 34) +* debug ospf lsa (generate|flooding|refresh): Debugging OSPF. (line 35) +* debug ospf nsm: Debugging OSPF. (line 20) +* debug ospf nsm (status|events|timers): Debugging OSPF. (line 21) +* debug ospf nssa: Debugging OSPF. (line 30) +* debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]: Debugging OSPF. + (line 6) +* debug ospf te: Debugging OSPF. (line 40) +* debug ospf zebra: Debugging OSPF. (line 44) +* debug ospf zebra (interface|redistribute): Debugging OSPF. (line 45) +* debug rip events: RIP Debug Commands. (line 8) +* debug rip packet: RIP Debug Commands. (line 14) +* debug rip zebra: RIP Debug Commands. (line 21) +* debug ripng events: ripngd Terminal Mode Commands. + (line 10) +* debug ripng packet: ripngd Terminal Mode Commands. + (line 12) +* debug ripng zebra: ripngd Terminal Mode Commands. + (line 14) +* debug update: More Show IP BGP. (line 40) +* default-information originate: How to Announce RIP route. + (line 50) +* default-information originate <1>: Redistribute routes to OSPF. + (line 36) +* default-information originate always: Redistribute routes to OSPF. + (line 42) +* default-information originate always metric <0-16777214>: Redistribute routes to OSPF. + (line 43) +* default-information originate always metric <0-16777214> metric-type (1|2): Redistribute routes to OSPF. + (line 45) +* default-information originate always metric <0-16777214> metric-type (1|2) route-map WORD: Redistribute routes to OSPF. + (line 47) +* default-information originate metric <0-16777214>: Redistribute routes to OSPF. + (line 37) +* default-information originate metric <0-16777214> metric-type (1|2): Redistribute routes to OSPF. + (line 38) +* default-information originate metric <0-16777214> metric-type (1|2) route-map WORD: Redistribute routes to OSPF. + (line 40) +* default-metric <0-16777214>: Redistribute routes to OSPF. + (line 64) +* default-metric <1-16>: RIP Metric Manipulation. + (line 10) +* delay <0-16777215> [min <0-16777215> | max <0-16777215>]: Link Parameters Commands. + (line 36) +* delay-variation <0-16777215>: Link Parameters Commands. + (line 37) +* description DESCRIPTION ...: Standard Commands. (line 23) +* distance <1-255>: RIP distance. (line 8) +* distance <1-255> <1>: Redistribute routes to OSPF. + (line 67) +* distance <1-255> A.B.C.D/M: RIP distance. (line 12) +* distance <1-255> A.B.C.D/M <1>: BGP distance. (line 14) +* distance <1-255> A.B.C.D/M ACCESS-LIST: RIP distance. (line 17) +* distance <1-255> A.B.C.D/M WORD: BGP distance. (line 15) +* distance bgp <1-255> <1-255> <1-255>: BGP distance. (line 6) +* distance ospf (intra-area|inter-area|external) <1-255>: Redistribute routes to OSPF. + (line 70) +* distribute-list ACCESS_LIST (in|out) IFNAME: ripngd Filtering Commands. + (line 6) +* distribute-list ACCESS_LIST DIRECT IFNAME: Filtering RIP Routes. + (line 8) +* distribute-list NAME out (kernel|connected|static|rip|ospf: Redistribute routes to OSPF. + (line 56) +* distribute-list prefix PREFIX_LIST (in|out) IFNAME: Filtering RIP Routes. + (line 31) +* domain-password [clear | md5] : ISIS router. (line 26) +* dump bgp all PATH [INTERVAL]: Dump BGP packets and table. + (line 6) +* dump bgp all-et PATH [INTERVAL]: Dump BGP packets and table. + (line 7) +* dump bgp routes-mrt PATH: Dump BGP packets and table. + (line 24) +* dump bgp routes-mrt PATH INTERVAL: Dump BGP packets and table. + (line 25) +* dump bgp updates PATH [INTERVAL]: Dump BGP packets and table. + (line 15) +* dump bgp updates-et PATH [INTERVAL]: Dump BGP packets and table. + (line 16) +* enable: Link Parameters Commands. + (line 18) +* enable password PASSWORD: Basic Config Commands. + (line 13) +* exec-timeout MINUTE: Basic Config Commands. + (line 134) +* exec-timeout MINUTE SECOND: Basic Config Commands. + (line 135) +* flush_timer TIME: ripngd Configuration. + (line 11) +* hostname dynamic: ISIS router. (line 21) +* hostname HOSTNAME: Basic Config Commands. + (line 6) +* interface IFNAME: Standard Commands. (line 6) +* interface IFNAME area AREA: OSPF6 router. (line 11) +* ip address ADDRESS/PREFIX: Standard Commands. (line 12) +* ip address ADDRESS/PREFIX secondary: Standard Commands. (line 18) +* ip as-path access-list WORD {permit|deny} LINE: AS Path Access List. + (line 8) +* ip community-list <1-99> {permit|deny} COMMUNITY: Numbered BGP Community Lists. + (line 13) +* ip community-list <100-199> {permit|deny} COMMUNITY: Numbered BGP Community Lists. + (line 19) +* ip community-list expanded NAME {permit|deny} LINE: BGP Community Lists. + (line 29) +* ip community-list NAME {permit|deny} COMMUNITY: Numbered BGP Community Lists. + (line 24) +* ip community-list standard NAME {permit|deny} COMMUNITY: BGP Community Lists. + (line 19) +* ip extcommunity-list expanded NAME {permit|deny} LINE: BGP Extended Community Lists. + (line 20) +* ip extcommunity-list standard NAME {permit|deny} EXTCOMMUNITY: BGP Extended Community Lists. + (line 8) +* ip mroute PREFIX NEXTHOP [DISTANCE]: Multicast RIB Commands. + (line 70) +* ip multicast rpf-lookup-mode MODE: Multicast RIB Commands. + (line 18) +* ip ospf area AREA [ADDR]: OSPF interface. (line 6) +* ip ospf authentication message-digest: OSPF interface. (line 28) +* ip ospf authentication-key AUTH_KEY: OSPF interface. (line 18) +* ip ospf cost <1-65535>: OSPF interface. (line 56) +* ip ospf dead-interval <1-65535>: OSPF interface. (line 61) +* ip ospf dead-interval minimal hello-multiplier <2-20>: OSPF interface. + (line 62) +* ip ospf hello-interval <1-65535>: OSPF interface. (line 80) +* ip ospf message-digest-key KEYID md5 KEY: OSPF interface. (line 44) +* ip ospf network (broadcast|non-broadcast|point-to-multipoint|point-to-point): OSPF interface. + (line 90) +* ip ospf priority <0-255>: OSPF interface. (line 95) +* ip ospf retransmit-interval <1-65535>: OSPF interface. (line 102) +* ip ospf transmit-delay: OSPF interface. (line 108) +* ip prefix-list NAME (permit|deny) PREFIX [le LEN] [ge LEN]: IP Prefix List. + (line 15) +* ip prefix-list NAME description DESC: ip prefix-list description. + (line 6) +* ip prefix-list NAME seq NUMBER (permit|deny) PREFIX [le LEN] [ge LEN]: IP Prefix List. + (line 16) +* ip prefix-list sequence-number: ip prefix-list sequential number control. + (line 6) +* ip protocol PROTOCOL route-map ROUTEMAP: zebra Route Filtering. + (line 11) +* ip rip authentication key-chain KEY-CHAIN: RIP Authentication. + (line 42) +* ip rip authentication mode md5: RIP Authentication. (line 28) +* ip rip authentication mode text: RIP Authentication. (line 32) +* ip rip authentication string STRING: RIP Authentication. (line 36) +* ip rip receive version VERSION: RIP Version Control. (line 43) +* ip rip send version VERSION: RIP Version Control. (line 32) +* ip route NETWORK GATEWAY: Static Route Commands. + (line 9) +* ip route NETWORK GATEWAY DISTANCE: Static Route Commands. + (line 35) +* ip route NETWORK NETMASK GATEWAY: Static Route Commands. + (line 24) +* ip router isis WORD: ISIS interface. (line 6) +* ip split-horizon: RIP Configuration. (line 69) +* ipv6 address ADDRESS/PREFIX: Standard Commands. (line 13) +* ipv6 nd adv-interval-option: Router Advertisement. + (line 126) +* ipv6 nd home-agent-config-flag: Router Advertisement. + (line 101) +* ipv6 nd home-agent-lifetime <0-65520>: Router Advertisement. + (line 117) +* ipv6 nd home-agent-preference <0-65535>: Router Advertisement. + (line 109) +* ipv6 nd managed-config-flag: Router Advertisement. + (line 84) +* ipv6 nd mtu <1-65535>: Router Advertisement. + (line 141) +* ipv6 nd other-config-flag: Router Advertisement. + (line 93) +* ipv6 nd prefix IPV6PREFIX [VALID-LIFETIME] [PREFERRED-LIFETIME] [off-link] [no-autoconfig] [router-address]: Router Advertisement. + (line 12) +* ipv6 nd ra-interval <1-1800>: Router Advertisement. + (line 49) +* ipv6 nd ra-interval msec <70-1800000>: Router Advertisement. + (line 56) +* ipv6 nd ra-lifetime <0-9000>: Router Advertisement. + (line 63) +* ipv6 nd reachable-time <1-3600000>: Router Advertisement. + (line 75) +* ipv6 nd router-preference (high|medium|low): Router Advertisement. + (line 134) +* ipv6 nd suppress-ra: Router Advertisement. + (line 9) +* ipv6 ospf6 cost COST: OSPF6 interface. (line 6) +* ipv6 ospf6 dead-interval DEADINTERVAL: OSPF6 interface. (line 13) +* ipv6 ospf6 hello-interval HELLOINTERVAL: OSPF6 interface. (line 10) +* ipv6 ospf6 network (broadcast|point-to-point): OSPF6 interface. + (line 25) +* ipv6 ospf6 priority PRIORITY: OSPF6 interface. (line 19) +* ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL: OSPF6 interface. + (line 16) +* ipv6 ospf6 transmit-delay TRANSMITDELAY: OSPF6 interface. (line 22) +* ipv6 route NETWORK GATEWAY: Static Route Commands. + (line 76) +* ipv6 route NETWORK GATEWAY DISTANCE: Static Route Commands. + (line 77) +* is-type [level-1 | level-1-2 | level-2-only]: ISIS region. (line 6) +* isis circuit-type [level-1 | level-1-2 | level-2]: ISIS interface. + (line 12) +* isis csnp-interval <1-600>: ISIS interface. (line 18) +* isis csnp-interval <1-600> [level-1 | level-2]: ISIS interface. + (line 19) +* isis hello padding: ISIS interface. (line 25) +* isis hello-interval <1-600>: ISIS interface. (line 28) +* isis hello-interval <1-600> [level-1 | level-2]: ISIS interface. + (line 29) +* isis hello-multiplier <2-100>: ISIS interface. (line 35) +* isis hello-multiplier <2-100> [level-1 | level-2]: ISIS interface. + (line 36) +* isis metric [<0-255> | <0-16777215>]: ISIS interface. (line 42) +* isis metric [<0-255> | <0-16777215>] [level-1 | level-2]: ISIS interface. + (line 43) +* isis network point-to-point: ISIS interface. (line 51) +* isis passive: ISIS interface. (line 55) +* isis password [clear | md5] : ISIS interface. (line 59) +* isis priority <0-127>: ISIS interface. (line 64) +* isis priority <0-127> [level-1 | level-2]: ISIS interface. (line 65) +* isis psnp-interval <1-120>: ISIS interface. (line 71) +* isis psnp-interval <1-120> [level-1 | level-2]: ISIS interface. + (line 72) +* line vty: Basic Config Commands. + (line 125) +* link-detect: Standard Commands. (line 36) +* link-params: Link Parameters Commands. + (line 6) +* list: Terminal Mode Commands. + (line 23) +* log commands: Basic Config Commands. + (line 109) +* log facility FACILITY: Basic Config Commands. + (line 79) +* log file FILENAME: Basic Config Commands. + (line 39) +* log file FILENAME LEVEL: Basic Config Commands. + (line 40) +* log monitor: Basic Config Commands. + (line 66) +* log monitor LEVEL: Basic Config Commands. + (line 67) +* log record-priority: Basic Config Commands. + (line 85) +* log stdout: Basic Config Commands. + (line 27) +* log stdout LEVEL: Basic Config Commands. + (line 28) +* log syslog: Basic Config Commands. + (line 57) +* log syslog LEVEL: Basic Config Commands. + (line 58) +* log timestamp precision <0-6>: Basic Config Commands. + (line 95) +* log trap LEVEL: Basic Config Commands. + (line 16) +* log-adjacency-changes: ISIS router. (line 32) +* log-adjacency-changes [detail]: OSPF router. (line 71) +* logmsg LEVEL MESSAGE: Terminal Mode Commands. + (line 33) +* lsp-gen-interval <1-120>: ISIS Timer. (line 6) +* lsp-gen-interval [level-1 | level-2] <1-120>: ISIS Timer. (line 7) +* lsp-refresh-interval <1-65235>: ISIS Timer. (line 13) +* lsp-refresh-interval <1-65235> <1>: ISIS Timer. (line 20) +* lsp-refresh-interval [level-1 | level-2] <1-65235>: ISIS Timer. + (line 14) +* lsp-refresh-interval [level-1 | level-2] <1-65235> <1>: ISIS Timer. + (line 21) +* match as-path AS_PATH: Route Map Match Command. + (line 12) +* match as-path WORD: Using AS Path in Route Map. + (line 6) +* match community COMMUNITY_LIST: Route Map Match Command. + (line 21) +* match community WORD: BGP Community in Route Map. + (line 12) +* match community WORD exact-match: BGP Community in Route Map. + (line 13) +* match extcommunity WORD: BGP Extended Communities in Route Map. + (line 6) +* match interface WORD: RIP route-map. (line 25) +* match ip address ACCESS_LIST: Route Map Match Command. + (line 6) +* match ip address prefix-list WORD: RIP route-map. (line 38) +* match ip address WORD: RIP route-map. (line 37) +* match ip next-hop IPV4_ADDR: Route Map Match Command. + (line 9) +* match ip next-hop prefix-list WORD: RIP route-map. (line 42) +* match ip next-hop WORD: RIP route-map. (line 41) +* match local-preference METRIC: Route Map Match Command. + (line 18) +* match metric <0-4294967295>: RIP route-map. (line 47) +* match metric METRIC: Route Map Match Command. + (line 15) +* match peer {A.B.C.D|X:X::X:X}: Commands for configuring a Route Server. + (line 33) +* max-bw BANDWIDTH: Link Parameters Commands. + (line 22) +* max-lsp-lifetime <360-65535>: ISIS Timer. (line 27) +* max-lsp-lifetime [level-1 | level-2] <360-65535>: ISIS Timer. + (line 28) +* max-metric router-lsa administrative: OSPF router. (line 129) +* max-metric router-lsa [on-startup|on-shutdown] <5-86400>: OSPF router. + (line 127) +* max-rsv-bw BANDWIDTH: Link Parameters Commands. + (line 23) +* metric <0-4294967295>: Link Parameters Commands. + (line 21) +* metric-style [narrow | transition | wide]: ISIS router. (line 36) +* mpls-te inter-as area |as: OSPF Traffic Engineering. + (line 16) +* mpls-te on: OSPF Traffic Engineering. + (line 6) +* mpls-te on <1>: ISIS Traffic Engineering. + (line 6) +* mpls-te router-address : OSPF Traffic Engineering. + (line 10) +* mpls-te router-address <1>: ISIS Traffic Engineering. + (line 10) +* multicast: Standard Commands. (line 26) +* neigbor {A.B.C.D|X.X::X.X|peer-group} route-map WORD {import|export}: Commands for configuring a Route Server. + (line 27) +* neighbor as <0-65535>: Link Parameters Commands. + (line 54) +* neighbor A.B.C.D: RIP Configuration. (line 33) +* neighbor A.B.C.D route-server-client: Commands for configuring a Route Server. + (line 10) +* neighbor PEER default-originate: BGP Peer commands. (line 60) +* neighbor PEER description ...: BGP Peer commands. (line 19) +* neighbor PEER distribute-list NAME [in|out]: Peer filtering. + (line 6) +* neighbor PEER dont-capability-negotiate: Capability Negotiation. + (line 50) +* neighbor PEER ebgp-multihop: BGP Peer commands. (line 16) +* neighbor PEER filter-list NAME [in|out]: Peer filtering. (line 12) +* neighbor PEER interface IFNAME: BGP Peer commands. (line 32) +* neighbor PEER local-as AS-NUMBER: BGP Peer commands. (line 80) +* neighbor PEER local-as AS-NUMBER no-prepend: BGP Peer commands. + (line 81) +* neighbor PEER local-as AS-NUMBER no-prepend replace-as: BGP Peer commands. + (line 82) +* neighbor PEER maximum-prefix NUMBER: BGP Peer commands. (line 77) +* neighbor PEER next-hop-self [all]: BGP Peer commands. (line 42) +* neighbor PEER override-capability: Capability Negotiation. + (line 66) +* neighbor PEER peer-group WORD: BGP Peer Group. (line 9) +* neighbor PEER port PORT: BGP Peer commands. (line 66) +* neighbor PEER port PORT <1>: BGP Peer commands. (line 67) +* neighbor PEER prefix-list NAME [in|out]: Peer filtering. (line 10) +* neighbor PEER remote-as ASN: Defining Peer. (line 6) +* neighbor PEER route-map NAME [in|out]: Peer filtering. (line 14) +* neighbor PEER route-reflector-client: Route Reflector. (line 8) +* neighbor PEER send-community: BGP Peer commands. (line 69) +* neighbor PEER send-community <1>: BGP Peer commands. (line 70) +* neighbor PEER shutdown: BGP Peer commands. (line 9) +* neighbor PEER strict-capability-match: Capability Negotiation. + (line 39) +* neighbor PEER ttl-security hops NUMBER: BGP Peer commands. (line 101) +* neighbor PEER update-source : BGP Peer commands. + (line 49) +* neighbor PEER version VERSION: BGP Peer commands. (line 23) +* neighbor PEER weight WEIGHT: BGP Peer commands. (line 72) +* neighbor PEER-GROUP route-server-client: Commands for configuring a Route Server. + (line 9) +* neighbor WORD peer-group: BGP Peer Group. (line 6) +* neighbor X:X::X:X route-server-client: Commands for configuring a Route Server. + (line 11) +* net XX.XXXX. ... .XXX.XX: ISIS router. (line 17) +* network A.B.C.D/M: BGP route. (line 6) +* network A.B.C.D/M area <0-4294967295>: OSPF router. (line 173) +* network A.B.C.D/M area A.B.C.D: OSPF router. (line 172) +* network IFNAME: RIP Configuration. (line 26) +* network IFNAME <1>: ripngd Configuration. + (line 17) +* network NETWORK: RIP Configuration. (line 14) +* network NETWORK <1>: ripngd Configuration. + (line 14) +* no agentx: MIB and command reference. + (line 33) +* no aggregate-address A.B.C.D/M: Route Aggregation. (line 17) +* no area <0-4294967295> authentication: OSPF area. (line 127) +* no area <0-4294967295> export-list NAME: OSPF area. (line 86) +* no area <0-4294967295> filter-list prefix NAME in: OSPF area. + (line 119) +* no area <0-4294967295> filter-list prefix NAME out: OSPF area. + (line 120) +* no area <0-4294967295> import-list NAME: OSPF area. (line 109) +* no area <0-4294967295> range A.B.C.D/M: OSPF area. (line 9) +* no area <0-4294967295> shortcut: OSPF area. (line 56) +* no area <0-4294967295> stub: OSPF area. (line 63) +* no area <0-4294967295> stub no-summary: OSPF area. (line 75) +* no area <0-4294967295> virtual-link A.B.C.D: OSPF area. (line 51) +* no area A.B.C.D authentication: OSPF area. (line 126) +* no area A.B.C.D default-cost <0-16777215>: OSPF area. (line 80) +* no area A.B.C.D export-list NAME: OSPF area. (line 85) +* no area A.B.C.D filter-list prefix NAME in: OSPF area. (line 117) +* no area A.B.C.D filter-list prefix NAME out: OSPF area. (line 118) +* no area A.B.C.D import-list NAME: OSPF area. (line 108) +* no area A.B.C.D range A.B.C.D/M: OSPF area. (line 8) +* no area A.B.C.D range IPV4_PREFIX not-advertise: OSPF area. (line 28) +* no area A.B.C.D range IPV4_PREFIX substitute IPV4_PREFIX: OSPF area. + (line 34) +* no area A.B.C.D shortcut: OSPF area. (line 55) +* no area A.B.C.D stub: OSPF area. (line 62) +* no area A.B.C.D stub no-summary: OSPF area. (line 74) +* no area A.B.C.D virtual-link A.B.C.D: OSPF area. (line 50) +* no area-password: ISIS router. (line 27) +* no auto-cost reference-bandwidth: OSPF router. (line 162) +* no auto-cost reference-bandwidth <1>: OSPF6 router. (line 50) +* no bandwidth <1-10000000>: Standard Commands. (line 31) +* no banner motd: Basic Config Commands. + (line 131) +* no bgp multiple-instance: Multiple instance. (line 13) +* no capability opaque: Opaque LSA. (line 9) +* no debug event: More Show IP BGP. (line 44) +* no debug isis adj-packets: Debugging ISIS. (line 7) +* no debug isis checksum-errors: Debugging ISIS. (line 11) +* no debug isis events: Debugging ISIS. (line 15) +* no debug isis local-updates: Debugging ISIS. (line 19) +* no debug isis packet-dump: Debugging ISIS. (line 23) +* no debug isis protocol-errors: Debugging ISIS. (line 27) +* no debug isis route-events: Debugging ISIS. (line 31) +* no debug isis snp-packets: Debugging ISIS. (line 35) +* no debug isis spf-events: Debugging ISIS. (line 41) +* no debug isis spf-statistics: Debugging ISIS. (line 42) +* no debug isis spf-triggers: Debugging ISIS. (line 43) +* no debug isis update-packets: Debugging ISIS. (line 48) +* no debug keepalive: More Show IP BGP. (line 48) +* no debug ospf event: Debugging OSPF. (line 27) +* no debug ospf ism: Debugging OSPF. (line 16) +* no debug ospf ism (status|events|timers): Debugging OSPF. (line 17) +* no debug ospf lsa: Debugging OSPF. (line 36) +* no debug ospf lsa (generate|flooding|refresh): Debugging OSPF. + (line 37) +* no debug ospf nsm: Debugging OSPF. (line 22) +* no debug ospf nsm (status|events|timers): Debugging OSPF. (line 23) +* no debug ospf nssa: Debugging OSPF. (line 31) +* no debug ospf packet (hello|dd|ls-request|ls-update|ls-ack|all) (send|recv) [detail]: Debugging OSPF. + (line 9) +* no debug ospf te: Debugging OSPF. (line 41) +* no debug ospf zebra: Debugging OSPF. (line 46) +* no debug ospf zebra (interface|redistribute): Debugging OSPF. + (line 47) +* no debug update: More Show IP BGP. (line 46) +* no default-information originate: Redistribute routes to OSPF. + (line 49) +* no default-metric: Redistribute routes to OSPF. + (line 65) +* no default-metric <1-16>: RIP Metric Manipulation. + (line 11) +* no distance <1-255>: RIP distance. (line 9) +* no distance <1-255> <1>: Redistribute routes to OSPF. + (line 68) +* no distance <1-255> A.B.C.D/M: RIP distance. (line 13) +* no distance <1-255> A.B.C.D/M ACCESS-LIST: RIP distance. (line 18) +* no distance ospf: Redistribute routes to OSPF. + (line 71) +* no distribute-list NAME out (kernel|connected|static|rip|ospf: Redistribute routes to OSPF. + (line 58) +* no domain-password: ISIS router. (line 28) +* no dump bgp all [PATH] [INTERVAL]: Dump BGP packets and table. + (line 8) +* no dump bgp route-mrt [PATH] [INTERVAL]: Dump BGP packets and table. + (line 26) +* no dump bgp updates [PATH] [INTERVAL]: Dump BGP packets and table. + (line 17) +* no exec-timeout: Basic Config Commands. + (line 142) +* no hostname dynamic: ISIS router. (line 22) +* no ip address ADDRESS/PREFIX: Standard Commands. (line 14) +* no ip address ADDRESS/PREFIX secondary: Standard Commands. (line 19) +* no ip as-path access-list WORD: AS Path Access List. (line 11) +* no ip as-path access-list WORD {permit|deny} LINE: AS Path Access List. + (line 12) +* no ip community-list expanded NAME: BGP Community Lists. (line 36) +* no ip community-list NAME: BGP Community Lists. (line 34) +* no ip community-list standard NAME: BGP Community Lists. (line 35) +* no ip extcommunity-list expanded NAME: BGP Extended Community Lists. + (line 28) +* no ip extcommunity-list NAME: BGP Extended Community Lists. + (line 26) +* no ip extcommunity-list standard NAME: BGP Extended Community Lists. + (line 27) +* no ip mroute PREFIX NEXTHOP [DISTANCE]: Multicast RIB Commands. + (line 71) +* no ip multicast rpf-lookup-mode [MODE]: Multicast RIB Commands. + (line 19) +* no ip ospf area [ADDR]: OSPF interface. (line 7) +* no ip ospf authentication-key: OSPF interface. (line 19) +* no ip ospf cost: OSPF interface. (line 57) +* no ip ospf dead-interval: OSPF interface. (line 64) +* no ip ospf hello-interval: OSPF interface. (line 81) +* no ip ospf message-digest-key: OSPF interface. (line 45) +* no ip ospf network: OSPF interface. (line 92) +* no ip ospf priority: OSPF interface. (line 96) +* no ip ospf retransmit interval: OSPF interface. (line 103) +* no ip ospf transmit-delay: OSPF interface. (line 109) +* no ip prefix-list NAME: IP Prefix List. (line 64) +* no ip prefix-list NAME description [DESC]: ip prefix-list description. + (line 10) +* no ip prefix-list sequence-number: ip prefix-list sequential number control. + (line 10) +* no ip rip authentication key-chain KEY-CHAIN: RIP Authentication. + (line 43) +* no ip rip authentication mode md5: RIP Authentication. (line 29) +* no ip rip authentication mode text: RIP Authentication. (line 33) +* no ip rip authentication string STRING: RIP Authentication. (line 37) +* no ip router isis WORD: ISIS interface. (line 7) +* no ip split-horizon: RIP Configuration. (line 70) +* no ipv6 address ADDRESS/PREFIX: Standard Commands. (line 15) +* no ipv6 nd adv-interval-option: Router Advertisement. + (line 127) +* no ipv6 nd home-agent-config-flag: Router Advertisement. + (line 102) +* no ipv6 nd home-agent-lifetime [<0-65520>]: Router Advertisement. + (line 118) +* no ipv6 nd home-agent-preference [<0-65535>]: Router Advertisement. + (line 110) +* no ipv6 nd managed-config-flag: Router Advertisement. + (line 85) +* no ipv6 nd mtu [<1-65535>]: Router Advertisement. + (line 142) +* no ipv6 nd other-config-flag: Router Advertisement. + (line 94) +* no ipv6 nd ra-interval [<1-1800>]: Router Advertisement. + (line 50) +* no ipv6 nd ra-interval [msec <70-1800000>]: Router Advertisement. + (line 57) +* no ipv6 nd ra-lifetime [<0-9000>]: Router Advertisement. + (line 64) +* no ipv6 nd reachable-time [<1-3600000>]: Router Advertisement. + (line 76) +* no ipv6 nd router-preference [(high|medium|low)]: Router Advertisement. + (line 135) +* no ipv6 nd suppress-ra: Router Advertisement. + (line 6) +* no is-type: ISIS region. (line 7) +* no isis circuit-type: ISIS interface. (line 13) +* no isis csnp-interval: ISIS interface. (line 20) +* no isis csnp-interval [level-1 | level-2]: ISIS interface. (line 21) +* no isis hello-interval: ISIS interface. (line 30) +* no isis hello-interval [level-1 | level-2]: ISIS interface. (line 31) +* no isis hello-multiplier: ISIS interface. (line 37) +* no isis hello-multiplier [level-1 | level-2]: ISIS interface. + (line 38) +* no isis metric: ISIS interface. (line 45) +* no isis metric [level-1 | level-2]: ISIS interface. (line 46) +* no isis network point-to-point: ISIS interface. (line 52) +* no isis passive: ISIS interface. (line 56) +* no isis password: ISIS interface. (line 60) +* no isis priority: ISIS interface. (line 66) +* no isis priority [level-1 | level-2]: ISIS interface. (line 67) +* no isis psnp-interval: ISIS interface. (line 73) +* no isis psnp-interval [level-1 | level-2]: ISIS interface. (line 74) +* no link-detect: Standard Commands. (line 37) +* no link-param: Link Parameters Commands. + (line 7) +* no log facility: Basic Config Commands. + (line 80) +* no log file: Basic Config Commands. + (line 41) +* no log monitor: Basic Config Commands. + (line 68) +* no log record-priority: Basic Config Commands. + (line 86) +* no log stdout: Basic Config Commands. + (line 29) +* no log syslog: Basic Config Commands. + (line 59) +* no log timestamp precision: Basic Config Commands. + (line 96) +* no log trap: Basic Config Commands. + (line 17) +* no log-adjacency-changes: ISIS router. (line 33) +* no log-adjacency-changes [detail]: OSPF router. (line 72) +* no lsp-gen-interval: ISIS Timer. (line 8) +* no lsp-gen-interval [level-1 | level-2]: ISIS Timer. (line 9) +* no lsp-refresh-interval: ISIS Timer. (line 15) +* no lsp-refresh-interval <1>: ISIS Timer. (line 22) +* no lsp-refresh-interval [level-1 | level-2]: ISIS Timer. (line 16) +* no lsp-refresh-interval [level-1 | level-2] <1>: ISIS Timer. + (line 23) +* no max-lsp-lifetime: ISIS Timer. (line 29) +* no max-lsp-lifetime [level-1 | level-2]: ISIS Timer. (line 30) +* no max-metric router-lsa [on-startup|on-shutdown|administrative]: OSPF router. + (line 130) +* no metric-style: ISIS router. (line 37) +* no mpls-te: OSPF Traffic Engineering. + (line 7) +* no mpls-te <1>: OSPF Traffic Engineering. + (line 11) +* no mpls-te <2>: ISIS Traffic Engineering. + (line 7) +* no mpls-te inter-as: OSPF Traffic Engineering. + (line 17) +* no mpls-te router-address: ISIS Traffic Engineering. + (line 11) +* no multicast: Standard Commands. (line 27) +* no neighbor: Link Parameters Commands. + (line 55) +* no neighbor A.B.C.D: RIP Configuration. (line 34) +* no neighbor PEER default-originate: BGP Peer commands. (line 61) +* no neighbor PEER description ...: BGP Peer commands. (line 20) +* no neighbor PEER dont-capability-negotiate: Capability Negotiation. + (line 51) +* no neighbor PEER ebgp-multihop: BGP Peer commands. (line 17) +* no neighbor PEER interface IFNAME: BGP Peer commands. (line 33) +* no neighbor PEER local-as: BGP Peer commands. (line 83) +* no neighbor PEER maximum-prefix NUMBER: BGP Peer commands. (line 78) +* no neighbor PEER next-hop-self [all]: BGP Peer commands. (line 43) +* no neighbor PEER override-capability: Capability Negotiation. + (line 67) +* no neighbor PEER route-reflector-client: Route Reflector. (line 9) +* no neighbor PEER shutdown: BGP Peer commands. (line 10) +* no neighbor PEER strict-capability-match: Capability Negotiation. + (line 40) +* no neighbor PEER ttl-security hops NUMBER: BGP Peer commands. + (line 102) +* no neighbor PEER update-source: BGP Peer commands. (line 50) +* no neighbor PEER weight WEIGHT: BGP Peer commands. (line 73) +* no net XX.XXXX. ... .XXX.XX: ISIS router. (line 18) +* no network A.B.C.D/M: BGP route. (line 15) +* no network A.B.C.D/M area <0-4294967295>: OSPF router. (line 175) +* no network A.B.C.D/M area A.B.C.D: OSPF router. (line 174) +* no network IFNAME: RIP Configuration. (line 27) +* no network NETWORK: RIP Configuration. (line 15) +* no ospf abr-type TYPE: OSPF router. (line 26) +* no ospf opaque-lsa: Opaque LSA. (line 8) +* no ospf rfc1583compatibility: OSPF router. (line 61) +* no ospf router-id: OSPF router. (line 16) +* no passive-interface IFNAME: RIP Configuration. (line 57) +* no passive-interface INTERFACE: OSPF router. (line 78) +* no pce address: Router Information. (line 12) +* no pce domain as <0-65535>: Router Information. (line 14) +* no pce flag: Router Information. (line 18) +* no pce neighbor as <0-65535>: Router Information. (line 16) +* no pce scope: Router Information. (line 20) +* no redistribute (kernel|connected|static|rip|bgp): Redistribute routes to OSPF. + (line 21) +* no redistribute bgp: How to Announce RIP route. + (line 43) +* no redistribute connected: How to Announce RIP route. + (line 25) +* no redistribute kernel: How to Announce RIP route. + (line 9) +* no redistribute ospf: How to Announce RIP route. + (line 35) +* no redistribute static: How to Announce RIP route. + (line 17) +* no route A.B.C.D/M: How to Announce RIP route. + (line 53) +* no router bgp ASN: BGP router. (line 18) +* no router isis WORD: ISIS router. (line 10) +* no router ospf: OSPF router. (line 10) +* no router rip: RIP Configuration. (line 11) +* no router-info: Router Information. (line 7) +* no set-overload-bit: ISIS router. (line 44) +* no shutdown: Standard Commands. (line 9) +* no smux peer OID: MIB and command reference. + (line 26) +* no smux peer OID PASSWORD: MIB and command reference. + (line 29) +* no spf-interval: ISIS Timer. (line 36) +* no spf-interval [level-1 | level-2]: ISIS Timer. (line 37) +* no timers basic: RIP Timers. (line 30) +* no timers throttle spf: OSPF router. (line 90) +* no timers throttle spf <1>: OSPF6 router. (line 17) +* no version: RIP Version Control. (line 29) +* offset-list ACCESS-LIST (in|out): RIP Metric Manipulation. + (line 19) +* offset-list ACCESS-LIST (in|out) IFNAME: RIP Metric Manipulation. + (line 20) +* on-match goto N: Route Map Exit Action Command. + (line 10) +* on-match next: Route Map Exit Action Command. + (line 6) +* ospf abr-type TYPE: OSPF router. (line 25) +* ospf opaque-lsa: Opaque LSA. (line 6) +* ospf rfc1583compatibility: OSPF router. (line 60) +* ospf router-id A.B.C.D: OSPF router. (line 15) +* packet-loss PERCENTAGE: Link Parameters Commands. + (line 38) +* passive-interface (IFNAME|default): RIP Configuration. (line 56) +* passive-interface INTERFACE: OSPF router. (line 77) +* password PASSWORD: Basic Config Commands. + (line 9) +* pce address : Router Information. (line 11) +* pce domain as <0-65535>: Router Information. (line 13) +* pce flag BITPATTERN: Router Information. (line 17) +* pce neighbor as <0-65535>: Router Information. (line 15) +* pce scope BITPATTERN: Router Information. (line 19) +* redistribute (kernel|connected|static|rip|bgp): Redistribute routes to OSPF. + (line 6) +* redistribute (kernel|connected|static|rip|bgp) metric <0-16777214>: Redistribute routes to OSPF. + (line 13) +* redistribute (kernel|connected|static|rip|bgp) metric <0-16777214> route-map WORD: Redistribute routes to OSPF. + (line 15) +* redistribute (kernel|connected|static|rip|bgp) metric-type (1|2): Redistribute routes to OSPF. + (line 9) +* redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214>: Redistribute routes to OSPF. + (line 17) +* redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) metric <0-16777214> route-map WORD: Redistribute routes to OSPF. + (line 19) +* redistribute (kernel|connected|static|rip|bgp) metric-type (1|2) route-map WORD: Redistribute routes to OSPF. + (line 11) +* redistribute (kernel|connected|static|rip|bgp) ROUTE-MAP: Redistribute routes to OSPF. + (line 7) +* redistribute bgp: How to Announce RIP route. + (line 40) +* redistribute bgp metric <0-16>: How to Announce RIP route. + (line 41) +* redistribute bgp route-map ROUTE-MAP: How to Announce RIP route. + (line 42) +* redistribute connected: How to Announce RIP route. + (line 22) +* redistribute connected <1>: Redistribute routes to OSPF6. + (line 7) +* redistribute connected <2>: Redistribute to BGP. (line 12) +* redistribute connected metric <0-16>: How to Announce RIP route. + (line 23) +* redistribute connected route-map ROUTE-MAP: How to Announce RIP route. + (line 24) +* redistribute kernel: How to Announce RIP route. + (line 6) +* redistribute kernel <1>: Redistribute to BGP. (line 6) +* redistribute kernel metric <0-16>: How to Announce RIP route. + (line 7) +* redistribute kernel route-map ROUTE-MAP: How to Announce RIP route. + (line 8) +* redistribute ospf: How to Announce RIP route. + (line 32) +* redistribute ospf <1>: Redistribute to BGP. (line 18) +* redistribute ospf metric <0-16>: How to Announce RIP route. + (line 33) +* redistribute ospf route-map ROUTE-MAP: How to Announce RIP route. + (line 34) +* redistribute rip: Redistribute to BGP. (line 15) +* redistribute ripng: Redistribute routes to OSPF6. + (line 8) +* redistribute static: How to Announce RIP route. + (line 14) +* redistribute static <1>: Redistribute routes to OSPF6. + (line 6) +* redistribute static <2>: Redistribute to BGP. (line 9) +* redistribute static metric <0-16>: How to Announce RIP route. + (line 15) +* redistribute static route-map ROUTE-MAP: How to Announce RIP route. + (line 16) +* res-bw BANDWIDTH: Link Parameters Commands. + (line 39) +* route A.B.C.D/M: How to Announce RIP route. + (line 52) +* route NETWORK: ripngd Configuration. + (line 20) +* route-map ROUTE-MAP-NAME (permit|deny) ORDER: Route Map Command. + (line 6) +* router bgp AS-NUMBER: BGP instance and view. + (line 10) +* router bgp AS-NUMBER view NAME: BGP instance and view. + (line 27) +* router bgp ASN: BGP router. (line 12) +* router isis WORD: ISIS router. (line 9) +* router ospf: OSPF router. (line 9) +* router ospf6: OSPF6 router. (line 6) +* router rip: RIP Configuration. (line 6) +* router ripng: ripngd Configuration. + (line 8) +* router zebra: ripngd Configuration. + (line 23) +* router-id A.B.C.D: OSPF6 router. (line 8) +* router-info [as | area ]: Router Information. (line 6) +* service advanced-vty: Basic Config Commands. + (line 118) +* service integrated-vtysh-config: VTY shell integrated configuration. + (line 6) +* service password-encryption: Basic Config Commands. + (line 115) +* service terminal-length <0-512>: Basic Config Commands. + (line 121) +* set as-path prepend AS-PATH: Using AS Path in Route Map. + (line 8) +* set as-path prepend AS_PATH: Route Map Set Command. + (line 18) +* set as-path prepend last-as NUM: Using AS Path in Route Map. + (line 11) +* set comm-list WORD delete: BGP Community in Route Map. + (line 33) +* set community COMMUNITY: BGP Community in Route Map. + (line 22) +* set community COMMUNITY <1>: Route Map Set Command. + (line 21) +* set community COMMUNITY additive: BGP Community in Route Map. + (line 23) +* set community none: BGP Community in Route Map. + (line 21) +* set extcommunity rt EXTCOMMUNITY: BGP Extended Communities in Route Map. + (line 8) +* set extcommunity soo EXTCOMMUNITY: BGP Extended Communities in Route Map. + (line 11) +* set ip next-hop A.B.C.D: RIP route-map. (line 52) +* set ip next-hop IPV4_ADDRESS: Route Map Set Command. + (line 6) +* set ipv6 next-hop global IPV6_ADDRESS: Route Map Set Command. + (line 24) +* set ipv6 next-hop local IPV6_ADDRESS: Route Map Set Command. + (line 27) +* set local-preference LOCAL_PREF: Route Map Set Command. + (line 9) +* set metric <0-4294967295>: RIP route-map. (line 57) +* set metric METRIC: Route Map Set Command. + (line 15) +* set src ADDRESS: zebra Route Filtering. + (line 16) +* set weight WEIGHT: Route Map Set Command. + (line 12) +* set-overload-bit: ISIS router. (line 43) +* show bgp ipv4 encap summary: BGP Address Family. (line 23) +* show bgp ipv4 vpn summary: BGP Address Family. (line 24) +* show bgp ipv6 encap summary: BGP Address Family. (line 25) +* show bgp ipv6 vpn summary: BGP Address Family. (line 26) +* show debug: More Show IP BGP. (line 36) +* show debugging isis: Debugging ISIS. (line 51) +* show debugging ospf: Debugging OSPF. (line 50) +* show debugging rip: RIP Debug Commands. (line 28) +* show debugging ripng: ripngd Terminal Mode Commands. + (line 8) +* show interface: zebra Terminal Mode Commands. + (line 20) +* show ip bgp: Show IP BGP. (line 6) +* show ip bgp A.B.C.D: Show IP BGP. (line 7) +* show ip bgp community: Display BGP Routes by Community. + (line 10) +* show ip bgp community COMMUNITY: Display BGP Routes by Community. + (line 11) +* show ip bgp community COMMUNITY <1>: More Show IP BGP. (line 10) +* show ip bgp community COMMUNITY exact-match: Display BGP Routes by Community. + (line 12) +* show ip bgp community COMMUNITY exact-match <1>: More Show IP BGP. + (line 11) +* show ip bgp community-list WORD: Display BGP Routes by Community. + (line 19) +* show ip bgp community-list WORD <1>: More Show IP BGP. (line 15) +* show ip bgp community-list WORD exact-match: Display BGP Routes by Community. + (line 20) +* show ip bgp community-list WORD exact-match <1>: More Show IP BGP. + (line 16) +* show ip bgp dampened-paths: More Show IP BGP. (line 30) +* show ip bgp encap all: BGP Address Family. (line 18) +* show ip bgp flap-statistics: More Show IP BGP. (line 33) +* show ip bgp neighbor [PEER]: More Show IP BGP. (line 22) +* show ip bgp regexp LINE: Display BGP Routes by AS Path. + (line 9) +* show ip bgp regexp LINE <1>: More Show IP BGP. (line 6) +* show ip bgp summary: More Show IP BGP. (line 20) +* show ip bgp view NAME: Viewing the view. (line 8) +* show ip bgp vpnv4 all: BGP Address Family. (line 14) +* show ip bgp X:X::X:X: Show IP BGP. (line 8) +* show ip community-list: BGP Community Lists. (line 41) +* show ip community-list NAME: BGP Community Lists. (line 42) +* show ip extcommunity-list: BGP Extended Community Lists. + (line 34) +* show ip extcommunity-list NAME: BGP Extended Community Lists. + (line 35) +* show ip ospf: Showing OSPF information. + (line 6) +* show ip ospf database: Showing OSPF information. + (line 19) +* show ip ospf database (opaque-link|opaque-area|opaque-external): Opaque LSA. + (line 15) +* show ip ospf database (opaque-link|opaque-area|opaque-external) adv-router ADV-ROUTER: Opaque LSA. + (line 22) +* show ip ospf database (opaque-link|opaque-area|opaque-external) LINK-STATE-ID: Opaque LSA. + (line 17) +* show ip ospf database (opaque-link|opaque-area|opaque-external) LINK-STATE-ID adv-router ADV-ROUTER: Opaque LSA. + (line 19) +* show ip ospf database (opaque-link|opaque-area|opaque-external) LINK-STATE-ID self-originate: Opaque LSA. + (line 25) +* show ip ospf database (opaque-link|opaque-area|opaque-external) self-originate: Opaque LSA. + (line 28) +* show ip ospf database ... adv-router ADV-ROUTER: Showing OSPF information. + (line 28) +* show ip ospf database ... LINK-STATE-ID: Showing OSPF information. + (line 25) +* show ip ospf database ... LINK-STATE-ID adv-router ADV-ROUTER: Showing OSPF information. + (line 26) +* show ip ospf database ... LINK-STATE-ID self-originate: Showing OSPF information. + (line 29) +* show ip ospf database ... self-originate: Showing OSPF information. + (line 30) +* show ip ospf database asbr-router: Showing OSPF information. + (line 23) +* show ip ospf database asbr-summary: Showing OSPF information. + (line 20) +* show ip ospf database external: Showing OSPF information. + (line 21) +* show ip ospf database max-age: Showing OSPF information. + (line 32) +* show ip ospf database network: Showing OSPF information. + (line 22) +* show ip ospf database self-originate: Showing OSPF information. + (line 34) +* show ip ospf database summary: Showing OSPF information. + (line 24) +* show ip ospf interface [INTERFACE]: Showing OSPF information. + (line 10) +* show ip ospf mpls-te interface: OSPF Traffic Engineering. + (line 24) +* show ip ospf mpls-te interface INTERFACE: OSPF Traffic Engineering. + (line 25) +* show ip ospf mpls-te router: OSPF Traffic Engineering. + (line 29) +* show ip ospf neighbor: Showing OSPF information. + (line 14) +* show ip ospf neighbor detail: Showing OSPF information. + (line 16) +* show ip ospf neighbor INTERFACE: Showing OSPF information. + (line 15) +* show ip ospf neighbor INTERFACE detail: Showing OSPF information. + (line 17) +* show ip ospf route: Showing OSPF information. + (line 36) +* show ip ospf router-info: Router Information. (line 30) +* show ip ospf router-info pce: Router Information. (line 32) +* show ip prefix-list: Showing ip prefix-list. + (line 6) +* show ip prefix-list detail: Showing ip prefix-list. + (line 29) +* show ip prefix-list detail NAME: Showing ip prefix-list. + (line 30) +* show ip prefix-list NAME: Showing ip prefix-list. + (line 9) +* show ip prefix-list NAME A.B.C.D/M: Showing ip prefix-list. + (line 16) +* show ip prefix-list NAME A.B.C.D/M first-match: Showing ip prefix-list. + (line 24) +* show ip prefix-list NAME A.B.C.D/M longer: Showing ip prefix-list. + (line 22) +* show ip prefix-list NAME seq NUM: Showing ip prefix-list. + (line 12) +* show ip prefix-list summary: Showing ip prefix-list. + (line 26) +* show ip prefix-list summary NAME: Showing ip prefix-list. + (line 27) +* show ip prefix-list [NAME]: zebra Terminal Mode Commands. + (line 22) +* show ip protocol: zebra Terminal Mode Commands. + (line 26) +* show ip rip: Show RIP Information. + (line 8) +* show ip rip status: Show RIP Information. + (line 16) +* show ip ripng: ripngd Terminal Mode Commands. + (line 6) +* show ip route: zebra Terminal Mode Commands. + (line 6) +* show ip route isis: Showing ISIS information. + (line 36) +* show ip rpf: Multicast RIB Commands. + (line 64) +* show ip rpf ADDR: Multicast RIB Commands. + (line 50) +* show ipforward: zebra Terminal Mode Commands. + (line 28) +* show ipv6 bgp encap all: BGP Address Family. (line 19) +* show ipv6 bgp vpn all: BGP Address Family. (line 15) +* show ipv6 ospf6 database: Showing OSPF6 information. + (line 10) +* show ipv6 ospf6 interface: Showing OSPF6 information. + (line 14) +* show ipv6 ospf6 neighbor: Showing OSPF6 information. + (line 17) +* show ipv6 ospf6 request-list A.B.C.D: Showing OSPF6 information. + (line 20) +* show ipv6 ospf6 [INSTANCE_ID]: Showing OSPF6 information. + (line 6) +* show ipv6 route: zebra Terminal Mode Commands. + (line 18) +* show ipv6 route ospf6: Showing OSPF6 information. + (line 23) +* show ipv6forward: zebra Terminal Mode Commands. + (line 33) +* show isis database: Showing ISIS information. + (line 24) +* show isis database [detail]: Showing ISIS information. + (line 26) +* show isis database detail : Showing ISIS information. + (line 27) +* show isis database [detail]: Showing ISIS information. + (line 25) +* show isis hostname: Showing ISIS information. + (line 9) +* show isis interface: Showing ISIS information. + (line 12) +* show isis interface : Showing ISIS information. + (line 14) +* show isis interface detail: Showing ISIS information. + (line 13) +* show isis mpls-te interface: ISIS Traffic Engineering. + (line 14) +* show isis mpls-te interface INTERFACE: ISIS Traffic Engineering. + (line 15) +* show isis mpls-te router: ISIS Traffic Engineering. + (line 19) +* show isis neighbor: Showing ISIS information. + (line 18) +* show isis neighbor : Showing ISIS information. + (line 19) +* show isis neighbor detail: Showing ISIS information. + (line 20) +* show isis summary: Showing ISIS information. + (line 6) +* show isis topology: Showing ISIS information. + (line 31) +* show isis topology [level-1|level-2]: Showing ISIS information. + (line 32) +* show logging: Terminal Mode Commands. + (line 29) +* show route-map [NAME]: zebra Terminal Mode Commands. + (line 24) +* show version: Terminal Mode Commands. + (line 26) +* show zebra fpm stats: zebra Terminal Mode Commands. + (line 36) +* shutdown: Standard Commands. (line 8) +* smux peer OID: MIB and command reference. + (line 25) +* smux peer OID PASSWORD: MIB and command reference. + (line 28) +* spf-interval <1-120>: ISIS Timer. (line 34) +* spf-interval [level-1 | level-2] <1-120>: ISIS Timer. (line 35) +* table TABLENO: Static Route Commands. + (line 80) +* terminal length <0-512>: Terminal Mode Commands. + (line 16) +* timers basic UPDATE TIMEOUT GARBAGE: RIP Timers. (line 6) +* timers throttle spf DELAY INITIAL-HOLDTIME MAX-HOLDTIME: OSPF router. + (line 88) +* timers throttle spf DELAY INITIAL-HOLDTIME MAX-HOLDTIME <1>: OSPF6 router. + (line 15) +* unrsv-bw <0-7> BANDWIDTH: Link Parameters Commands. + (line 24) +* use-bw BANDWIDTH: Link Parameters Commands. + (line 41) +* username USERNAME nopassword: VTY shell username. (line 6) +* version VERSION: RIP Version Control. (line 19) +* who: Terminal Mode Commands. + (line 20) +* write file: Terminal Mode Commands. + (line 9) +* write terminal: Terminal Mode Commands. + (line 6) + + +File: quagga.info, Node: VTY Key Index, Next: Index, Prev: Command Index, Up: Top + +VTY Key Index +************* + +[index] +* Menu: + +* : CLI Advanced Commands. + (line 27) +* C-a: CLI Movement Commands. + (line 24) +* C-b: CLI Movement Commands. + (line 15) +* C-c: CLI Advanced Commands. + (line 10) +* C-d: CLI Editing Commands. (line 14) +* C-e: CLI Movement Commands. + (line 27) +* C-f: CLI Movement Commands. + (line 11) +* C-h: CLI Editing Commands. (line 11) +* C-k: CLI Editing Commands. (line 23) +* C-n: CLI Advanced Commands. + (line 17) +* C-p: CLI Advanced Commands. + (line 21) +* C-t: CLI Editing Commands. (line 29) +* C-u: CLI Editing Commands. (line 26) +* C-v: CLI Editing Commands. (line 32) +* C-w: CLI Editing Commands. (line 20) +* C-z: CLI Advanced Commands. + (line 13) +* : CLI Editing Commands. (line 11) +* : CLI Advanced Commands. + (line 17) +* : CLI Movement Commands. + (line 15) +* M-b: CLI Movement Commands. + (line 21) +* M-d: CLI Editing Commands. (line 17) +* M-f: CLI Movement Commands. + (line 18) +* : CLI Movement Commands. + (line 11) +* : CLI Advanced Commands. + (line 24) +* : CLI Advanced Commands. + (line 21) + + +File: quagga.info, Node: Index, Prev: VTY Key Index, Up: Top + +Index +***** + +[index] +* Menu: + +* About Quagga: About Quagga. (line 6) +* Bug hunting: Bug Reports. (line 6) +* Bug Reports: Bug Reports. (line 6) +* Build options: The Configure script and its options. + (line 6) +* Building on Linux boxes: Linux notes. (line 6) +* Building the system: Installation. (line 6) +* Compatibility with other systems: Supported Platforms. (line 6) +* Configuration files for running the software: Config Commands. + (line 6) +* Configuration options: The Configure script and its options. + (line 6) +* Configuring Quagga: Linux notes. (line 6) +* Contact information: Mailing List. (line 6) +* Distance-vector routing protocol: OSPF Fundamentals. (line 6) +* Distribution configuration: The Configure script and its options. + (line 6) +* Errors in the software: Bug Reports. (line 6) +* Files for running configurations: Config Commands. (line 6) +* Found a bug?: Bug Reports. (line 6) +* Getting the herd running: Config Commands. (line 6) +* How to get in touch with Quagga: Mailing List. (line 6) +* How to install Quagga: Installation. (line 6) +* Installation: Installation. (line 6) +* Installing Quagga: Installation. (line 6) +* ISIS: OSPF6 Configuration Examples. + (line 15) +* Link State Advertisement: OSPF Fundamentals. (line 12) +* Link State Announcement: OSPF Fundamentals. (line 12) +* Link State DataBase: OSPF Fundamentals. (line 12) +* Link-state routing protocol: OSPF Fundamentals. (line 6) +* Link-state routing protocol advantages: OSPF Fundamentals. (line 22) +* Link-state routing protocol disadvantages: OSPF Fundamentals. + (line 32) +* Linux configurations: Linux notes. (line 6) +* LSA flooding: OSPF Fundamentals. (line 12) +* Mailing lists: Mailing List. (line 6) +* Mailing Quagga: Mailing List. (line 6) +* Making Quagga: Installation. (line 6) +* Modifying the herd's behavior: Config Commands. (line 6) +* NHRP: ISIS Configuration Examples. + (line 79) +* Operating systems that support Quagga: Supported Platforms. (line 6) +* Options for configuring: The Configure script and its options. + (line 6) +* Options to ./configure: The Configure script and its options. + (line 6) +* OSPF Areas overview: OSPF Fundamentals. (line 103) +* OSPF Fundamentals: OSPFv2. (line 27) +* OSPF Hello Protocol: OSPF Fundamentals. (line 55) +* OSPF Hello Protocol overview: OSPF Fundamentals. (line 53) +* OSPF LSA overview: OSPF Fundamentals. (line 73) +* OSPFv2: ripngd Filtering Commands. + (line 13) +* Overview: Overview. (line 6) +* Quagga Least-Privileges: Least-Privilege support. + (line 6) +* Quagga on other systems: Supported Platforms. (line 6) +* Quagga Privileges: Least-Privilege support. + (line 6) +* Reporting bugs: Bug Reports. (line 6) +* Reporting software errors: Bug Reports. (line 6) +* Software architecture: System Architecture. (line 6) +* Software internals: System Architecture. (line 6) +* Supported platforms: Supported Platforms. (line 6) +* System architecture: System Architecture. (line 6) + diff --git a/doc/routemap.texi b/doc/routemap.texi index b3ef7ca..bdbeb9a 100644 --- a/doc/routemap.texi +++ b/doc/routemap.texi @@ -143,7 +143,7 @@ Matches the specified @var{access_list} Matches the specified @var{ipv4_addr}. @end deffn -@deffn {Route-map Command} {match aspath @var{as_path}} {} +@deffn {Route-map Command} {match as-path @var{as_path}} {} Matches the specified @var{as_path}. @end deffn diff --git a/doc/stamp-vti b/doc/stamp-vti new file mode 100644 index 0000000..9cd8fc2 --- /dev/null +++ b/doc/stamp-vti @@ -0,0 +1,4 @@ +@set UPDATED 4 February 2018 +@set UPDATED-MONTH February 2018 +@set EDITION 1.2.3 +@set VERSION 1.2.3 diff --git a/doc/texinfo.css b/doc/texinfo.css index f5fa4f4..0f58797 100644 --- a/doc/texinfo.css +++ b/doc/texinfo.css @@ -12,15 +12,16 @@ /* NATIVE ELEMENTS */ -a:link, +a:link {color: #000099; text-decoration: none;} a:visited { - color: #1E90FF; + color: #6666cc; text-decoration: none; } a:active, a:focus, a:hover { + color: #cc0000; text-decoration: underline; } diff --git a/doc/version.texi b/doc/version.texi new file mode 100644 index 0000000..9cd8fc2 --- /dev/null +++ b/doc/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 4 February 2018 +@set UPDATED-MONTH February 2018 +@set EDITION 1.2.3 +@set VERSION 1.2.3 diff --git a/doc/zebra.8 b/doc/zebra.8 index 6f70389..da5881c 100644 --- a/doc/zebra.8 +++ b/doc/zebra.8 @@ -80,7 +80,7 @@ handle flood of netlink messages from kernel. If you ever see "recvmsg overrun" messages in zebra log, you are in trouble. Solution is to increase receive buffer of netlink socket. Note that kernel -< 2.6.14 doesn't allow to increase it over maximum value defined in +< 2.6.14 doesn't allow increasing it over the maximum value defined in \fI/proc/sys/net/core/rmem_max\fR. If you want to do it, you have to increase maximum before starting zebra. diff --git a/fpm/.gitignore b/fpm/.gitignore deleted file mode 100644 index b133c52..0000000 --- a/fpm/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -Makefile -Makefile.in -*.o -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.a -*.libs -.arch-inventory -.arch-ids -*~ -*.loT diff --git a/fpm/Makefile.in b/fpm/Makefile.in new file mode 100644 index 0000000..ce5bc9e --- /dev/null +++ b/fpm/Makefile.in @@ -0,0 +1,762 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +# +# Automake fragment intended to be shared by Makefile.am files in the +# tree. +# + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = fpm +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libfpm_pb_la_LIBADD = +am__objects_1 = +am_libfpm_pb_la_OBJECTS = fpm_pb.lo $(am__objects_1) +@HAVE_PROTOBUF_TRUE@am__objects_2 = fpm.pb-c.lo +nodist_libfpm_pb_la_OBJECTS = $(am__objects_2) +libfpm_pb_la_OBJECTS = $(am_libfpm_pb_la_OBJECTS) \ + $(nodist_libfpm_pb_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libfpm_pb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libfpm_pb_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libfpm_pb_la_SOURCES) $(nodist_libfpm_pb_la_SOURCES) +DIST_SOURCES = $(libfpm_pb_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/../common.am $(srcdir)/Makefile.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Uncomment to use an non-system version of libprotobuf-c. +# +# Q_PROTOBUF_C_CLIENT_INCLUDES = -I$(top_srcdir)/third-party/protobuf-c/src +# Q_PROTOBUF_C_CLIENT_LDOPTS = $(top_builddir)/third-party/protobuf-c/src/libprotobuf-c.la +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_C_CLIENT_INCLUDES = +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_C_CLIENT_LDOPTS = -lprotobuf-c +@HAVE_PROTOBUF_TRUE@Q_PROTOC = protoc +@HAVE_PROTOBUF_TRUE@Q_PROTOC_C = protoc-c +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_CFILES = $(filter %.pb-c.c,$(SOURCES)) +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_SRCS = $(Q_PROTOBUF_CFILES) $(Q_PROTOBUF_HFILES) + +# +# Information about how to link to various libraries. +# +@HAVE_PROTOBUF_TRUE@Q_QUAGGA_PB_CLIENT_LDOPTS = $(top_srcdir)/qpb/libquagga_pb.la $(Q_PROTOBUF_C_CLIENT_LDOPTS) +@HAVE_PROTOBUF_TRUE@Q_FPM_PB_CLIENT_LDOPTS = $(top_srcdir)/fpm/libfpm_pb.la $(Q_QUAGGA_PB_CLIENT_LDOPTS) +Q_CLEANFILES = $(Q_PROTOBUF_SRCS) +Q_BUILT_SRCS = $(Q_PROTOBUF_SRCS) +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib $(Q_PROTOBUF_C_CLIENT_INCLUDES) +PROTOBUF_INCLUDES = -I$(top_srcdir) +PROTOBUF_PACKAGE = fpm +lib_LTLIBRARIES = libfpm_pb.la +libfpm_pb_la_LDFLAGS = -version-info 0:0:0 +@HAVE_PROTOBUF_TRUE@protobuf_srcs = +@HAVE_PROTOBUF_TRUE@protobuf_srcs_nodist = \ +@HAVE_PROTOBUF_TRUE@ fpm.pb-c.c + +libfpm_pb_la_SOURCES = \ + fpm.h \ + fpm_pb.h \ + fpm_pb.c \ + $(protobuf_srcs) + +nodist_libfpm_pb_la_SOURCES = $(protobuf_srcs_nodist) +CLEANFILES = $(Q_CLEANFILES) +BUILT_SOURCES = $(Q_PROTOBUF_SRCS) +EXTRA_DIST = fpm.proto +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../common.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fpm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu fpm/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/../common.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libfpm_pb.la: $(libfpm_pb_la_OBJECTS) $(libfpm_pb_la_DEPENDENCIES) $(EXTRA_libfpm_pb_la_DEPENDENCIES) + $(AM_V_CCLD)$(libfpm_pb_la_LINK) -rpath $(libdir) $(libfpm_pb_la_OBJECTS) $(libfpm_pb_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpm.pb-c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpm_pb.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES + +.PRECIOUS: Makefile + + +# Rules +@HAVE_PROTOBUF_TRUE@%.pb.h: %.proto +@HAVE_PROTOBUF_TRUE@ $(Q_PROTOC) $(PROTOBUF_INCLUDES) --cpp_out=$(top_srcdir) $(top_srcdir)/$(PROTOBUF_PACKAGE)/$^ + +@HAVE_PROTOBUF_TRUE@%.pb-c.c %.pb-c.h: %.proto +@HAVE_PROTOBUF_TRUE@ $(Q_PROTOC_C) $(PROTOBUF_INCLUDES) --c_out=$(top_srcdir) $(top_srcdir)/$(PROTOBUF_PACKAGE)/$^ + +# 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/gdb/lib.txt b/gdb/lib.txt deleted file mode 100644 index b703808..0000000 --- a/gdb/lib.txt +++ /dev/null @@ -1,295 +0,0 @@ -# GDB macros for use with Quagga. -# -# Macros in this file are not daemon specific. E.g., OS or Quagga library -# APIs. -# -# The macro file can be loaded with 'source '. They can then be -# called by the user. Macros that explore more complicated structs generally -# take pointer arguments. -# -# E.g.: -# -# (gdb) source ~paul/code/quagga/gdb/lib.txt -# (gdb) break bgp_packet.c:613 -# Breakpoint 3 at 0x7fa883033a32: file bgp_packet.c, line 613. -# (gdb) cont -# ... -# (gdb) cont -# Breakpoint 3, bgp_write_packet (peer=0x7fa885199080) at bgp_packet.c:614 -# 614 if (CHECK_FLAG (adv->binfo->peer->cap,PEER_CAP_RESTART_RCV) -# (gdb) dump_prefix4 &adv->rn->p -# IPv4:10.1.1.0/24 -# (gdb) dump_prefix &adv->rn->p -# IPv4:10.1.1.0/24 -# - - -define def_ntohs - set $data = (char *)$arg0 - set $i = 0 - - set $_ = $data[$i++] << 8 - set $_ += $data[$i++] -end -document def_ntohs -Read a 2-byte short at the given pointed to area as big-endian and -return it in $_ - -Argument: Pointer to a 2-byte, big-endian short word. -Returns: Integer value of that word in $_ -end - -define def_ntohl - set $data = (char *)$arg0 - set $i = 0 - - set $_ = $data[$i++] << 24 - set $_ += $data[$i++] << 16 - set $_ += $data[$i++] << 8 - set $_ += $data[$i++] -end -document def_ntohl -Read a 4-byte integer at the given pointed to area as big-endian and -return it in $_ - -Argument: Pointer to a big-endian 4-byte word. -Returns: Integer value of that word in $_ -end - -# NB: This is in more complicated iterative form, rather than more -# conventional and simpler recursive form, because GDB has a recursion limit -# on macro calls (I think). -define walk_route_table_next - # callee saves - set $_top = $top - set $_node = $node - set $_prevl = $prevl - - set $top = (struct route_node *)$arg0 - set $node = (struct route_node *)$arg1 - set $prevl = $node - - # first try left - #echo try left\n - set $node = $prevl->link[0] - - # otherwise try right - if ($node == 0) - #echo left null, try right\n - set $node = $prevl->link[1] - end - - # otherwise go up, till we find the first right that - # we havn't been to yet - if ($node == 0) - set $node = $prevl - while ($node != $top) - #echo right null, try up and right\n - - set $prevl = $node - set $parent = $node->parent - set $node = $parent->link[1] - - if ($node != 0 && $node != $prevl) - #echo found node \n - loop_break - end - - #echo go up\n - set $node = $parent - end - end - - #printf "next node: 0x%x\n", $node - - set $_ = $node - - set $top = $_top - set $node = $_node - set $prevl = $_prevl -end -document walk_route_table_next -Return the next node to visit in the given route_table (or subset of) and -the given current node. - -Arguments: -1st: (struct route_node *) to the top of the route_table to walk -2nd: (struct route_node *) to the current node - -Returns: The (struct route_node *) for the next to visit in $_ -end - -define walk_route_table - set $_visited = $visited - set $_node = $node - set $top = $_top - - set $node = (struct route_node *)$arg0 - set $top = (struct route_node *)$arg0 - set $visited = 0 - - while ($node != 0) - printf "Node: 0x%x", $node - - if ($node->info != 0) - printf "\tinfo: 0x%x", $node->info - set $visited = $visited + 1 - end - - printf "\n" - - walk_route_table_next $top $node - set $node = $_ - - # we've gotten back to the top, finish - if ($node == $top) - set $node = 0 - end - end - printf "Visited: %u\n", $visited - - set $top = $_top - set $visited = $_visited - set $node = $_node -end - -document walk_route_table -Walk through a routing table (or subset thereof) and dump all the non-null -(struct route_node *)->info pointers. - -Argument: A lib/thread.h::(struct route_node *) pointing to the route_node -under which all data should be dumped -end - -define dump_timeval - set $tv = (struct timeval *)$arg0 - set $day = 3600*24 - - if $tv->tv_sec > $day - printf "%d days, ", $tv->tv_sec / $day - end - if $tv->tv_sec > 3600 - printf "%dh", $tv->tv_sec / 3600 - end - if ($tv->tv_sec % 3600) > 60 - printf "%dm", ($tv->tv_sec % 3600) / 60 - end - printf "%d", $tv->tv_sec % 3600 % 60 - if $tv->tv_usec != 0 - printf ".%06d", $tv->tv_usec - end - printf "s" -end -document dump_timeval -Human readable dump of a (struct timeval *) argument -end - -define dump_s_addr - set $addr = (char *)$arg0 - - printf "%d.%d.%d.%d", $addr[0], $addr[1], $addr[2], $addr[3] -end - -define dump_s6_addr - set $a6 = (char *)$arg0 - set $field = 0 - - while ($field < 16) - set $i1 = $field++ - set $i2 = $field++ - - printf "%x%x", $a6[$i1], $a6[$i2] - - if ($field > 2 && ($field % 4 == 0)) - printf ":" - end - end -end -document dump_s6_addr -Interpret the memory starting at given address as an IPv6 s6_addr and -print in human readable form. -end - -define dump_prefix4 - set $p = (struct prefix *) $arg0 - echo IPv4: - dump_s_addr &($p->u.prefix4) - printf "/%d\n", $p->prefixlen -end -document dump_prefix4 -Textual dump of a (struct prefix4 *) argument. -end - -define dump_prefix6 - set $p = (struct prefix *) $arg0 - echo IPv6: - dump_s6_addr &($p->u.prefix6) - printf "/%d\n", $p->prefixlen -end -document dump_prefix6 -Textual dump of a (struct prefix6 *) argument. -end - -define dump_prefix - set $p = $arg0 - - if ($p->family == 2) - dump_prefix4 $p - end - if ($p->family == 10) - dump_prefix6 $p - end -end -document dump_prefix -Human readable dump of a (struct prefix *) argument. -end - -define rn_next_down - set $node = $arg0 - while ($node != 0) - print/x $node - if ($node->link[0] != 0) - set $node = $node->link[0] - else - set $node = $node->link[1] - end - end -end - -document rn_next_down -Walk left-down a given route table, dumping locations of route_nodes - -Argument: A single (struct route_node *). -end - -define rn_next_up - set $top = (struct route_node *)$arg0 - set $node = (struct route_node *)$arg1 - - while ($node != $top) - echo walk up\n - - set $prevl = $node - set $parent = $node->parent - set $node = $parent->link[1] - - if ($node != 0 && $node != $prevl) - echo found a node\n - loop_break - end - - echo going up\n - set $node = $parent - end - output/x $node - echo \n -end - -document rn_next_up -Walk up-and-right from the given route_node to the next valid route_node -which is not the given "top" route_node - -Arguments: -1st: A (struct route_node *) to the top of the route table. -2nd: The (struct route_node *) to walk up from -end diff --git a/gdb/ospf.txt b/gdb/ospf.txt deleted file mode 100644 index 984104b..0000000 --- a/gdb/ospf.txt +++ /dev/null @@ -1,137 +0,0 @@ -# GDB macros for use with Quagga. -# -# Macros in this file are specific to ospfd/. Definitions here depend on the -# lib.txt macros file, which must also be loaed. -# -# The macro file can be loaded with 'source '. They can then be -# called by the user. Macros that explore more complicated structs generally -# take pointer arguments. - -define dump_ospf_lsa_flags - set $flags = $arg0 - - printf "%u: ", $flags - - if $flags & 0x1 - echo Self, - end - if $flags & 0x2 - echo Self-checked, - end - if $flags & 0x4 - echo Recvd, - end - if $flags & 0x8 - echo Apprvd, - end - if $flags & 0x10 - echo Discard, - end - if $flags & 0x20 - echo Local-Xlt, - end - if $flags & 0x40 - echo Premature-Aged, - end - if $flags & 0x40 - echo In-Maxage, - end - echo \n -end - -define dump_ospf_lsa_data - set $lsad = (struct lsa_header *)$arg0 - - echo ID / AdvRtr: \t\t - dump_s_addr &$lsad->id.s_addr - echo \ : \ - dump_s_addr &$lsad->adv_router.s_addr - echo \n - - def_ntohs &$lsad->ls_age - printf "Type: %2u Age: %4u,", $lsad->type, $_ - - def_ntohs &$lsad->length - printf " length: %2u", $_ - - def_ntohl &$lsad->ls_seqnum - printf " Seqnum: 0x%08x", $_ - - def_ntohs &$lsad->checksum - printf " csum: 0x%04x\n", $_ - - # return the age - def_ntohs &$lsad->ls_age -end - -define dump_ospf_lsa - set $lsa = (struct ospf_lsa *)$arg0 - - #print/x *$lsa - - dump_ospf_lsa_data $lsa->data - - set $relage = $_ + (relative_time.tv_sec - $lsa->tv_recv.tv_sec) - printf "Relative age: %4u\n", $relage - - dump_ospf_lsa_flags $lsa->flags - - echo tv_recv: \ - dump_timeval &$lsa->tv_recv - echo \ tv_orig: \ - dump_timeval &$lsa->tv_orig - echo \n - - printf "lock %2u", $lsa->lock - printf " stat %2d", $lsa->stat - printf " rtx count: %u", $lsa->retransmit_counter - printf " rfsh list: %d", $lsa->refresh_list - printf "\n\n" -end - -define walk_ospf_lsdb - set $node = (struct route_node *)$arg0 - set $top = (struct route_node *)$arg0 - set $visited = 0 - - while ($node != 0) - set $prevl = $node - - if ($node->info != 0) - dump_ospf_lsa $node->info - set $visited = $visited + 1 - end - - walk_route_table_next $top $node - set $node = $_ - - # we've gotten back to the top, finish - if ($node == $top) - set $node = 0 - end - end - printf "Visited: %u\n", $visited -end - -document walk_ospf_lsdb -Walk through an OSPF LSDB (or subset thereof) and dump all the LSAs -contained there-in. - -Argument: A (struct route_node *) pointing to the top of the -LSDB route-table which should be dumped. -end - -define ospf_backbone_lsdb_top - set $type = $arg0 - - set $ospf = ospf_master->ospf->head->data - - output/x ((struct ospf *)$ospf)->backbone->lsdb->type[$type]->db->top - echo \n -end -document ospf_backbone_lsdb_top -Dump location of the LSDB in the backbone area for the given LSA type - -Argument: Integer LSA type -end - diff --git a/infra/buildbot/master/master.cfg b/infra/buildbot/master/master.cfg deleted file mode 100644 index 00e56dd..0000000 --- a/infra/buildbot/master/master.cfg +++ /dev/null @@ -1,619 +0,0 @@ -# -*- python -*- -# ex: set syntax=python: - -from buildbot.plugins import * -from buildbot.plugins import buildslave, util - -# This is a sample buildmaster config file. It must be installed as -# 'master.cfg' in your buildmaster's base directory. - -# This is the dictionary that the buildmaster pays attention to. We also use -# a shorter alias to save typing. -c = BuildmasterConfig = {} - -quaggagit = 'git://git.sv.gnu.org/quagga.git' - -# password defs -execfile("pass.cfg") - -# filter a given 'workers' entry into a property list -# suitable for public display -def workers2publicprops (worker): - publicprops = [ "os", "version", "vm", "pkg", "texi", "cc", - "latent", ] - return { k:worker[k] for k in worker if k in publicprops } - -# vm: non-VM are assumed faster and used for initial build -# pkg: rpm, sysv, dpkg - only do test rpm builds at moment -# texi: True or "true" if we can use for doc building -# cc: List of tuples of installed compilers, with: -# (, , ) -# tag: gcc, clang, sunpro -# latent: VM spun up on demand via LatentSlave, uses "session" for -# the libvirt URI. -# session: libvirt URI to use for latent workers. Default will be set on -# latent VMs if not specified. -# hd_image: libvirt image to use -workers = { - "fedora-24": { - "os": "Fedora", - "version": "24", - "vm": False, - "pkg": "rpm", - "texi": True, - "cc": [ ("gcc", "6.3.1"), - ("clang", "3.8.1"), - ("gcc", "3.4.6", "gcc34"), - ], - }, - "fedora-26": { - "os": "Fedora", - "version": "26", - "vm": False, - "pkg": "rpm", - "cc": [ ("gcc", "7.0.1"), - ("clang", "3.9.0"), - ("gcc", "3.4.6", "gcc34"), - ], - }, - "centos-7": { - "os": "CentOS", - "version": "7", - "vm": False, - "pkg": "rpm", - "cc": [ ("gcc", "4.8.5") ], - }, - "debian-8": { - "os": "Debian", - "version": "8", - "vm": True, - "pkg": "dpkg", - "latent": True, - "cc": [ ("gcc", "4.9.2") ], - "hd_image": "/var/lib/libvirt/images/debian8.qcow2", - }, - "debian-9": { - "os": "Debian", - "version": "9", - "vm": True, - "pkg": "dpkg", - "cc": [ ("gcc", "6.3.0") ], - "latent": True, - "hd_image": "/var/lib/libvirt/images/debian9.qcow2", - }, - "freebsd-10": { - "os": "FreeBSD", - "version": "10", - "vm": True, - "pkg": "", - "latent": True, - "cc": [ ("clang", "3.4.1") ], - "hd_image": "/var/lib/libvirt/images/freebsd103.qcow2", - }, - "freebsd-11": { - "os": "FreeBSD", - "version": "11", - "vm": True, - "pkg": "", - "cc": [ ("gcc", "4.9.4"), ("clang", "3.8.0"), ], - "latent": True, - "hd_image": "/var/lib/libvirt/images/freebsd110.qcow2", - }, - "oi-hipster": { - "os": "OpenIndiana", - "version": "hipster", - "vm": True, - "pkg": "sysv", - "latent": True, - "cc": [ ("gcc", "6.3.0"), ("sunpro", "12.0"), - ("gcc", "4.4.4") - ], - "hd_image": "/var/lib/libvirt/images/buildbot-oi-hipster.qcow2", - }, -} - -# ensure "latent" is set to false, where not set. -# add in the passwords -for kw in workers: - w = workers[kw] - w["bot"] = "buildbot-" + kw - if "latent" not in w: - w["latent"] = False - w["pass"] = workers_pass[kw] - -analyses_builders = [ "clang-analyzer" ] - -# default Libvirt session -for w in (w for w in workers.values () if ("latent" in w and w["latent"]) - and ("session" not in w)): - w["session"] = 'qemu+ssh://buildbot@sagan.jakma.org/system' - -osbuilders = ["build-" + kw for kw in workers] -osfastbuilders = ["build-" + kw for kw in workers if workers[kw]["vm"] == False] -osslowbuilders = ["build-" + kw for kw in workers if workers[kw]["vm"] == True] - -rpmbuilders = ["rpm-" + kw for kw in workers if workers[kw]["pkg"] == "rpm"] - -# compilers -# not using yet -# [kw for kw in workers if len([v for (c,v) in workers[kw]["cc"] if c == "gcc"]) > 0 ] - -allbuilders = [] -allbuilders += osbuilders -allbuilders += rpmbuilders -allbuilders += analyses_builders -allbuilders += ["commit-builder"] -allbuilders += ["build-distcheck"] -allbuilders += ["build-docs" ] - -# Force merging of requests. -# c['mergeRequests'] = lambda *args, **kwargs: True - -####### BUILDSLAVES -c['slaves'] = [] - -# The 'slaves' list defines the set of recognized buildslaves. Each element is -# a BuildSlave object, specifying a unique slave name and password. The same -# slave name and password must be configured on the slave. - -for w in (w for w in workers.values() if ("latent" not in w) - or (w["latent"] == False)): - c['slaves'].append(buildslave.BuildSlave(w["bot"], w["pass"], - properties=workers2publicprops (w), - )) - -for w in (w for w in workers.values() - if ("latent" in w) - and w["latent"] - and "hd_image" in w): - c['slaves'].append(buildslave.LibVirtSlave( - w["bot"], - w["pass"], - util.Connection(w["session"]), - w["hd_image"], - properties=workers2publicprops (w), - )) - -# 'protocols' contains information about protocols which master will use for -# communicating with slaves. -# You must define at least 'port' option that slaves could connect to your master -# with this protocol. -# 'port' must match the value configured into the buildslaves (with their -# --master option) -c['protocols'] = {'pb': {'port': 9989}} - -####### CHANGESOURCES - -# the 'change_source' setting tells the buildmaster how it should find out -# about source code changes. Here we point to the buildbot clone of pyflakes. - -c['change_source'] = [] -c['change_source'].append(changes.GitPoller( - quaggagit, - workdir='gitpoller-workdir', - branches=['master','volatile/next'], - pollinterval=300)) - -####### REVISION LINKS -# associate changesouce repositories to URI templates for code view -# -c['revlink'] = util.RevlinkMatch([quaggagit + r"(.*)"], - r"http://git.savannah.gnu.org/cgit/quagga.git/commit/?id=%s") - -####### SCHEDULERS - -# Configure the Schedulers, which decide how to react to incoming changes. - -# We want a first line of 'quick' builds, which then trigger further builds. -# -# A control-flow builder, "commit-builder", used to sequence the 'real' -# sets of builders, via Triggers. - -c['schedulers'] = [] -c['schedulers'].append(schedulers.SingleBranchScheduler( - name="master-change", - change_filter=util.ChangeFilter(branch='master'), - treeStableTimer=10, - builderNames=[ "commit-builder" ])) - -c['schedulers'].append(schedulers.SingleBranchScheduler( - name="next-change", - change_filter=util.ChangeFilter( - branch='volatile/next'), - treeStableTimer=10, - builderNames=[ "commit-builder" ] )) - -# Initial build checks on faster, non-VM -c['schedulers'].append(schedulers.Triggerable( - name="trigger-build-first", - builderNames=osfastbuilders)) - -# Build using remaining builders, after firstbuilders. -c['schedulers'].append(schedulers.Triggerable( - name="trigger-build-rest", - builderNames=osslowbuilders)) - -# Analyses tools, e.g. CLang Analyzer scan-build -c['schedulers'].append(schedulers.Triggerable( - name="trigger-build-analyses", - builderNames=analyses_builders)) -# Dist check -c['schedulers'].append(schedulers.Triggerable( - name="trigger-distcheck", - builderNames=["build-distcheck"])) -# RPM check and build -c['schedulers'].append(schedulers.Triggerable( - name="trigger-rpm", - builderNames=rpmbuilders)) - -# Doc build check (non-nightly, so no upload) -c['schedulers'].append(schedulers.Triggerable( - name="trigger-build-docs", - builderNames=["build-docs"])) - -# Try and force schedulers -c['schedulers'].append(schedulers.ForceScheduler( - name="force", - builderNames=allbuilders)) - -c['schedulers'].append(schedulers.Try_Userpass( - name="try", - builderNames=osbuilders - + rpmbuilders - + ["build-distcheck", - "clang-analyzer", - "build-docs" ], - userpass=users, - port=8031)) - -## nightly docs build -c['schedulers'].append(schedulers.Nightly( - name="nightly-docs", - branch="master", - builderNames=[ "build-docs" ], - hour=3, - minute=0, - onlyIfChanged=True, - properties = { "nightly": True }, -)) - - -####### BUILDERS -c['builders'] = [] - -# The 'builders' list defines the Builders, which tell Buildbot how to perform a build: -# what steps, and which slaves can execute them. Note that any particular build will -# only take place on one slave. - -common_setup = [ - steps.Git(repourl=quaggagit, mode='incremental'), - steps.ShellCommand(command=["./update-autotools"], - description="generating autoconf", - descriptionDone="autoconf"), - steps.Configure(command="../build/configure"), - steps.ShellCommand(command=["make", "clean"], - description="cleaning", - descriptionDone="make clean"), -] - -### Default 'check' build, builder instantiated for each OS - -factory = util.BuildFactory() -# check out the source -factory.addStep(steps.Git(repourl=quaggagit, mode='incremental')) -factory.addStep(steps.ShellCommand(command=["./update-autotools"], - description="generating autoconf", - descriptionDone="autoconf")) -factory.addStep(steps.Configure()) -factory.addStep(steps.ShellCommand(command=["make", "clean"], - description="cleaning", - descriptionDone="clean")) - -#factory.addSteps(common_setup) -factory.addStep(steps.Compile(command=["make", "-j", "2", "all"])) -factory.addStep(steps.ShellCommand(command=["make", "check"], - description="checking", - descriptionDone="make check")) - -# create builder for every OS, for every buildbot -# XXX: at moment this assumes 1:1 OS<->bot -for kw in workers: - c['builders'].append(util.BuilderConfig( - name="build-" + kw, - slavenames=workers[kw]["bot"], - factory=factory)) - -### distcheck Builder, executed on any available bot -factory = util.BuildFactory() -# check out the source -factory.addStep(steps.Git(repourl=quaggagit, mode='incremental')) -factory.addStep(steps.ShellCommand(command=["./update-autotools"], - description="generating autoconf", - descriptionDone="autoconf")) -factory.addStep(steps.Configure()) -factory.addStep(steps.ShellCommand(command=["make", "clean"], - description="cleaning", - descriptionDone="make clean")) -factory.addStep(steps.ShellCommand(command=["make", "distcheck"], - description="run make distcheck", - descriptionDone="make distcheck")) -c['builders'].append( - util.BuilderConfig(name="build-distcheck", - slavenames=list(w["bot"] for w in workers.values()), - factory=factory, -)) - -### LLVM clang-analyzer build, executed on any available non-VM bot - -f = util.BuildFactory() -# check out the source -f.addStep(steps.Git(repourl=quaggagit, mode='incremental', - getDescription=True)) -f.addStep(steps.ShellCommand(command=["./update-autotools"], - description="run autotools", - descriptionDone="autoconf")) -f.addStep(steps.Configure()) -f.addStep(steps.ShellCommand(command=["make", "clean"], - description="cleaning", - descriptionDone="make clean")) - -f.addStep(steps.SetProperty(property="clang-id", - value=util.Interpolate("%(prop:commit-description)s-%(prop:buildnumber)s"))) - -f.addStep(steps.SetProperty(property="clang-output-dir", - value=util.Interpolate("../CLANG-%(prop:clang-id)s"))) -f.addStep(steps.SetProperty(property="clang-uri", - value=util.Interpolate("/clang-analyzer/%(prop:clang-id)s"))) -# relative to buildbot master working directory -f.addStep(steps.SetProperty(property="clang-upload-dir", - value=util.Interpolate("public_html/clang-analyzer/%(prop:clang-id)s"))) - -f.addStep(steps.Compile(command=["scan-build", - "-analyze-headers", - "-o", - util.Interpolate("%(prop:clang-output-dir)s"), - "make", "-j", "all"])) -f.addStep(steps.DirectoryUpload( - slavesrc=util.Interpolate("%(prop:clang-output-dir)s"), - masterdest = util.Interpolate("%(prop:clang-upload-dir)s"), - compress = 'bz2', - name = "clang report", - url = util.Interpolate("%(prop:clang-uri)s"), -)) -f.addStep(steps.RemoveDirectory( - dir=util.Interpolate("%(prop:clang-output-dir)s") -)) - - -c['builders'].append( - util.BuilderConfig(name="clang-analyzer", - slavenames=list(w["bot"] for w in workers.values() if not w["vm"]), - factory=f)) - - -### RPM: check and build -f = util.BuildFactory () - -# check out the source -f.addStep(steps.Git(repourl=quaggagit, mode='full')) -f.addStep(steps.ShellCommand(command=["./update-autotools"], - description="run autotools", - descriptionDone="autotools")) -f.addStep(steps.Configure()) -f.addStep(steps.ShellCommand(command=["make", "dist"], - description="run make dist", - descriptionDone="make dist")) -# not imported somehow -#f.addStep(steps.RpmLint(fileloc="redhat/quagga.spec")) -f.addStep(steps.ShellCommand(command=["rpmlint", "-i", "redhat/quagga.spec"], - description="run rpmlint", - descriptionDone="rpmlint")) -f.addStep(steps.RpmBuild(specfile="redhat/quagga.spec")) -# rpmdir=util.Interpolate("%(prop:builddir)s/rpm"))) - -# XXX: assuming 1:1 OS:buildbot mapping -for kw in (kw for kw in workers if workers[kw]["pkg"] == "rpm"): - c['builders'].append( - util.BuilderConfig(name="rpm-" + kw, - slavenames="buildbot-" + kw, - factory=f - ) - ) - -### Build documentation - -def build_is_nightly (step): - n = step.getProperty("nightly") - if n == True or n == "True" or n == "true": - return True - return False - -f = util.BuildFactory () -f.addStep(steps.Git(repourl=quaggagit, mode='full')) -f.addStep(steps.ShellCommand(command=["./update-autotools"], - description="run autotools", - descriptionDone="autotools")) -f.addStep(steps.Configure(command=["../build/configure"], - workdir="docs")) -f.addStep(steps.ShellCommand(command=["make", "V=99", "quagga.html"], - description="making split HTML doc", - descriptionDone="docs: split HTML", - workdir="docs/doc", - haltOnFailure=True, -)) -#f.addStep(steps.FileUpload( -# slavesrc="build/doc/fig-normal-processing.png", -# masterdest = "public_html/docs/nightly/quagga/", -# name = "Upload Fig 1", -# doStepIf=build_is_nightly, -#)) -#f.addStep(steps.FileUpload( -# slavesrc="build/doc/fig-rs-processing.png", -# masterdest = "public_html/docs/nightly/quagga/", -# name = "Upload Fig 2", -# doStepIf=build_is_nightly, -#)) -f.addStep(steps.MultipleFileUpload( - slavesrcs=[ "doc/fig-rs-processing.png", - "doc/fig-normal-processing.png" ], - masterdest = "public_html/docs/nightly/quagga/", - name = "Upload Figures", - doStepIf=build_is_nightly, -)) -f.addStep(steps.DirectoryUpload( - slavesrc="quagga.html", - masterdest = "public_html/docs/nightly/quagga", - compress = 'bz2', - name = "Upload split HTML", - url = "/docs/nightly/quagga/index.html", - workdir="docs/doc", - doStepIf=build_is_nightly, -)) -f.addStep(steps.RemoveDirectory( - dir="docs/doc/quagga.html", -)) -f.addStep(steps.ShellCommand(command=["make", "V=99", - "MAKEINFOFLAGS=--no-split", - "quagga.html"], - description="making one-page HTML doc", - descriptionDone="docs: one-page HTML", - workdir="docs/doc", - haltOnFailure=True -)) -f.addStep(steps.FileUpload( - slavesrc="quagga.html", - masterdest = "public_html/docs/nightly/quagga/quagga.html", - name = "Upload single HTML", - url = "/docs/nightly/quagga/quagga.html", - workdir="docs/doc", - doStepIf=build_is_nightly, -)) -f.addStep(steps.ShellCommand(command=["make", "V=99", "quagga.pdf"], - description="making PDF docs", - descriptionDone="docs: PDF", - workdir="docs/doc" -)) -f.addStep(steps.FileUpload( - slavesrc="quagga.pdf", - masterdest = "public_html/docs/nightly/quagga/quagga.pdf", - name = "Upload PDF", - url = "/docs/nightly/quagga/quagga.pdf", - workdir="docs/doc", - doStepIf=build_is_nightly, -)) - -c['builders'].append( - util.BuilderConfig(name="build-docs", - slavenames=[w["bot"] for w in workers.values() - if "texi" in w and w["texi"] == True ], - factory=f -)) - -### Co-ordination builds used to sequence parallel builds via Triggerable - -# to understand this you have to read this list and the Triggered schedulers -# to see what sets of builds are being sequenced. Bit clunky, but Buildbot -# doesn't have a way to just specify a pipeline of groups of builders more -# cleanly. - -f = util.BuildFactory() -f.addStep(steps.Trigger ( - schedulerNames = [ "trigger-build-first" ], - waitForFinish=True, - updateSourceStamp=True -)) -f.addStep(steps.Trigger ( - schedulerNames = [ "trigger-build-rest" ], - waitForFinish=True, - updateSourceStamp=True -)) -f.addStep(steps.Trigger ( - schedulerNames = [ "trigger-build-analyses", "trigger-distcheck", - "trigger-build-docs" ], - waitForFinish=True, - updateSourceStamp=True -)) -f.addStep(steps.Trigger ( - schedulerNames = [ "trigger-rpm" ], - waitForFinish=True, - updateSourceStamp=True -)) - -c['builders'].append( - util.BuilderConfig(name="commit-builder", - slavenames=[w["bot"] for w in workers.values() if not w["vm"]], - factory=f) -) - -####### STATUS TARGETS - -# 'status' is a list of Status Targets. The results of each build will be -# pushed to these targets. buildbot/status/*.py has a variety to choose from, -# including web pages, email senders, and IRC bots. - -c['status'] = [] - -from buildbot.status import html -from buildbot.status.web import authz, auth - -authz_cfg=authz.Authz( - # change any of these to True to enable; see the manual for more - # options - #auth=auth.BasicAuth([("pyflakes","pyflakes")]), - auth=util.BasicAuth(users), - gracefulShutdown = False, - forceBuild = 'auth', # use this to test your slave once it is set up - forceAllBuilds = 'auth', # ..or this - pingBuilder = 'auth', - stopBuild = 'auth', - stopAllBuilds = 'auth', - cancelPendingBuild = 'auth', - cancelAllPendingBuilds = 'auth', - pauseSlave = 'auth', -) -c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg)) - -c['status'].append(status.MailNotifier( - fromaddr="buildbot@quagga.net", - extraRecipients=["paul@jakma.org"], - sendToInterestedUsers=False, -)) - -c['status'].append (status.IRC( - "irc.freenode.net", "bb-quagga", - useColors=True, - channels=[{"channel": "#quagga"}], - notify_events={ - 'exception': 1, - 'successToFailure': 1, - 'failureToSuccess': 1, - }, -)) - -####### PROJECT IDENTITY - -# the 'title' string will appear at the top of this buildbot -# installation's html.WebStatus home page (linked to the -# 'titleURL') and is embedded in the title of the waterfall HTML page. - -c['title'] = "Quagga" -c['titleURL'] = "https://www.quagga.net/" - -# the 'buildbotURL' string should point to the location where the buildbot's -# internal web server (usually the html.WebStatus page) is visible. This -# typically uses the port number set in the Waterfall 'status' entry, but -# with an externally-visible host name which the buildbot cannot figure out -# without some help. - -c['buildbotURL'] = "http://buildbot.quagga.net/" - -####### DB URL - -c['db'] = { - # This specifies what database buildbot uses to store its state. You can leave - # this at its default for all but the largest installations. - 'db_url' : "sqlite:///state.sqlite", -} - -#### debug -c['debugPassword'] = debugPassword diff --git a/infra/buildbot/master/pass.cfg b/infra/buildbot/master/pass.cfg deleted file mode 100644 index 34a9340..0000000 --- a/infra/buildbot/master/pass.cfg +++ /dev/null @@ -1,21 +0,0 @@ -# -*- python -*- -# ex: set syntax=python: - -# example pass.cfg - -# privileged users for webui and try building -#users = [ -# ('foo', 'password123'), -#] - -workers_pass = { - "fedora-24": "aaaaaaa", - "centos-7": "bbbbbbb", - "debian-8": "ccccccc", - "debian-9": "ddddddd", - "freebsd-10": "eeeeeee", - "freebsd-11": "fffffff", -} - -#### debug -#debugPassword = "abcdefghijklmnopqrstuvwxyz" diff --git a/infra/buildbot/worker/buildbot-slave.service b/infra/buildbot/worker/buildbot-slave.service deleted file mode 100644 index dcb136f..0000000 --- a/infra/buildbot/worker/buildbot-slave.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Buildbot slave Daemon - -[Service] -WorkingDirectory=/home/buildbot -User=buildbot -Group=buildbot -ExecStart=/usr/bin/buildslave start --nodaemon -ExecStop=/usr/bin/buildslave stop -ExecReload=/usr/bin/buildslave reconfig - -[Install] -WantedBy=multi-user.target diff --git a/infra/buildbot/worker/buildbot-slave.xml b/infra/buildbot/worker/buildbot-slave.xml deleted file mode 100644 index d4177a7..0000000 --- a/infra/buildbot/worker/buildbot-slave.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/infra/patchwork/pass.py b/infra/patchwork/pass.py deleted file mode 100644 index 6514232..0000000 --- a/infra/patchwork/pass.py +++ /dev/null @@ -1,4 +0,0 @@ -# example pass file -SECRET_KEY = "aaaaaaaaaaaaaaaaaa" -EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD', '') -DATABASES['default']['PASSWORD'] = os.environ.get('DATABASE_PASSWORD', 'bbbbbbbbbbbbbbbbbbbbb'); diff --git a/infra/patchwork/production.py b/infra/patchwork/production.py deleted file mode 100644 index 1683c0c..0000000 --- a/infra/patchwork/production.py +++ /dev/null @@ -1,89 +0,0 @@ -""" -Sample production-ready settings for patchwork project. - -Most of these are commented out as they will be installation dependent. - -Design based on: - http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/ -""" - -from __future__ import absolute_import - -import os - -import django - -from .base import * # noqa - -DEBUG = True -# -# Core settings -# https://docs.djangoproject.com/en/1.8/ref/settings/#core-settings -# - -# Security -# -# You'll need to replace this to a random string. The following python code can -# be used to generate a secret key: -# -# import string, random -# chars = string.letters + string.digits + string.punctuation -# print repr("".join([random.choice(chars) for i in range(0,50)])) - -# Email -# -# Replace this with your own details - -EMAIL_HOST = os.getenv('EMAIL_HOST', 'localhost') -EMAIL_PORT = os.getenv('EMAIL_PORT', 25) -EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER', '') -# password goes in pass.py -EMAIL_USE_TLS = True - -DEFAULT_FROM_EMAIL = 'Patchwork ' -SERVER_EMAIL = DEFAULT_FROM_EMAIL -NOTIFICATION_FROM_EMAIL = DEFAULT_FROM_EMAIL - -ADMINS = ( - ('Paul Jakma', 'paul@quagga.net'), -) - -# Database -# -# If you're using a postgres database, connecting over a local unix-domain -# socket, then the following setting should work for you. Otherwise, -# see https://docs.djangoproject.com/en/1.8/ref/settings/#databases - -# password goes in pass.py -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': os.environ.get('DATABASE_NAME', 'patchwork'), - 'USER': os.environ.get('DATABASE_USER', 'patchwork'), - 'HOST': '127.0.0.1', - }, -} - - -# -# Static files settings -# https://docs.djangoproject.com/en/1.8/ref/settings/#static-files -# https://docs.djangoproject.com/en/1.8/ref/contrib/staticfiles/#manifeststaticfilesstorage -# - -STATIC_ROOT = os.environ.get('STATIC_ROOT', '/home/patchwork/htdocs/static') - - -if django.VERSION >= (1, 7): - STATICFILES_STORAGE = \ - 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' - -ENABLE_XMLRPC = True - -LANGUAGE_CODE='en-gb' -TIME_ZONE='GMT' -ALLOWED_HOSTS=['patchwork.quagga.net','testpw.quagga.net', 'http', 'http.quagga.net', '*.quagga.net'] - -with open("patchwork/settings/pass.py") as f: - code = compile(f.read(), "patchwork/settings/pass.py", 'exec') - exec(code) diff --git a/infra/patchwork/systemd/patchwork-delivery.socket b/infra/patchwork/systemd/patchwork-delivery.socket deleted file mode 100644 index bfa6752..0000000 --- a/infra/patchwork/systemd/patchwork-delivery.socket +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Patchwork unix pipe to accept list mail delivery on - -[Socket] -#ListenStream=/tmp/patchwork.sock -ListenStream=127.0.0.1:8001 -SocketUser=patchwork -SocketGroup=patchwork -Accept=yes - -#ListenFIFO=/tmp/patchwork-fifo.sock - - -[Install] -WantedBy=sockets.target diff --git a/infra/patchwork/systemd/patchwork-delivery@.service b/infra/patchwork/systemd/patchwork-delivery@.service deleted file mode 100644 index d152b2d..0000000 --- a/infra/patchwork/systemd/patchwork-delivery@.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Patchwork list mail socket processing script - -[Service] -EnvironmentFile=/home/patchwork/patchwork.env -ExecStart=-/home/patchwork/patchwork/patchwork/bin/parsemail.sh -StandardInput=socket -StandardOutput=inherit -StandardError=journal -User=patchwork -Group=patchwork - -[Install] -WantedBy=multi-user.target -Also=patchwork-delivery.socket diff --git a/infra/patchwork/systemd/patchwork.service b/infra/patchwork/systemd/patchwork.service deleted file mode 100644 index 90ec4bb..0000000 --- a/infra/patchwork/systemd/patchwork.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Patchwork Daemon - -[Service] -WorkingDirectory=/home/patchwork/patchwork -User=patchwork -Group=patchwork -EnvironmentFile=/home/patchwork/patchwork.env -ExecStart=/usr/bin/python3 manage.py runserver 0.0.0.0:8000 - -[Install] -WantedBy=multi-user.target diff --git a/init/.gitignore b/init/.gitignore deleted file mode 100644 index 30b4bc9..0000000 --- a/init/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile -Makefile.in -.nfs* -*~ -*.loT - diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..0b0fdcb --- /dev/null +++ b/install-sh @@ -0,0 +1,501 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2013-12-25.23; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/isisd/.gitignore b/isisd/.gitignore deleted file mode 100644 index 5e8028c..0000000 --- a/isisd/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -Makefile -Makefile.in -*.o -isisd -.deps -isisd.conf -.nfs* -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT -*.a diff --git a/isisd/Makefile.in b/isisd/Makefile.in new file mode 100644 index 0000000..04c3d2d --- /dev/null +++ b/isisd/Makefile.in @@ -0,0 +1,946 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = isisd$(EXEEXT) +subdir = isisd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libisis_a_AR = $(AR) $(ARFLAGS) +libisis_a_LIBADD = +am_libisis_a_OBJECTS = isis_adjacency.$(OBJEXT) isis_lsp.$(OBJEXT) \ + dict.$(OBJEXT) isis_circuit.$(OBJEXT) isis_pdu.$(OBJEXT) \ + isis_tlv.$(OBJEXT) isisd.$(OBJEXT) isis_misc.$(OBJEXT) \ + isis_zebra.$(OBJEXT) isis_dr.$(OBJEXT) isis_flags.$(OBJEXT) \ + isis_dynhn.$(OBJEXT) iso_checksum.$(OBJEXT) isis_csm.$(OBJEXT) \ + isis_events.$(OBJEXT) isis_spf.$(OBJEXT) isis_redist.$(OBJEXT) \ + isis_route.$(OBJEXT) isis_routemap.$(OBJEXT) isis_te.$(OBJEXT) \ + isis_vty.$(OBJEXT) +libisis_a_OBJECTS = $(am_libisis_a_OBJECTS) +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)" +PROGRAMS = $(sbin_PROGRAMS) +am__objects_1 = isis_adjacency.$(OBJEXT) isis_lsp.$(OBJEXT) \ + dict.$(OBJEXT) isis_circuit.$(OBJEXT) isis_pdu.$(OBJEXT) \ + isis_tlv.$(OBJEXT) isisd.$(OBJEXT) isis_misc.$(OBJEXT) \ + isis_zebra.$(OBJEXT) isis_dr.$(OBJEXT) isis_flags.$(OBJEXT) \ + isis_dynhn.$(OBJEXT) iso_checksum.$(OBJEXT) isis_csm.$(OBJEXT) \ + isis_events.$(OBJEXT) isis_spf.$(OBJEXT) isis_redist.$(OBJEXT) \ + isis_route.$(OBJEXT) isis_routemap.$(OBJEXT) isis_te.$(OBJEXT) \ + isis_vty.$(OBJEXT) +am_isisd_OBJECTS = isis_main.$(OBJEXT) $(am__objects_1) \ + isis_bpf.$(OBJEXT) isis_dlpi.$(OBJEXT) isis_pfpacket.$(OBJEXT) +isisd_OBJECTS = $(am_isisd_OBJECTS) +isisd_DEPENDENCIES = ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libisis_a_SOURCES) $(isisd_SOURCES) +DIST_SOURCES = $(libisis_a_SOURCES) $(isisd_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp AUTHORS \ + README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib \ + @ISIS_TOPOLOGY_INCLUDES@ + +INSTALL_SDATA = @INSTALL@ -m 600 +AM_CFLAGS = $(WERROR) +noinst_LIBRARIES = libisis.a +SUBDIRS = topology +libisis_a_SOURCES = \ + isis_adjacency.c isis_lsp.c dict.c isis_circuit.c isis_pdu.c \ + isis_tlv.c isisd.c isis_misc.c isis_zebra.c isis_dr.c \ + isis_flags.c isis_dynhn.c iso_checksum.c isis_csm.c isis_events.c \ + isis_spf.c isis_redist.c isis_route.c isis_routemap.c isis_te.c \ + isis_vty.c + +noinst_HEADERS = \ + isisd.h isis_pdu.h isis_tlv.h isis_adjacency.h isis_constants.h \ + isis_lsp.h dict.h isis_circuit.h isis_misc.h isis_network.h \ + isis_zebra.h isis_dr.h isis_flags.h isis_dynhn.h isis_common.h \ + iso_checksum.h isis_csm.h isis_events.h isis_spf.h isis_redist.h \ + isis_route.h isis_routemap.h isis_te.h \ + include-netbsd/clnp.h include-netbsd/esis.h include-netbsd/iso.h + +isisd_SOURCES = \ + isis_main.c $(libisis_a_SOURCES) \ + isis_bpf.c isis_dlpi.c isis_pfpacket.c + +isisd_LDADD = @ISIS_TOPOLOGY_LIB@ ../lib/libzebra.la @LIBCAP@ +examplesdir = $(exampledir) +dist_examples_DATA = isisd.conf.sample +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu isisd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu isisd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libisis.a: $(libisis_a_OBJECTS) $(libisis_a_DEPENDENCIES) $(EXTRA_libisis_a_DEPENDENCIES) + $(AM_V_at)-rm -f libisis.a + $(AM_V_AR)$(libisis_a_AR) libisis.a $(libisis_a_OBJECTS) $(libisis_a_LIBADD) + $(AM_V_at)$(RANLIB) libisis.a +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +isisd$(EXEEXT): $(isisd_OBJECTS) $(isisd_DEPENDENCIES) $(EXTRA_isisd_DEPENDENCIES) + @rm -f isisd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(isisd_OBJECTS) $(isisd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dict.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_adjacency.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_bpf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_circuit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_csm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_dlpi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_dr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_dynhn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_events.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_flags.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_lsp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_misc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_pdu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_pfpacket.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_redist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_route.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_routemap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_spf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_te.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_tlv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_vty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_zebra.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isisd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_checksum.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +# 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. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + 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; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-libtool clean-noinstLIBRARIES \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool \ + clean-noinstLIBRARIES clean-sbinPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dist_examplesDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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/isisd/include-netbsd/.gitignore b/isisd/include-netbsd/.gitignore deleted file mode 100644 index dd5bf7c..0000000 --- a/isisd/include-netbsd/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.arch-inventory -.arch-ids - -*~ -*.loT - diff --git a/isisd/isis_main.c b/isisd/isis_main.c index bbb1fb2..f0b12f7 100644 --- a/isisd/isis_main.c +++ b/isisd/isis_main.c @@ -236,7 +236,6 @@ main (int argc, char **argv, char **envp) { char *p; int opt, vty_port = ISISD_VTY_PORT; - struct thread thread; char *config_file = NULL; char *vty_addr = NULL; int dryrun = 0; @@ -375,8 +374,7 @@ main (int argc, char **argv, char **envp) zlog_notice ("Quagga-ISISd %s starting: vty@%d", QUAGGA_VERSION, vty_port); /* Start finite state machine. */ - while (thread_fetch (master, &thread)) - thread_call (&thread); + thread_main (master); /* Not reached. */ exit (0); diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c index 6b2456f..82d743b 100644 --- a/isisd/isis_spf.c +++ b/isisd/isis_spf.c @@ -1033,7 +1033,7 @@ isis_spf_preload_tent (struct isis_spftree *spftree, int level, break; case ISIS_SYSTYPE_UNKNOWN: default: - zlog_warn ("isis_spf_preload_tent unknow adj type"); + zlog_warn ("isis_spf_preload_tent unknown adj type"); } } list_delete (adj_list); diff --git a/isisd/topology/.gitignore b/isisd/topology/.gitignore deleted file mode 100644 index dd75c27..0000000 --- a/isisd/topology/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -Makefile -Makefile.in -*.o -tags -TAGS -.deps -.nfs* -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/isisd/topology/Makefile.in b/isisd/topology/Makefile.in new file mode 100644 index 0000000..e92650d --- /dev/null +++ b/isisd/topology/Makefile.in @@ -0,0 +1,657 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = isisd/topology +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libtopology_a_AR = $(AR) $(ARFLAGS) +am_libtopology_a_OBJECTS = spgrid.$(OBJEXT) random.$(OBJEXT) +libtopology_a_OBJECTS = $(am_libtopology_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libtopology_a_SOURCES) +DIST_SOURCES = $(libtopology_a_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +AM_CFLAGS = $(PICFLAGS) +AM_LDFLAGS = $(PILDFLAGS) +noinst_LIBRARIES = libtopology.a +libtopology_a_SOURCES = \ + spgrid.c random.c + +libtopology_a_DEPENDENCIES = @LIB_REGEX@ +libtopology_a_LIBADD = @LIB_REGEX@ ../../lib/libzebra.la +noinst_HEADERS = \ + spgrid.h + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu isisd/topology/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu isisd/topology/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libtopology.a: $(libtopology_a_OBJECTS) $(libtopology_a_DEPENDENCIES) $(EXTRA_libtopology_a_DEPENDENCIES) + $(AM_V_at)-rm -f libtopology.a + $(AM_V_AR)$(libtopology_a_AR) libtopology.a $(libtopology_a_OBJECTS) $(libtopology_a_LIBADD) + $(AM_V_at)$(RANLIB) libtopology.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spgrid.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# 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/isisd/topology/spacyc.c b/isisd/topology/spacyc.c deleted file mode 100644 index 91a4799..0000000 --- a/isisd/topology/spacyc.c +++ /dev/null @@ -1,484 +0,0 @@ -#include -#include -#include -#include -#include - -#include "random.c" - -#define DASH '-' -#define VERY_FAR 100000000 - - -/* generator of acyclic random networks for the shortest paths problem; - extended DIMACS format for output */ - -main ( argc, argv ) - -int argc; -char* argv[]; - -{ - -char args[30]; - -long n, - n0, - source, - i, - i0, - j, - dij; - -long m, - m0, - mc, - k; - -long *p, - p_t, - l, - lx; - -long seed, - seed1, - seed2; - -int ext=0; - -FILE *fout; - -/* variables for lengths generating */ -/* initialized by default values */ -int l_f = 0, ll_f = 0, lm_f = 0, ln_f = 0, ls_f = 0; -long ll = 10000, /* upper bound of the interval */ - lm = 0; /* lower bound of the interval */ -double ln = 0, /* l += ln * |i-j| */ - ls = 0; /* l += ls * |i-j|^2 */ - -/* variables for connecting path(s) */ -int c_f = 0, cl_f = 0, ch_f = 0, c_rand = 1; -long cl = 1; /* length of path arc */ -long ch; /* number of arcs in the path - n - by default */ - -/* variables for artifical source */ -int s_f = 0, sl_f = 0, sm_f = 0; -long sl = VERY_FAR, /* upper bound of artifical arc */ - sm, /* lower bound of artifical arc */ - s; - -/* variables for potentials */ -int p_f = 0, pl_f = 0, pm_f = 0, pn_f = 0, ps_f = 0, - pa_f = 0, pap_f = 0, pac_f = 0; -long pl, /* upper bound of the interval */ - pm; /* lower bound of the interval */ -double pn = 0, /* l += ln * |i-j| */ - ps = 0, /* l += ls * |i-j|^2 */ - pap = 0, /* part of nodes with alternative dustribution */ - pac = -1; /* multiplier for alternative distribution */ - -int np; /* number of parameter parsing now */ - -#define PRINT_ARC( i, j, length )\ -{\ -l = length;\ -if ( p_f ) l += ( p[i] - p[j] );\ -printf ("a %8ld %8ld %12ld\n", i, j, l );\ -} - - /* parsing parameters */ - -if ( argc < 2 ) goto usage; - -np = 0; - -strcpy ( args, argv[1] ); - - if ( ( args[0] == DASH ) && ( args[1] == 'h') - ) - goto help; - -if ( argc < 4 ) goto usage; - -/* first parameter - number of nodes */ -np = 1; -if ( ( n = atoi ( argv[1] ) ) < 2 ) goto usage; - -/* second parameter - number of arcs */ -np = 2; -if ( ( m = atoi ( argv[2] ) ) < n ) goto usage; - -/* third parameter - seed */ -np=3; -if ( ( seed = atoi ( argv[3] ) ) <= 0 ) goto usage; - -/* other parameters */ - -for ( np = 4; np < argc; np ++ ) - { - strcpy ( args, argv[np] ); - if ( args[0] != DASH ) goto usage; - - switch ( args[1] ) - { - - case 'l' : /* an interval for arc length */ - l_f = 1; - switch ( args[2] ) - { - case 'l': /* length of the interval */ - ll_f = 1; - ll = (long) atof ( &args[3] ); - break; - case 'm': /* minimal bound */ - lm_f = 1; - lm = (long ) atof ( &args[3] ); - break; - case 'n': /* additional length: l*|i-j| */ - ln_f = 1; - ln = atof ( &args[3] ); - break; - case 's': /* additional length: l*|i-j|^2 */ - ls_f = 1; - ls = atof ( &args[3] ); - break; - default: /* unknown switch value */ - goto usage; - } - break; - - case 'c' : /* connecting path(s) */ - c_f = 1; - switch ( args[2] ) - { - case 'l': /* length of path arc */ - c_rand = 0; /* fixed arc length */ - cl_f = 1; - cl = (long) atof ( &args[3] ); - break; - case 'h': /* number of arcs in connecting path */ - ch_f = 1; - ch = (long) atof ( &args[3] ); - if ( ch < 1 || ch > n ) goto usage; - break; - default: /* unknown switch value */ - goto usage; - } - break; - - case 's' : /* additional source */ - s_f = 1; - if ( strlen ( args ) > 2 ) - { - switch ( args[2] ) - { - case 'l': /* upper bound of art. arc */ - sl_f = 1; - sl = (long) atof ( &args[3] ); - break; - case 'm': /* lower bound of art. arc */ - sm_f = 1; - sm = (long) atof ( &args[3] ); - break; - default: /* unknown switch value */ - goto usage; - } - } - break; - - case 'p' : /* potentials */ - p_f = 1; - if ( strlen ( args ) > 2 ) - { - switch ( args[2] ) - { - case 'l': /* length of the interval */ - pl_f = 1; - pl = (long) atof ( &args[3] ); - break; - case 'm': /* minimal bound */ - pm_f = 1; - pm = (long ) atof ( &args[3] ); - break; - case 'n': /* additional length: l*|i-j| */ - pn_f = 1; - pn = atof ( &args[3] ); - break; - case 's': /* additional length: l*|i-j|^2 */ - ps_f = 1; - ps = atof ( &args[3] ); - break; - case 'a': /* bipolar distribution */ - pa_f = 1; - switch ( args[3] ) - { - case 'p': /* % of alternative potentials */ - pap_f = 1; - pap = atof ( &args[4] ); - if ( pap < 0 ) pap = 0; - if ( pap > 100 ) pap = 100; - pap /= 100; - break; - case 'c': /* multiplier */ - pac_f = 1; - pac = atof ( &args[4] ); - break; - default: /* unknown switch value */ - goto usage; - } - break; - default: /* unknown switch value */ - goto usage; - } - } - break; - - default : /* unknoun case */ - goto usage; - } - } - -/* ----- ajusting parameters ----- */ - -n0 = n; m0 = m; - -/* length parameters */ -if ( ll < lm ) { lx = ll; ll = lm; lm = lx; } - -/* potential parameters */ -if ( p_f ) - { - if ( ! pl_f ) pl = ll; - if ( ! pm_f ) pm = lm; - if ( pl < pm ) { lx = pl; pl = pm; pm = lx; } - } - -/* path(s) parameters */ -if ( ! ch_f ) ch = n - 1; -mc = n - 1; - - /* artifical source parameters */ -if ( s_f ) - { m0 += n; n0 ++ ; - if ( ! sm_f ) sm = sl; - if ( sl < sm ) { lx = sl; sl = sm; sm = lx; } - } - -/*----- printing title -----*/ - -printf ("c acyclic network for shortest paths problem\n"); -printf ("c extended DIMACS format\nc\n" ); - - -/* name of the problem */ -printf ("t ac_%ld_%ld_%ld_", n, m, seed ); -if ( l_f ) - printf ("%c", 'l'); -if ( c_f ) - printf ("%c", 'c'); -if ( s_f ) - printf ("%c", 's'); -if ( p_f ) - printf ("%c", 'p'); -printf ("\nc\n"); - -/* printing additional information */ -if ( l_f ) - printf ("c length -> min: %ld max: %ld k1: %.2f k2: %.2f\n", - lm, ll, ln, ls ); -if ( c_f ) - printf ("c path(s) -> number of arcs: %ld arc length: %ld\n", - ch, cl ); -if ( s_f ) - printf ("c length of arcs from artifical source -> min: %ld max: %ld\n", - sm, sl ); -if ( p_f ) - { - printf ("c potentials -> min: %ld max: %ld k1: %.2f k2: %.2f\n", - pm, pl, pn, ps ); - if ( pa_f ) - printf ("c potentials -> part of alternative distribution: %.2f k: %.2f\n", - pap, pac ); - } -printf ("c\n" ); - -printf ("p sp %8ld %8ld\nc\n", n0, m0 ); - -source = ( s_f ) ? n0 : 1; -printf ("n %8ld\nc\n", source ); - - -if ( p_f ) /* generating potentials */ - { - seed1 = 2*seed + 1; - p = (long*) calloc ( n+2, sizeof (long) ); - init_rand ( seed1); - pl = pl - pm + 1; - - for ( i = 0; i <= n; i ++ ) - { - p_t = pm + nrand ( pl ); - if ( pn_f ) p_t += (long) ( i * pn ); - if ( ps_f ) p_t += (long) ( i * ( i * ps )); - if ( pap_f ) - if ( rand01() < pap ) - p_t = (long) ( p_t * pac ); - p[i] = p_t; - } - p[n+1] = 0; - } - - -if ( s_f ) /* additional arcs from artifical source */ - { - seed2 = 3*seed + 1; - init_rand ( seed2 ); - sl = sl - sm + 1; - - for ( i = n; i > 1; i -- ) - { - s = sm + nrand ( sl ); - PRINT_ARC ( n0, i, s ) - } - - PRINT_ARC ( n0, 1, 0 ) - } - -/* initialize random number generator */ -init_rand ( seed ); -ll = ll - lm + 1; - -/* generating connecting path(s) */ -for ( i = 1; i < n; i ++ ) - { - if ( ( (i-1) % ch ) != 0 ) - i0 = i; - else - i0 = 1; - - if (c_rand) - cl = lm + nrand(ll); - PRINT_ARC ( i0, i+1, cl ) - } - -/* generating random arcs */ - - -for ( k = 1; k <= m - mc; k ++ ) - { - i = 1 + nrand ( n ); - - do - j = 1 + nrand ( n ); - while ( j == i ); - - if ( i > j ) - { i0 = i; i = j; j = i0; } - - dij = j - i; - l = lm + nrand ( ll ); - if ( ln_f ) l += (long) ( dij * ln ); - if ( ls_f ) l += (long) ( dij * ( dij * ls ) ); - PRINT_ARC ( i, j, l ); - } - -/* all is done */ -exit (ext); - -/* ----- wrong usage ----- */ - - usage: -fprintf ( stderr, -"\nusage: %s n m seed [ -ll#i -lm#i -cl#i -p -pl#i -pm#i ... ]\n\ -help: %s -h\n\n", argv[0], argv[0] ); - -if ( np > 0 ) - fprintf ( stderr, "error in parameter # %d\n\n", np ); -exit (4); - -/* ---- help ---- */ - - help: - -if ( args[2] == 'h') goto hhelp; - -fprintf ( stderr, -"\n'%s' - acyclic network generator for shortest paths problem.\n\ -Generates problems in extended DIMACS format.\n\ -\n\ - %s n m seed [ -ll#i -lm#i -cl#i -p -pl#i -pm#i ... ]\n\ - %s -hh\n\ -\n\ - #i - integer number #f - real number\n\ -\n\ --ll#i - #i is the upper bound on arc lengths (default 10000)\n\ --lm#i - #i is the lower bound on arc lengths (default 0)\n\ --cl#i - #i is length of arcs in connecting path(s) (default random)\n\ --p - generate potentials \n\ --pl#i - #i is the upper bound on potentials (default ll)\n\ --pm#i - #i is the lower bound on potentials (default lm)\n\ -\n\ --hh - extended help \n\n", -argv[0], argv[0], argv[0] ); - -exit (0); - -/* --------- sophisticated help ------------ */ - hhelp: - -if ( argc < 3 ) - fout = stderr; -else - fout = fopen ( argv[2], "w" ); - -if ( fout == NULL ) -{ fprintf ( stderr, "\nCan't open file '%s' for writing help\n\n", argv[2] ); - exit ( 2 ); -} - -fprintf (fout, -"\n'%s' - acyclic network generator for shortest paths problem.\n\ -Generates problems in extended DIMACS format.\n\ -\n\ - %s n m seed [ -ll#i -lm#i -ln#f -ls#f\n\ - -p -pl#i -pm#i -pn#f -ps#f -pap#i -pac#f\n\ - -cl#i -ch#i\n\ - -s -sl#i -sm#i\n\ - ]\n\ - %s -hh file_name\n\ -\n\ - #i - integer number #f - real number\n\ -\n\ - Arc length parameters:\n\ --ll#i - #i is the upper bound on arc lengths (default 10000)\n\ --lm#i - #i is the lower bound on arc lengths (default 0)\n\ --ln#f - multipliy l(i, j) by #f * |i-j| (default 0)\n\ --ls#f - multipliy l(i, j) by #f * |i-j|^2 (default 0)\n\ -\n\ - Potential parameters:\n\ --p - generate potentials \n\ --pl#i - #i is the upper bound on potentials (default ll)\n\ --pm#i - #i is the lower bound on potentials (default lm)\n\ --pn#f - multiply p(i) by #f * i (default 0)\n\ --ps#f - multiply p(i) by #f * i^2 (default 0)\n\ --pap#i - percentage of alternative potential nodes (default 0)\n\ --pac#f - if i is alternative, multiply p(i) by #f (default -1)\n\ -\n\ - Connecting path(s) parameters:\n\ --cl#i - #i is length of arcs in connecting path(s) (default random)\n\ --ch#i - #i is length of connecting path(s) (default n-1)\n\ -\n\ - Artificial source parameters:\n\ --s - generate artificial source with default connecting arc lengths\n\ --sl#i - #i is the upper bound on art. arc lengths (default 100000000)\n\ --sm#i - #i is the lower bound on art. arc lengths (default sl)\n\ -\n\ --hh file_name - save this help in the file 'file_name'\n\n", -argv[0], argv[0], argv[0] ); - -exit (0); -} - - - diff --git a/isisd/topology/sprand.c b/isisd/topology/sprand.c deleted file mode 100644 index 1c1eb19..0000000 --- a/isisd/topology/sprand.c +++ /dev/null @@ -1,501 +0,0 @@ -#include - -#include -#include -#include -#include - -#include "random.c" - -#define DASH '-' -#define VERY_FAR 100000000 - -/* generator of random networks for the shortest paths problem; - extended DIMACS format for output */ - -main ( argc, argv ) - -int argc; -char* argv[]; - -{ - -char args[30]; - -long n, - n0, - source, - i, - i0, - j, - dij; - -long m, - m0, - mc, - k; - -long *p, - p_t, - l, - lx; - -long seed, - seed1, - seed2; - -int ext=0; - -FILE *fout; - -/* variables for lengths generating */ -/* initialized by default values */ -int l_f = 0, ll_f = 0, lm_f = 0, ln_f = 0, ls_f = 0; -long ll = 10000, /* length of the interval */ - lm = 0; /* minimal bound of the interval */ -double ln = 0, /* l += ln * |i-j| */ - ls = 0; /* l += ls * |i-j|^2 */ - -/* variables for connecting cycle(s) */ -int c_f = 0, cl_f = 0, ch_f = 0, c_random = 1; -long cl = 1; /* length of cycle arc */ -long ch; /* number of arcs in the cycle - n - by default */ - -/* variables for artifical source */ -int s_f = 0, sl_f = 0, sm_f = 0; -long sl = VERY_FAR, /* upper bound of artifical arc */ - sm, /* lower bound of artifical arc */ - s; - -/* variables for potentials */ -int p_f = 0, pl_f = 0, pm_f = 0, pn_f = 0, ps_f = 0, - pa_f = 0, pap_f = 0, pac_f = 0; -long pl, /* length of the interval */ - pm; /* minimal bound of the interval */ -double pn = 0, /* l += ln * |i-j| */ - ps = 0, /* l += ls * |i-j|^2 */ - pap = 0, /* part of nodes with alternative dustribution */ - pac = -1; /* multiplier for alternative distribution */ - -int np; /* number of parameter parsing now */ - -#define PRINT_ARC( i, j, length )\ -{\ -l = length;\ -if ( p_f ) l += ( p[i] - p[j] );\ -printf ("a %8ld %8ld %12ld\n", i, j, l );\ -} - - /* parsing parameters */ - -if ( argc < 2 ) goto usage; - -np = 0; - -strcpy ( args, argv[1] ); - - if ( ( args[0] == DASH ) && ( args[1] == 'h') - ) - goto help; - -if ( argc < 4 ) goto usage; - -/* first parameter - number of nodes */ -np = 1; -if ( ( n = atoi ( argv[1] ) ) < 2 ) goto usage; - -/* second parameter - number of arcs */ -np = 2; -if ( ( m = atoi ( argv[2] ) ) < n ) goto usage; - -/* third parameter - seed */ -np=3; -if ( ( seed = atoi ( argv[3] ) ) <= 0 ) goto usage; - -/* other parameters */ - -for ( np = 4; np < argc; np ++ ) - { - strcpy ( args, argv[np] ); - if ( args[0] != DASH ) goto usage; - - switch ( args[1] ) - { - - case 'l' : /* an interval for arc length */ - l_f = 1; - switch ( args[2] ) - { - case 'l': /* length of the interval */ - ll_f = 1; - ll = (long) atof ( &args[3] ); - break; - case 'm': /* minimal bound */ - lm_f = 1; - lm = (long ) atof ( &args[3] ); - break; - case 'n': /* additional length: l*|i-j| */ - ln_f = 1; - ln = atof ( &args[3] ); - break; - case 's': /* additional length: l*|i-j|^2 */ - ls_f = 1; - ls = atof ( &args[3] ); - break; - default: /* unknown switch value */ - goto usage; - } - break; - - case 'c' : /* connecting cycle(s) */ - c_f = 1; - switch ( args[2] ) - { - case 'l': - c_random = 0; - cl_f = 1; - cl = (long) atof ( &args[3] ); - if ( cl < 0 ) goto usage; - break; - case 'h': - ch_f = 1; - ch = (long) atof ( &args[3] ); - if ( ch < 2 || ch > n ) goto usage; - break; - default: /* unknown switch value */ - goto usage; - } - break; - - case 's' : /* additional source */ - s_f = 1; - if ( strlen ( args ) > 2 ) - { - switch ( args[2] ) - { - case 'l': /* upper bound of art. arc */ - sl_f = 1; - sl = (long) atof ( &args[3] ); - break; - case 'm': /* lower bound of art. arc */ - sm_f = 1; - sm = (long) atof ( &args[3] ); - break; - default: /* unknown switch value */ - goto usage; - } - } - break; - - case 'p' : /* potentials */ - p_f = 1; - if ( strlen ( args ) > 2 ) - { - switch ( args[2] ) - { - case 'l': /* length of the interval */ - pl_f = 1; - pl = (long) atof ( &args[3] ); - break; - case 'm': /* minimal bound */ - pm_f = 1; - pm = (long ) atof ( &args[3] ); - break; - case 'n': /* additional length: l*|i-j| */ - pn_f = 1; - pn = atof ( &args[3] ); - break; - case 's': /* additional length: l*|i-j|^2 */ - ps_f = 1; - ps = atof ( &args[3] ); - break; - case 'a': /* bipolar distribution */ - pa_f = 1; - switch ( args[3] ) - { - case 'p': /* % of alternative potentials */ - pap_f = 1; - pap = atof ( &args[4] ); - if ( pap < 0 ) pap = 0; - if ( pap > 100 ) pap = 100; - pap /= 100; - break; - case 'c': /* multiplier */ - pac_f = 1; - pac = atof ( &args[4] ); - break; - default: /* unknown switch value */ - goto usage; - } - break; - default: /* unknown switch value */ - goto usage; - } - } - break; - - default : /* unknoun case */ - goto usage; - } - } - - -/* ----- ajusting parameters ----- */ - -n0 = n; m0 = m; - -/* length parameters */ -if ( ll < lm ) { lx = ll; ll = lm; lm = lx; } - -/* potential parameters */ -if ( p_f ) - { - if ( ! pl_f ) pl = ll; - if ( ! pm_f ) pm = lm; - if ( pl < pm ) { lx = pl; pl = pm; pm = lx; } - } - -/* path(s) parameters */ -if ( ! ch_f ) ch = n; - -mc = n + (n-2) / (ch-1); -if ( mc > m ) - { fprintf ( stderr, - "Error: not enough arcs for generating connecting cycle(s)\n" ); - exit (4); - } - - /* artifical source parameters */ -if ( s_f ) - { m0 += n; n0 ++ ; - if ( ! sm_f ) sm = sl; - if ( sl < sm ) { lx = sl; sl = sm; sm = lx; } - } - -/* printing title */ -printf ("c random network for shortest paths problem\n"); -printf ("c extended DIMACS format\nc\n" ); - -/* name of the problem */ -printf ("t rd_%ld_%ld_%ld_", n, m, seed ); -if ( l_f ) - printf ("%c", 'l'); -if ( c_f ) - printf ("%c", 'c'); -if ( s_f ) - printf ("%c", 's'); -if ( p_f ) - printf ("%c", 'p'); -printf ("\nc\n"); - -/* printing additional information */ -if ( l_f ) - printf ("c length -> min: %ld max: %ld k1: %.2f k2: %.2f\n", - lm, ll, ln, ls ); -if ( c_f ) - { - if ( c_random ) - printf ("c cycle -> number of arcs: %ld arc length: random\n", ch); - else - printf ("c cycle -> number of arcs: %ld arc length: %ld\n", - ch, cl ); - } -if ( s_f ) - printf ("c length of arcs from artifical source -> min: %ld max: %ld\n", - sm, sl ); -if ( p_f ) - { - printf ("c potentials -> min: %ld max: %ld k1: %.2f k2: %.2f\n", - pm, pl, pn, ps ); - if ( pa_f ) - printf ("c potentials -> part of alternative distribution: %.2f k: %.2f\n", - pap, pac ); - } -printf ("c\n" ); - - -printf ("p sp %8ld %8ld\nc\n", n0, m0 ); - -source = ( s_f ) ? n0 : 1; -printf ("n %8ld\nc\n", source ); - -if ( p_f ) /* generating potentials */ - { - p = (long*) calloc ( n+2, sizeof (long) ); - seed1 = 2*seed + 1; - init_rand ( seed1); - pl = pl - pm + 1; - - for ( i = 0; i <= n; i ++ ) - { - p_t = pm + nrand ( pl ); - if ( pn_f ) p_t += (long) ( i * pn ); - if ( ps_f ) p_t += (long) ( i * ( i * ps )); - if ( pap_f ) - if ( rand01() < pap ) - p_t = (long) ( p_t * pac ); - p[i] = p_t; - } - p[n+1] = 0; - } - - -if ( s_f ) /* additional arcs from artifical source */ - { - seed2 = 3*seed + 1; - init_rand ( seed2 ); - sl = sl - sm + 1; - - for ( i = n; i > 1; i -- ) - { - s = sm + nrand ( sl ); - PRINT_ARC ( n0, i, s ) - } - - PRINT_ARC ( n0, 1, 0 ) - } - -/* initialize random number generator */ -init_rand ( seed ); -ll = ll - lm + 1; - -/* generating connecting cycle(s) */ -if (c_random) - cl = lm + nrand ( ll ); -PRINT_ARC ( 1, 2, cl ) -if (c_random) - cl = lm + nrand ( ll ); -PRINT_ARC ( n, 1, cl ) - -for ( i = 2; i < n; i ++ ) - { - if (c_random) - cl = lm + nrand ( ll ); - - if ( ( (i-1) % (ch-1) ) != 0 ) - PRINT_ARC ( i, i+1, cl ) - else - { PRINT_ARC ( i, 1, cl ) - if (c_random) - cl = lm + nrand ( ll ); - PRINT_ARC ( 1, i+1, cl ) - } - } - -/* generating random arcs */ - -for ( k = 1; k <= m - mc; k ++ ) - { - i = 1 + nrand ( n ); - - do - j = 1 + nrand ( n ); - while ( j == i ); - - dij = ( i > j ) ? ( i - j ) : ( j - i ); - l = lm + nrand ( ll ); - if ( ln_f ) l += (long) ( dij * ln ); - if ( ls_f ) l += (long) ( dij * ( dij * ls ) ); - PRINT_ARC ( i, j, l ); - } - -/* all is done */ -exit (ext); - -/* ----- wrong usage ----- */ - - usage: -fprintf ( stderr, -"\nusage: %s n m seed [ -ll#i -lm#i -cl#i -p -pl#i -pm#i ... ]\n\ -help: %s -h\n\n", argv[0], argv[0] ); - -if ( np > 0 ) - fprintf ( stderr, "error in parameter # %d\n\n", np ); -exit (4); - -/* ---- help ---- */ - - help: - -if ( args[2] == 'h') goto hhelp; - -fprintf ( stderr, -"\n'%s' - random network generator for shortest paths problem.\n\ -Generates problems in extended DIMACS format.\n\ -\n\ - %s n m seed [ -ll#i -lm#i -cl#i -p -pl#i -pm#i ... ]\n\ - %s -hh\n\ -\n\ - #i - integer number #f - real number\n\ -\n\ --ll#i - #i is the upper bound on arc lengths (default 10000)\n\ --lm#i - #i is the lower bound on arc lengths (default 0)\n\ --cl#i - #i is length of arcs in connecting cycle(s) (default random)\n\ --p - generate potentials \n\ --pl#i - #i is the upper bound on potentials (default ll)\n\ --pm#i - #i is the lower bound on potentials (default lm)\n\ -\n\ --hh - extended help \n\n", -argv[0], argv[0], argv[0] ); - -exit (0); - -/* --------- sophisticated help ------------ */ - hhelp: - -if ( argc < 3 ) - fout = stderr; -else - fout = fopen ( argv[2], "w" ); - -if ( fout == NULL ) -{ fprintf ( stderr, "\nCan't open file '%s' for writing help\n\n", argv[2] ); - exit ( 2 ); -} - -fprintf (fout, -"\n'%s' - random network generator for shortest paths problem.\n\ -Generates problems in extended DIMACS format.\n\ -\n\ - %s n m seed [ -ll#i -lm#i -ln#f -ls#f\n\ - -p -pl#i -pm#i -pn#f -ps#f -pap#i -pac#f\n\ - -cl#i -ch#i\n\ - -s -sl#i -sm#i\n\ - ]\n\ - %s -hh file_name\n\ -\n\ - #i - integer number #f - real number\n\ -\n\ - Arc length parameters:\n\ --ll#i - #i is the upper bound on arc lengths (default 10000)\n\ --lm#i - #i is the lower bound on arc lengths (default 0)\n\ --ln#f - multipliy l(i, j) by #f * |i-j| (default 0)\n\ --ls#f - multipliy l(i, j) by #f * |i-j|^2 (default 0)\n\ -\n\ - Potential parameters:\n\ --p - generate potentials \n\ --pl#i - #i is the upper bound on potentials (default ll)\n\ --pm#i - #i is the lower bound on potentials (default lm)\n\ --pn#f - multiply p(i) by #f * i (default 0)\n\ --ps#f - multiply p(i) by #f * i^2 (default 0)\n\ --pap#i - percentage of alternative potential nodes (default 0)\n\ --pac#f - if i is alternative, multiply p(i) by #f (default -1)\n\ -\n\ - Connecting cycle(s) parameters:\n\ --cl#i - #i is length of arcs in connecting cycle(s) (default random)\n\ --ch#i - #i is length of connecting cycles (default n)\n\ -\n\ - Artificial source parameters:\n\ --s - generate artificial source with default connecting arc lengths\n\ --sl#i - #i is the upper bound on art. arc lengths (default 100000000)\n\ --sm#i - #i is the lower bound on art. arc lengths (default sl)\n\ -\n\ --hh file_name - save this help in the file 'file_name'\n\n", -argv[0], argv[0], argv[0] ); - -exit (0); -} - - - diff --git a/lib/.gitignore b/lib/.gitignore deleted file mode 100644 index 02aa432..0000000 --- a/lib/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -Makefile -Makefile.in -*.o -*.lo -*.la -version.c -version.h -gitversion.h -gitversion.h.tmp -.deps -.nfs* -.libs -.arch-inventory -.arch-ids -*~ -*.loT -memtypes.h -route_types.h diff --git a/lib/Makefile.in b/lib/Makefile.in new file mode 100644 index 0000000..9658215 --- /dev/null +++ b/lib/Makefile.in @@ -0,0 +1,840 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = lib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(pkginclude_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = version.h +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am_libzebra_la_OBJECTS = network.lo pid_output.lo getopt.lo getopt1.lo \ + daemon.lo checksum.lo vector.lo linklist.lo vty.lo command.lo \ + sockunion.lo prefix.lo thread.lo if.lo memory.lo buffer.lo \ + table.lo hash.lo filter.lo routemap.lo distribute.lo stream.lo \ + str.lo log.lo plist.lo zclient.lo sockopt.lo smux.lo agentx.lo \ + snmp.lo md5.lo if_rmap.lo keychain.lo privs.lo sigevent.lo \ + pqueue.lo jhash.lo memtypes.lo workqueue.lo vrf.lo \ + event_counter.lo nexthop.lo +libzebra_la_OBJECTS = $(am_libzebra_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libzebra_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libzebra_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libzebra_la_SOURCES) +DIST_SOURCES = $(libzebra_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.h.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +AM_CFLAGS = $(WERROR) +lib_LTLIBRARIES = libzebra.la +libzebra_la_LDFLAGS = -version-info 1:0:0 +libzebra_la_SOURCES = \ + network.c pid_output.c getopt.c getopt1.c daemon.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 agentx.c snmp.c md5.c if_rmap.c keychain.c privs.c \ + sigevent.c pqueue.c jhash.c memtypes.c workqueue.c vrf.c \ + event_counter.c nexthop.c + +BUILT_SOURCES = memtypes.h route_types.h gitversion.h +libzebra_la_DEPENDENCIES = @LIB_REGEX@ +libzebra_la_LIBADD = @LIB_REGEX@ @LIBCAP@ +pkginclude_HEADERS = \ + buffer.h checksum.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.h if_rmap.h keychain.h \ + privs.h sigevent.h pqueue.h jhash.h zassert.h memtypes.h \ + workqueue.h route_types.h libospf.h vrf.h fifo.h event_counter.h \ + nexthop.h + +noinst_HEADERS = \ + plist_int.h + +EXTRA_DIST = \ + regex.c regex-gnu.h \ + queue.h \ + memtypes.awk \ + route_types.pl route_types.txt \ + gitversion.pl + +@GIT_VERSION_TRUE@GITH = gitversion.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu lib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +version.h: $(top_builddir)/config.status $(srcdir)/version.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libzebra.la: $(libzebra_la_OBJECTS) $(libzebra_la_DEPENDENCIES) $(EXTRA_libzebra_la_DEPENDENCIES) + $(AM_V_CCLD)$(libzebra_la_LINK) -rpath $(libdir) $(libzebra_la_OBJECTS) $(libzebra_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/agentx.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checksum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/daemon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/distribute.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event_counter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/if.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/if_rmap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jhash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keychain.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linklist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memtypes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/network.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nexthop.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pid_output.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pqueue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/privs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/routemap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigevent.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smux.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockopt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockunion.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vrf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vty.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/workqueue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zclient.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-pkgincludeHEADERS install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-libLTLIBRARIES \ + uninstall-pkgincludeHEADERS + +.PRECIOUS: Makefile + + +memtypes.h: $(srcdir)/memtypes.c $(srcdir)/memtypes.awk + ($(GAWK) -f $(srcdir)/memtypes.awk $(srcdir)/memtypes.c > $@) + +route_types.h: $(srcdir)/route_types.txt $(srcdir)/route_types.pl + @PERL@ $(srcdir)/route_types.pl < $(srcdir)/route_types.txt > $@ + +# bit of a trick here to always have up-to-date git stamps without triggering +# unneccessary rebuilds. .PHONY causes the .tmp file to be rebuilt always, +# but if we use that on gitversion.h it'll ripple through the .c file deps. +# (even if gitversion.h's file timestamp doesn't change, make will think it +# did, because of .PHONY...) + +@GIT_VERSION_TRUE@.PHONY: gitversion.h.tmp +@GIT_VERSION_TRUE@.SILENT: gitversion.h gitversion.h.tmp +@GIT_VERSION_TRUE@gitversion.h.tmp: $(srcdir)/../.git +@GIT_VERSION_TRUE@ @PERL@ $(srcdir)/gitversion.pl $(srcdir) > ${GITH}.tmp +@GIT_VERSION_TRUE@gitversion.h: gitversion.h.tmp +@GIT_VERSION_TRUE@ { test -f ${GITH} && diff -s -q ${GITH}.tmp ${GITH}; } || cp -v ${GITH}.tmp ${GITH} + +@GIT_VERSION_FALSE@.PHONY: gitversion.h +@GIT_VERSION_FALSE@gitversion.h: +@GIT_VERSION_FALSE@ true + +# 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/command.c b/lib/command.c index 662f8a3..e1d9ff6 100644 --- a/lib/command.c +++ b/lib/command.c @@ -1700,7 +1700,7 @@ cmd_element_match(struct cmd_element *cmd_element, * That vector will contain all struct command_token* of the * cmd_element which matched against the given vline at the given * index. - * @return A code specifying if an error occured. If all went right, it's + * @return A code specifying if an error occurred. If all went right, it's * CMD_SUCCESS. */ static int @@ -2812,7 +2812,7 @@ command_config_read_one_line (struct vty *vty, struct cmd_element **cmd, int use ret != CMD_SUCCESS && ret != CMD_WARNING && ret != CMD_ERR_NOTHING_TODO && vty->node != CONFIG_NODE) { vty->node = node_parent(vty->node); - ret = cmd_execute_command_strict (vline, vty, NULL); + ret = cmd_execute_command_strict (vline, vty, cmd); } // If climbing the tree did not work then ignore the command and @@ -3071,7 +3071,7 @@ DEFUN (config_write_file, "Write to configuration file\n") { unsigned int i; - int fd; + int fd, dupfd = -1; struct cmd_node *node; char *config_file; char *config_file_tmp = NULL; @@ -3124,7 +3124,20 @@ DEFUN (config_write_file, if ((*node->func) (file_vty)) vty_out (file_vty, "!\n"); } + + if ((dupfd = dup (file_vty->wfd)) < 0) + { + vty_out (vty, "Couldn't dup fd (for fdatasync) for %s, %s (%d).%s", + config_file, safe_strerror(errno), errno, VTY_NEWLINE); + } + vty_close (file_vty); + + if (fdatasync (dupfd) < 0) + { + vty_out (vty, "Couldn't fdatasync %s, %s (%d)!%s", + config_file, safe_strerror(errno), errno, VTY_NEWLINE); + } if (unlink (config_file_sav) != 0) if (errno != ENOENT) @@ -3139,21 +3152,12 @@ DEFUN (config_write_file, VTY_NEWLINE); goto finished; } - sync (); - if (unlink (config_file) != 0) + if (rename (config_file_tmp, config_file) != 0) { - vty_out (vty, "Can't unlink configuration file %s.%s", config_file, - VTY_NEWLINE); - goto finished; - } - if (link (config_file_tmp, config_file) != 0) - { - vty_out (vty, "Can't save configuration file %s.%s", config_file, - VTY_NEWLINE); + vty_out (vty, "Can't move configuration file %s into place.%s", + config_file, VTY_NEWLINE); goto finished; } - sync (); - if (chmod (config_file, CONFIGFILE_MASK) != 0) { vty_out (vty, "Can't chmod configuration file %s: %s (%d).%s", @@ -3166,6 +3170,8 @@ DEFUN (config_write_file, ret = CMD_SUCCESS; finished: + if (dupfd >= 0) + close (dupfd); unlink (config_file_tmp); XFREE (MTYPE_TMP, config_file_tmp); XFREE (MTYPE_TMP, config_file_sav); diff --git a/lib/command.h b/lib/command.h index cc5dd08..60079b3 100644 --- a/lib/command.h +++ b/lib/command.h @@ -502,7 +502,7 @@ struct cmd_token #define IN_STR "Filter incoming routing updates\n" #define V4NOTATION_STR "specify by IPv4 address notation(e.g. 0.0.0.0)\n" #define OSPF6_NUMBER_STR "Specify by number\n" -#define INTERFACE_STR "Interface infomation\n" +#define INTERFACE_STR "Interface information\n" #define IFNAME_STR "Interface name(e.g. ep0)\n" #define IP6_STR "IPv6 Information\n" #define OSPF6_STR "Open Shortest Path First (OSPF) for IPv6\n" diff --git a/lib/filter.c b/lib/filter.c index a472941..ffb943f 100644 --- a/lib/filter.c +++ b/lib/filter.c @@ -85,10 +85,10 @@ struct access_master struct access_list_list str; /* Hook function which is executed when new access_list is added. */ - void (*add_hook) (struct access_list *); + void (*add_hook) (const char *); /* Hook function which is executed when access_list is deleted. */ - void (*delete_hook) (struct access_list *); + void (*delete_hook) (const char *); }; /* Static structure for IPv4 access_list's master. */ @@ -317,7 +317,7 @@ access_list_insert (afi_t afi, const char *name) /* Set point to insertion point. */ for (point = alist->head; point; point = point->next) - if (strcmp (point->name, name) >= 0) + if (point->name && strcmp (point->name, name) >= 0) break; } @@ -372,11 +372,11 @@ access_list_lookup (afi_t afi, const char *name) return NULL; for (access = master->num.head; access; access = access->next) - if (strcmp (access->name, name) == 0) + if (access->name && strcmp (access->name, name) == 0) return access; for (access = master->str.head; access; access = access->next) - if (strcmp (access->name, name) == 0) + if (access->name && strcmp (access->name, name) == 0) return access; return NULL; @@ -426,7 +426,7 @@ access_list_apply (struct access_list *access, void *object) /* Add hook function. */ void -access_list_add_hook (void (*func) (struct access_list *access)) +access_list_add_hook (void (*func) (const char *)) { access_master_ipv4.add_hook = func; #ifdef HAVE_IPV6 @@ -436,7 +436,7 @@ access_list_add_hook (void (*func) (struct access_list *access)) /* Delete hook function. */ void -access_list_delete_hook (void (*func) (struct access_list *access)) +access_list_delete_hook (void (*func) (const char *)) { access_master_ipv4.delete_hook = func; #ifdef HAVE_IPV6 @@ -459,7 +459,7 @@ access_list_filter_add (struct access_list *access, struct filter *filter) /* Run hook function. */ if (access->master->add_hook) - (*access->master->add_hook) (access); + (*access->master->add_hook) (access->name); } /* If access_list has no filter then return 1. */ @@ -478,7 +478,22 @@ static void access_list_filter_delete (struct access_list *access, struct filter *filter) { struct access_master *master; - + /* transfer ownership of access->name to a local, to retain the name + * to pass to a delete hook, while the access-list is deleted + * + * It is important that access-lists that are deleted, or are in process + * of being deleted, are not visible via access_list_lookup. This is + * because some (all?) users process the delete_hook callback the same + * as an add - they simply refresh all their access_list name references + * by looking up the name. + * + * If an access list can be looked up while being deleted, such users will + * not remove an access-list, and will keep dangling references to + * freed access lists. + */ + char *name = access->name; + access->name = NULL; + master = access->master; if (filter->next) @@ -492,14 +507,16 @@ access_list_filter_delete (struct access_list *access, struct filter *filter) access->head = filter->next; filter_free (filter); - - /* Run hook function. */ - if (master->delete_hook) - (*master->delete_hook) (access); - + /* If access_list becomes empty delete it from access_master. */ if (access_list_empty (access)) access_list_delete (access); + + /* Run hook function. */ + if (master->delete_hook) + (*master->delete_hook) (name); + + XFREE (MTYPE_ACCESS_LIST_STR, name); } /* @@ -1325,7 +1342,8 @@ DEFUN (no_access_list_all, { struct access_list *access; struct access_master *master; - + char *name; + /* Looking up access_list. */ access = access_list_lookup (AFI_IP, argv[0]); if (access == NULL) @@ -1336,14 +1354,20 @@ DEFUN (no_access_list_all, } master = access->master; + /* transfer ownership of access->name to a local, to retain + * a while longer, past access_list being freed */ + name = access->name; + access->name = NULL; + + /* Delete all filter from access-list. */ + access_list_delete (access); /* Run hook function. */ if (master->delete_hook) - (*master->delete_hook) (access); + (*master->delete_hook) (name); - /* Delete all filter from access-list. */ - access_list_delete (access); - + XFREE (MTYPE_ACCESS_LIST_STR, name); + return CMD_SUCCESS; } @@ -1496,7 +1520,8 @@ DEFUN (no_ipv6_access_list_all, { struct access_list *access; struct access_master *master; - + char *name; + /* Looking up access_list. */ access = access_list_lookup (AFI_IP6, argv[0]); if (access == NULL) @@ -1507,14 +1532,17 @@ DEFUN (no_ipv6_access_list_all, } master = access->master; + name = access->name; + access->name = NULL; + + /* Delete all filter from access-list. */ + access_list_delete (access); /* Run hook function. */ if (master->delete_hook) - (*master->delete_hook) (access); - - /* Delete all filter from access-list. */ - access_list_delete (access); + (*master->delete_hook) (name); + XFREE (MTYPE_ACCESS_LIST_STR, name); return CMD_SUCCESS; } @@ -1588,7 +1616,7 @@ filter_show (struct vty *vty, const char *name, afi_t afi) for (access = master->num.head; access; access = access->next) { - if (name && strcmp (access->name, name) != 0) + if (!access->name || (name && strcmp (access->name, name) != 0)) continue; write = 1; @@ -1631,7 +1659,7 @@ filter_show (struct vty *vty, const char *name, afi_t afi) for (access = master->str.head; access; access = access->next) { - if (name && strcmp (access->name, name) != 0) + if (!access->name || (name && strcmp (access->name, name) != 0)) continue; write = 1; diff --git a/lib/filter.h b/lib/filter.h index e6ccd33..85d0158 100644 --- a/lib/filter.h +++ b/lib/filter.h @@ -64,8 +64,8 @@ struct access_list /* Prototypes for access-list. */ extern void access_list_init (void); extern void access_list_reset (void); -extern void access_list_add_hook (void (*func)(struct access_list *)); -extern void access_list_delete_hook (void (*func)(struct access_list *)); +extern void access_list_add_hook (void (*func) (const char *)); +extern void access_list_delete_hook (void (*func) (const char *)); extern struct access_list *access_list_lookup (afi_t, const char *); extern enum filter_type access_list_apply (struct access_list *, void *); diff --git a/lib/memory.c b/lib/memory.c index b8305dd..54a8ce4 100644 --- a/lib/memory.c +++ b/lib/memory.c @@ -43,7 +43,7 @@ static const struct message mstr [] = { 0, NULL }, }; -/* Fatal memory allocation error occured. */ +/* Fatal memory allocation error occurred. */ static void __attribute__ ((noreturn)) zerror (const char *fname, int type, size_t size) { diff --git a/lib/memory.h b/lib/memory.h index 5013529..9bef3fa 100644 --- a/lib/memory.h +++ b/lib/memory.h @@ -50,7 +50,7 @@ extern struct mlist mlists[]; #define XFREE(mtype, ptr) \ do { \ mtype_zfree (__FILE__, __LINE__, (mtype), (ptr)); \ - ptr = NULL; } \ + (ptr) = NULL; } \ while (0) #define XSTRDUP(mtype, str) \ mtype_zstrdup (__FILE__, __LINE__, (mtype), (str)) @@ -60,7 +60,7 @@ extern struct mlist mlists[]; #define XREALLOC(mtype, ptr, size) zrealloc ((mtype), (ptr), (size)) #define XFREE(mtype, ptr) do { \ zfree ((mtype), (ptr)); \ - ptr = NULL; } \ + (ptr) = NULL; } \ while (0) #define XSTRDUP(mtype, str) zstrdup ((mtype), (str)) #endif /* MEMORY_LOG */ diff --git a/lib/memtypes.h b/lib/memtypes.h new file mode 100644 index 0000000..749b29b --- /dev/null +++ b/lib/memtypes.h @@ -0,0 +1,251 @@ +/* Auto-generated from memtypes.c by gawk. */ +/* Do not edit! */ + +#ifndef _QUAGGA_MEMTYPES_H +#define _QUAGGA_MEMTYPES_H + +enum +{ + MTYPE_TMP = 1, + MTYPE_STRVEC, + MTYPE_VECTOR, + MTYPE_VECTOR_INDEX, + MTYPE_LINK_LIST, + MTYPE_LINK_NODE, + MTYPE_THREAD, + MTYPE_THREAD_MASTER, + MTYPE_THREAD_STATS, + MTYPE_VTY, + MTYPE_VTY_OUT_BUF, + MTYPE_VTY_HIST, + MTYPE_IF, + MTYPE_CONNECTED, + MTYPE_CONNECTED_LABEL, + MTYPE_BUFFER, + MTYPE_BUFFER_DATA, + MTYPE_STREAM, + MTYPE_STREAM_DATA, + MTYPE_STREAM_FIFO, + MTYPE_PREFIX, + MTYPE_PREFIX_IPV4, + MTYPE_PREFIX_IPV6, + MTYPE_HASH, + MTYPE_HASH_BACKET, + MTYPE_HASH_INDEX, + MTYPE_ROUTE_TABLE, + MTYPE_ROUTE_NODE, + MTYPE_DISTRIBUTE, + MTYPE_DISTRIBUTE_IFNAME, + MTYPE_ACCESS_LIST, + MTYPE_ACCESS_LIST_STR, + MTYPE_ACCESS_FILTER, + MTYPE_PREFIX_LIST, + MTYPE_PREFIX_LIST_ENTRY, + MTYPE_PREFIX_LIST_STR, + MTYPE_ROUTE_MAP, + MTYPE_ROUTE_MAP_NAME, + MTYPE_ROUTE_MAP_INDEX, + MTYPE_ROUTE_MAP_RULE, + MTYPE_ROUTE_MAP_RULE_STR, + MTYPE_ROUTE_MAP_COMPILED, + MTYPE_CMD_TOKENS, + MTYPE_KEY, + MTYPE_KEYCHAIN, + MTYPE_IF_RMAP, + MTYPE_IF_RMAP_NAME, + MTYPE_SOCKUNION, + MTYPE_PRIVS, + MTYPE_ZLOG, + MTYPE_ZCLIENT, + MTYPE_WORK_QUEUE, + MTYPE_WORK_QUEUE_ITEM, + MTYPE_WORK_QUEUE_NAME, + MTYPE_PQUEUE, + MTYPE_PQUEUE_DATA, + MTYPE_HOST, + MTYPE_VRF, + MTYPE_VRF_NAME, + MTYPE_VRF_BITMAP, + MTYPE_IF_LINK_PARAMS, + MTYPE_RTADV_PREFIX, + MTYPE_ZEBRA_VRF, + MTYPE_NEXTHOP, + MTYPE_RIB, + MTYPE_RIB_QUEUE, + MTYPE_STATIC_ROUTE, + MTYPE_RIB_DEST, + MTYPE_RIB_TABLE_INFO, + MTYPE_NETLINK_NAME, + MTYPE_NETLINK_RCVBUF, + MTYPE_RNH, + MTYPE_BGP, + MTYPE_BGP_LISTENER, + MTYPE_BGP_PEER, + MTYPE_BGP_PEER_HOST, + MTYPE_PEER_GROUP, + MTYPE_PEER_DESC, + MTYPE_PEER_PASSWORD, + MTYPE_ATTR, + MTYPE_ATTR_EXTRA, + MTYPE_AS_PATH, + MTYPE_AS_SEG, + MTYPE_AS_SEG_DATA, + MTYPE_AS_STR, + MTYPE_BGP_TABLE, + MTYPE_BGP_NODE, + MTYPE_BGP_ROUTE, + MTYPE_BGP_ROUTE_EXTRA, + MTYPE_BGP_CONN, + MTYPE_BGP_STATIC, + MTYPE_BGP_ADVERTISE_ATTR, + MTYPE_BGP_ADVERTISE, + MTYPE_BGP_SYNCHRONISE, + MTYPE_BGP_ADJ_IN, + MTYPE_BGP_ADJ_OUT, + MTYPE_BGP_MPATH_INFO, + MTYPE_AS_LIST, + MTYPE_AS_FILTER, + MTYPE_AS_FILTER_STR, + MTYPE_COMMUNITY, + MTYPE_COMMUNITY_VAL, + MTYPE_COMMUNITY_STR, + MTYPE_ECOMMUNITY, + MTYPE_ECOMMUNITY_VAL, + MTYPE_ECOMMUNITY_STR, + MTYPE_COMMUNITY_LIST, + MTYPE_COMMUNITY_LIST_NAME, + MTYPE_COMMUNITY_LIST_ENTRY, + MTYPE_COMMUNITY_LIST_CONFIG, + MTYPE_COMMUNITY_LIST_HANDLER, + MTYPE_CLUSTER, + MTYPE_CLUSTER_VAL, + MTYPE_BGP_PROCESS_QUEUE, + MTYPE_BGP_CLEAR_NODE_QUEUE, + MTYPE_TRANSIT, + MTYPE_TRANSIT_VAL, + MTYPE_BGP_DISTANCE, + MTYPE_BGP_NEXTHOP_CACHE, + MTYPE_BGP_CONFED_LIST, + MTYPE_PEER_UPDATE_SOURCE, + MTYPE_BGP_DAMP_INFO, + MTYPE_BGP_DAMP_ARRAY, + MTYPE_BGP_REGEXP, + MTYPE_BGP_AGGREGATE, + MTYPE_BGP_ADDR, + MTYPE_ENCAP_TLV, + MTYPE_LCOMMUNITY, + MTYPE_LCOMMUNITY_STR, + MTYPE_LCOMMUNITY_VAL, + MTYPE_RIP, + MTYPE_RIP_INFO, + MTYPE_RIP_INTERFACE, + MTYPE_RIP_PEER, + MTYPE_RIP_OFFSET_LIST, + MTYPE_RIP_DISTANCE, + MTYPE_RIPNG, + MTYPE_RIPNG_ROUTE, + MTYPE_RIPNG_AGGREGATE, + MTYPE_RIPNG_PEER, + MTYPE_RIPNG_OFFSET_LIST, + MTYPE_RIPNG_RTE_DATA, + MTYPE_BABEL, + MTYPE_BABEL_IF, + MTYPE_OSPF_TOP, + MTYPE_OSPF_AREA, + MTYPE_OSPF_AREA_RANGE, + MTYPE_OSPF_NETWORK, + MTYPE_OSPF_NEIGHBOR_STATIC, + MTYPE_OSPF_IF, + MTYPE_OSPF_NEIGHBOR, + MTYPE_OSPF_ROUTE, + MTYPE_OSPF_TMP, + MTYPE_OSPF_LSA, + MTYPE_OSPF_LSA_DATA, + MTYPE_OSPF_LSDB, + MTYPE_OSPF_PACKET, + MTYPE_OSPF_FIFO, + MTYPE_OSPF_VERTEX, + MTYPE_OSPF_VERTEX_PARENT, + MTYPE_OSPF_NEXTHOP, + MTYPE_OSPF_PATH, + MTYPE_OSPF_VL_DATA, + MTYPE_OSPF_CRYPT_KEY, + MTYPE_OSPF_EXTERNAL_INFO, + MTYPE_OSPF_DISTANCE, + MTYPE_OSPF_IF_INFO, + MTYPE_OSPF_IF_PARAMS, + MTYPE_OSPF_MESSAGE, + MTYPE_OSPF_MPLS_TE, + MTYPE_OSPF_PCE_PARAMS, + MTYPE_OSPF6_TOP, + MTYPE_OSPF6_AREA, + MTYPE_OSPF6_IF, + MTYPE_OSPF6_NEIGHBOR, + MTYPE_OSPF6_ROUTE, + MTYPE_OSPF6_PREFIX, + MTYPE_OSPF6_MESSAGE, + MTYPE_OSPF6_LSA, + MTYPE_OSPF6_LSA_SUMMARY, + MTYPE_OSPF6_LSDB, + MTYPE_OSPF6_VERTEX, + MTYPE_OSPF6_SPFTREE, + MTYPE_OSPF6_NEXTHOP, + MTYPE_OSPF6_EXTERNAL_INFO, + MTYPE_OSPF6_OTHER, + MTYPE_OSPF6_DISTANCE, + MTYPE_ISIS, + MTYPE_ISIS_TMP, + MTYPE_ISIS_CIRCUIT, + MTYPE_ISIS_LSP, + MTYPE_ISIS_ADJACENCY, + MTYPE_ISIS_AREA, + MTYPE_ISIS_AREA_ADDR, + MTYPE_ISIS_TLV, + MTYPE_ISIS_DYNHN, + MTYPE_ISIS_SPFTREE, + MTYPE_ISIS_VERTEX, + MTYPE_ISIS_ROUTE_INFO, + MTYPE_ISIS_NEXTHOP, + MTYPE_ISIS_NEXTHOP6, + MTYPE_ISIS_DICT, + MTYPE_ISIS_DICT_NODE, + MTYPE_ISIS_MPLS_TE, + MTYPE_PIM_CHANNEL_OIL, + MTYPE_PIM_INTERFACE, + MTYPE_PIM_IGMP_JOIN, + MTYPE_PIM_IGMP_SOCKET, + MTYPE_PIM_IGMP_GROUP, + MTYPE_PIM_IGMP_GROUP_SOURCE, + MTYPE_PIM_NEIGHBOR, + MTYPE_PIM_IFCHANNEL, + MTYPE_PIM_UPSTREAM, + MTYPE_PIM_SSMPINGD, + MTYPE_PIM_STATIC_ROUTE, + MTYPE_NHRP_IF, + MTYPE_NHRP_VC, + MTYPE_NHRP_PEER, + MTYPE_NHRP_CACHE, + MTYPE_NHRP_NHS, + MTYPE_NHRP_REGISTRATION, + MTYPE_NHRP_SHORTCUT, + MTYPE_NHRP_ROUTE, + MTYPE_VTYSH_CONFIG, + MTYPE_VTYSH_CONFIG_LINE, + MTYPE_MAX, +}; + +extern struct memory_list memory_list_lib[]; +extern struct memory_list memory_list_zebra[]; +extern struct memory_list memory_list_bgp[]; +extern struct memory_list memory_list_rip[]; +extern struct memory_list memory_list_ripng[]; +extern struct memory_list memory_list_babel[]; +extern struct memory_list memory_list_ospf[]; +extern struct memory_list memory_list_ospf6[]; +extern struct memory_list memory_list_isis[]; +extern struct memory_list memory_list_pim[]; +extern struct memory_list memory_list_nhrp[]; +extern struct memory_list memory_list_vtysh[]; + +#endif /* _QUAGGA_MEMTYPES_H */ + diff --git a/lib/privs.c b/lib/privs.c index 3fb96ae..7935edb 100644 --- a/lib/privs.c +++ b/lib/privs.c @@ -102,7 +102,7 @@ static struct #ifdef HAVE_LCAPS /* Quagga -> Linux capabilities mappings */ [ZCAP_SETID] = { 2, (pvalue_t []) { CAP_SETGID, CAP_SETUID }, }, - [ZCAP_BIND] = { 2, (pvalue_t []) { CAP_NET_BIND_SERVICE }, }, + [ZCAP_BIND] = { 1, (pvalue_t []) { CAP_NET_BIND_SERVICE }, }, [ZCAP_NET_ADMIN] = { 1, (pvalue_t []) { CAP_NET_ADMIN }, }, [ZCAP_NET_RAW] = { 1, (pvalue_t []) { CAP_NET_RAW }, }, [ZCAP_CHROOT] = { 1, (pvalue_t []) { CAP_SYS_CHROOT, }, }, @@ -127,9 +127,8 @@ static struct [ZCAP_CHROOT] = { 1, (pvalue_t []) { PRIV_PROC_CHROOT }, }, [ZCAP_NICE] = { 1, (pvalue_t []) { PRIV_PROC_PRIOCNTL }, }, [ZCAP_PTRACE] = { 1, (pvalue_t []) { PRIV_PROC_SESSION }, }, - [ZCAP_DAC_OVERRIDE] = { 2, (pvalue_t []) { PRIV_FILE_DAC_EXECUTE, + [ZCAP_DAC_OVERRIDE] = { 4, (pvalue_t []) { PRIV_FILE_DAC_EXECUTE, PRIV_FILE_DAC_READ, - PRIV_FILE_DAC_SEARCH, PRIV_FILE_DAC_WRITE, PRIV_FILE_DAC_SEARCH }, }, [ZCAP_READ_SEARCH] = { 2, (pvalue_t []) { PRIV_FILE_DAC_SEARCH, diff --git a/lib/regex.c b/lib/regex.c index 122f447..cedf499 100644 --- a/lib/regex.c +++ b/lib/regex.c @@ -5726,7 +5726,7 @@ regcomp (preg, pattern, cflags) buffer. */ if (re_compile_fastmap (preg) == -2) { - /* Some error occured while computing the fastmap, just forget + /* Some error occurred while computing the fastmap, just forget about it. */ free (preg->fastmap); preg->fastmap = NULL; diff --git a/lib/route_types.h b/lib/route_types.h new file mode 100644 index 0000000..2dc5533 --- /dev/null +++ b/lib/route_types.h @@ -0,0 +1,334 @@ +/* Auto-generated from route_types.txt by . */ +/* Do not edit! */ + +#ifndef _QUAGGA_ROUTE_TYPES_H +#define _QUAGGA_ROUTE_TYPES_H + +/* Zebra route's types. */ +#define ZEBRA_ROUTE_SYSTEM 0 +#define ZEBRA_ROUTE_KERNEL 1 +#define ZEBRA_ROUTE_CONNECT 2 +#define ZEBRA_ROUTE_STATIC 3 +#define ZEBRA_ROUTE_RIP 4 +#define ZEBRA_ROUTE_RIPNG 5 +#define ZEBRA_ROUTE_OSPF 6 +#define ZEBRA_ROUTE_OSPF6 7 +#define ZEBRA_ROUTE_ISIS 8 +#define ZEBRA_ROUTE_BGP 9 +#define ZEBRA_ROUTE_PIM 10 +#define ZEBRA_ROUTE_HSLS 11 +#define ZEBRA_ROUTE_OLSR 12 +#define ZEBRA_ROUTE_BABEL 13 +#define ZEBRA_ROUTE_NHRP 14 +#define ZEBRA_ROUTE_MAX 15 + +#define SHOW_ROUTE_V4_HEADER \ + "Codes: K - kernel route, C - connected, S - static, R - RIP,%s" \ + " O - OSPF, I - IS-IS, B - BGP, P - PIM, A - Babel, N - NHRP,%s" \ + " > - selected route, * - FIB route%s%s", \ + VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE +#define SHOW_ROUTE_V6_HEADER \ + "Codes: K - kernel route, C - connected, S - static, R - RIPng,%s" \ + " O - OSPFv6, I - IS-IS, B - BGP, A - Babel, N - NHRP,%s" \ + " > - selected route, * - FIB route%s%s", \ + VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE + +/* babeld */ +#define QUAGGA_REDIST_STR_BABELD \ + "(kernel|connected|static|rip|ripng|ospf|ospf6|isis|bgp|pim|nhrp)" +#define QUAGGA_REDIST_HELP_STR_BABELD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP_REDIST_STR_BABELD \ + "(kernel|connected|static|rip|ospf|isis|bgp|pim|nhrp)" +#define QUAGGA_IP_REDIST_HELP_STR_BABELD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP6_REDIST_STR_BABELD \ + "(kernel|connected|static|ripng|ospf6|isis|bgp|nhrp)" +#define QUAGGA_IP6_REDIST_HELP_STR_BABELD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* bgpd */ +#define QUAGGA_REDIST_STR_BGPD \ + "(kernel|connected|static|rip|ripng|ospf|ospf6|isis|pim|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_BGPD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP_REDIST_STR_BGPD \ + "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" +#define QUAGGA_IP_REDIST_HELP_STR_BGPD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP6_REDIST_STR_BGPD \ + "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" +#define QUAGGA_IP6_REDIST_HELP_STR_BGPD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* isisd */ +#define QUAGGA_REDIST_STR_ISISD \ + "(kernel|connected|static|rip|ripng|ospf|ospf6|bgp|pim|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_ISISD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP_REDIST_STR_ISISD \ + "(kernel|connected|static|rip|ospf|bgp|pim|babel|nhrp)" +#define QUAGGA_IP_REDIST_HELP_STR_ISISD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP6_REDIST_STR_ISISD \ + "(kernel|connected|static|ripng|ospf6|bgp|babel|nhrp)" +#define QUAGGA_IP6_REDIST_HELP_STR_ISISD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* nhrpd */ +#define QUAGGA_REDIST_STR_NHRPD \ + "(kernel|connected|static|rip|ripng|ospf|ospf6|isis|bgp|pim|babel)" +#define QUAGGA_REDIST_HELP_STR_NHRPD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" +#define QUAGGA_IP_REDIST_STR_NHRPD \ + "(kernel|connected|static|rip|ospf|isis|bgp|pim|babel)" +#define QUAGGA_IP_REDIST_HELP_STR_NHRPD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" +#define QUAGGA_IP6_REDIST_STR_NHRPD \ + "(kernel|connected|static|ripng|ospf6|isis|bgp|babel)" +#define QUAGGA_IP6_REDIST_HELP_STR_NHRPD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Babel routing protocol (Babel)\n" + +/* ospf6d */ +#define QUAGGA_REDIST_STR_OSPF6D \ + "(kernel|connected|static|ripng|isis|bgp|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_OSPF6D \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* ospfd */ +#define QUAGGA_REDIST_STR_OSPFD \ + "(kernel|connected|static|rip|isis|bgp|pim|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_OSPFD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* pimd */ +#define QUAGGA_REDIST_STR_PIMD \ + "(kernel|connected|static|rip|ospf|isis|bgp|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_PIMD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* ripd */ +#define QUAGGA_REDIST_STR_RIPD \ + "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_RIPD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* ripngd */ +#define QUAGGA_REDIST_STR_RIPNGD \ + "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_RIPNGD \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + +/* zebra */ +#define QUAGGA_REDIST_STR_ZEBRA \ + "(kernel|connected|static|rip|ripng|ospf|ospf6|isis|bgp|pim|babel|nhrp)" +#define QUAGGA_REDIST_HELP_STR_ZEBRA \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP_REDIST_STR_ZEBRA \ + "(kernel|connected|static|rip|ospf|isis|bgp|pim|babel|nhrp)" +#define QUAGGA_IP_REDIST_HELP_STR_ZEBRA \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol (RIP)\n" \ + "Open Shortest Path First (OSPFv2)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Protocol Independent Multicast (PIM)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" +#define QUAGGA_IP6_REDIST_STR_ZEBRA \ + "(kernel|connected|static|ripng|ospf6|isis|bgp|babel|nhrp)" +#define QUAGGA_IP6_REDIST_HELP_STR_ZEBRA \ + "Kernel routes (not installed via the zebra RIB)\n" \ + "Connected routes (directly attached subnet or host)\n" \ + "Statically configured routes\n" \ + "Routing Information Protocol next-generation (IPv6) (RIPng)\n" \ + "Open Shortest Path First (IPv6) (OSPFv3)\n" \ + "Intermediate System to Intermediate System (IS-IS)\n" \ + "Border Gateway Protocol (BGP)\n" \ + "Babel routing protocol (Babel)\n" \ + "Next Hop Resolution Protocol (NHRP)\n" + + +#ifdef QUAGGA_DEFINE_DESC_TABLE + +struct zebra_desc_table +{ + unsigned int type; + const char *string; + char chr; +}; + +#define DESC_ENTRY(T,S,C) [(T)] = { (T), (S), (C) } +static const struct zebra_desc_table route_types[] = { + DESC_ENTRY (ZEBRA_ROUTE_SYSTEM, "system", 'X' ), + DESC_ENTRY (ZEBRA_ROUTE_KERNEL, "kernel", 'K' ), + DESC_ENTRY (ZEBRA_ROUTE_CONNECT, "connected", 'C' ), + DESC_ENTRY (ZEBRA_ROUTE_STATIC, "static", 'S' ), + DESC_ENTRY (ZEBRA_ROUTE_RIP, "rip", 'R' ), + DESC_ENTRY (ZEBRA_ROUTE_RIPNG, "ripng", 'R' ), + DESC_ENTRY (ZEBRA_ROUTE_OSPF, "ospf", 'O' ), + DESC_ENTRY (ZEBRA_ROUTE_OSPF6, "ospf6", 'O' ), + DESC_ENTRY (ZEBRA_ROUTE_ISIS, "isis", 'I' ), + DESC_ENTRY (ZEBRA_ROUTE_BGP, "bgp", 'B' ), + DESC_ENTRY (ZEBRA_ROUTE_PIM, "pim", 'P' ), + DESC_ENTRY (ZEBRA_ROUTE_HSLS, "hsls", 'H' ), + DESC_ENTRY (ZEBRA_ROUTE_OLSR, "olsr", 'o' ), + DESC_ENTRY (ZEBRA_ROUTE_BABEL, "babel", 'A' ), + DESC_ENTRY (ZEBRA_ROUTE_NHRP, "nhrp", 'N' ), +}; +#undef DESC_ENTRY + +#endif /* QUAGGA_DEFINE_DESC_TABLE */ + +#endif /* _QUAGGA_ROUTE_TYPES_H */ diff --git a/lib/sockunion.c b/lib/sockunion.c index 8e0ec24..9642c1c 100644 --- a/lib/sockunion.c +++ b/lib/sockunion.c @@ -286,7 +286,7 @@ sockunion_log (const union sockunion *su, char *buf, size_t len) } /* sockunion_connect returns - -1 : error occured + -1 : error occurred 0 : connect success 1 : connect is in progress */ enum connect_result diff --git a/lib/thread.c b/lib/thread.c index de4d76d..55effaa 100644 --- a/lib/thread.c +++ b/lib/thread.c @@ -601,13 +601,13 @@ thread_add_fd (struct thread **thread_array, struct thread *thread) /* Move thread to unuse list. */ static void -thread_add_unuse (struct thread_master *m, struct thread *thread) +thread_add_unuse (struct thread *thread) { - assert (m != NULL && thread != NULL); + thread->type = THREAD_UNUSED; + assert (thread->master != NULL && thread != NULL); assert (thread->next == NULL); assert (thread->prev == NULL); - assert (thread->type == THREAD_UNUSED); - thread_list_add (&m->unuse, thread); + thread_list_add (&thread->master->unuse, thread); } /* Free all unused thread. */ @@ -995,8 +995,7 @@ thread_cancel (struct thread *thread) assert(!"Thread should be either in queue or list or array!"); } - thread->type = THREAD_UNUSED; - thread_add_unuse (thread->master, thread); + thread_add_unuse (thread); } /* Delete all events which has argument value arg. */ @@ -1018,8 +1017,7 @@ thread_cancel_event (struct thread_master *m, void *arg) { ret++; thread_list_delete (&m->event, t); - t->type = THREAD_UNUSED; - thread_add_unuse (m, t); + thread_add_unuse (t); } } @@ -1036,8 +1034,7 @@ thread_cancel_event (struct thread_master *m, void *arg) { ret++; thread_list_delete (&m->ready, t); - t->type = THREAD_UNUSED; - thread_add_unuse (m, t); + thread_add_unuse (t); } } return ret; @@ -1055,16 +1052,6 @@ thread_timer_wait (struct pqueue *queue, struct timeval *timer_val) return NULL; } -static struct thread * -thread_run (struct thread_master *m, struct thread *thread, - struct thread *fetch) -{ - *fetch = *thread; - thread->type = THREAD_UNUSED; - thread_add_unuse (m, thread); - return fetch; -} - static int thread_process_fds_helper (struct thread_master *m, struct thread *thread, thread_fd_set *fdset) { @@ -1148,10 +1135,9 @@ thread_process (struct thread_list *list) return ready; } - /* Fetch next ready thread. */ -struct thread * -thread_fetch (struct thread_master *m, struct thread *fetch) +static struct thread * +thread_fetch (struct thread_master *m) { struct thread *thread; thread_fd_set readfd; @@ -1173,7 +1159,7 @@ thread_fetch (struct thread_master *m, struct thread *fetch) * more. */ if ((thread = thread_trim_head (&m->ready)) != NULL) - return thread_run (m, thread, fetch); + return thread; /* To be fair to all kinds of threads, and avoid starvation, we * need to be careful to consider all thread types for scheduling @@ -1227,14 +1213,14 @@ thread_fetch (struct thread_master *m, struct thread *fetch) list at this time. If this is code is uncommented, then background timer threads will not run unless there is nothing else to do. */ if ((thread = thread_trim_head (&m->ready)) != NULL) - return thread_run (m, thread, fetch); + return thread; #endif /* Background timer/events, lowest priority */ thread_timer_process (m->background, &relative_time); if ((thread = thread_trim_head (&m->ready)) != NULL) - return thread_run (m, thread, fetch); + return thread; } } @@ -1291,12 +1277,12 @@ struct thread *thread_current = NULL; /* We check thread consumed time. If the system has getrusage, we'll use that to get in-depth stats on the performance of the thread in addition to wall clock time stats from gettimeofday. */ -void +static void thread_call (struct thread *thread) { unsigned long realtime, cputime; RUSAGE_T before, after; - + /* Cache a pointer to the relevant cpu history thread, if the thread * does not have it yet. * @@ -1350,6 +1336,8 @@ thread_call (struct thread *thread) realtime/1000, cputime/1000); } #endif /* CONSUMED_TIME_CHECK */ + + thread_add_unuse (thread); } /* Execute thread */ @@ -1379,3 +1367,12 @@ funcname_thread_execute (struct thread_master *m, return NULL; } + +/* Co-operative thread main loop */ +void +thread_main (struct thread_master *master) +{ + struct thread *t; + while ((t = thread_fetch (master))) + thread_call (t); +} diff --git a/lib/thread.h b/lib/thread.h index 3f16216..685a7c2 100644 --- a/lib/thread.h +++ b/lib/thread.h @@ -218,8 +218,7 @@ extern struct thread *funcname_thread_execute (struct thread_master *, extern void thread_cancel (struct thread *); extern unsigned int thread_cancel_event (struct thread_master *, void *); -extern struct thread *thread_fetch (struct thread_master *, struct thread *); -extern void thread_call (struct thread *); +extern void thread_main (struct thread_master *); extern unsigned long thread_timer_remain_second (struct thread *); extern struct timeval thread_timer_remain(struct thread*); extern int thread_should_yield (struct thread *); diff --git a/lib/version.h b/lib/version.h new file mode 100644 index 0000000..cf8582f --- /dev/null +++ b/lib/version.h @@ -0,0 +1,56 @@ +/* lib/version.h. Generated from version.h.in by configure. + * + * Quagga version + * Copyright (C) 1997, 1999 Kunihiro Ishiguro + * + * 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 _ZEBRA_VERSION_H +#define _ZEBRA_VERSION_H + +#ifdef GIT_VERSION +#include "gitversion.h" +#endif + +#ifndef GIT_SUFFIX +#define GIT_SUFFIX "" +#endif +#ifndef GIT_INFO +#define GIT_INFO "" +#endif + +#define QUAGGA_PROGNAME "Quagga" + +#define QUAGGA_VERSION "1.2.3" GIT_SUFFIX + +#define ZEBRA_BUG_ADDRESS "https://bugzilla.quagga.net" + +#define QUAGGA_URL "http://www.quagga.net" + +#define QUAGGA_COPYRIGHT "Copyright 1996-2005 Kunihiro Ishiguro, et al." + +#define QUAGGA_CONFIG_ARGS "" + +pid_t pid_output (const char *); + +#ifndef HAVE_DAEMON +int daemon(int, int); +#endif + +#endif /* _ZEBRA_VERSION_H */ diff --git a/lib/vty.c b/lib/vty.c index 7ca8354..877d252 100644 --- a/lib/vty.c +++ b/lib/vty.c @@ -2365,6 +2365,10 @@ vty_close (struct vty *vty) else vty_stdio_reset (); + /* Close output fd (except stdout/stderr) */ + if (vty->wfd > 2) + close (vty->wfd); + if (vty->buf) XFREE (MTYPE_VTY, vty->buf); @@ -2432,7 +2436,7 @@ vty_read_file (FILE *confp) fprintf (stderr, "*** Error reading config: There is no such command.\n"); break; } - fprintf (stderr, "*** Error occured processing line %u, below:\n%s\n", + fprintf (stderr, "*** Error occurred processing line %u, below:\n%s\n", line_num, vty->buf); vty_close (vty); exit (1); diff --git a/lib/vty.h b/lib/vty.h index 1e3b124..b292db1 100644 --- a/lib/vty.h +++ b/lib/vty.h @@ -168,7 +168,7 @@ do { \ * The logic below ((TMPL) <= ((MIN) && (TMPL) != (MIN)) is * done to circumvent the compiler complaining about * comparing unsigned numbers against zero, if MIN is zero. - * NB: The compiler isn't smart enough to supress the warning + * NB: The compiler isn't smart enough to suprress the warning * if you write (MIN) != 0 && tmpl < (MIN). */ #define VTY_GET_INTEGER_RANGE_HEART(NAME,TMPL,STR,MIN,MAX) \ diff --git a/ltmain.sh b/ltmain.sh new file mode 100644 index 0000000..0f0a2da --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,11147 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.6 +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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 3 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -stdlib=* select c++ std lib with clang + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/m4/.gitignore b/m4/.gitignore deleted file mode 100644 index 3f3bd0a..0000000 --- a/m4/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -Makefile -Makefile.in -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/m4/Makefile.in b/m4/Makefile.in new file mode 100644 index 0000000..d0c841b --- /dev/null +++ b/m4/Makefile.in @@ -0,0 +1,497 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = m4 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = Makefile.am README.txt +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu m4/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# 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/m4/libtool.m4 b/m4/libtool.m4 new file mode 100644 index 0000000..a644432 --- /dev/null +++ b/m4/libtool.m4 @@ -0,0 +1,8372 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# 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. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 new file mode 100644 index 0000000..94b0829 --- /dev/null +++ b/m4/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 new file mode 100644 index 0000000..48bc934 --- /dev/null +++ b/m4/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 new file mode 100644 index 0000000..fa04b52 --- /dev/null +++ b/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# 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. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c6b26f8 --- /dev/null +++ b/m4/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# 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. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/missing b/missing new file mode 100755 index 0000000..f62bbae --- /dev/null +++ b/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# 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, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/nhrpd/Makefile.in b/nhrpd/Makefile.in new file mode 100644 index 0000000..06f3f94 --- /dev/null +++ b/nhrpd/Makefile.in @@ -0,0 +1,744 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = nhrpd$(EXEEXT) +subdir = nhrpd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" +PROGRAMS = $(sbin_PROGRAMS) +am_nhrpd_OBJECTS = zbuf.$(OBJEXT) znl.$(OBJEXT) resolver.$(OBJEXT) \ + linux.$(OBJEXT) netlink_arp.$(OBJEXT) netlink_gre.$(OBJEXT) \ + vici.$(OBJEXT) reqid.$(OBJEXT) nhrp_event.$(OBJEXT) \ + nhrp_packet.$(OBJEXT) nhrp_interface.$(OBJEXT) \ + nhrp_vc.$(OBJEXT) nhrp_peer.$(OBJEXT) nhrp_cache.$(OBJEXT) \ + nhrp_nhs.$(OBJEXT) nhrp_route.$(OBJEXT) \ + nhrp_shortcut.$(OBJEXT) nhrp_vty.$(OBJEXT) nhrp_main.$(OBJEXT) +nhrpd_OBJECTS = $(am_nhrpd_OBJECTS) +nhrpd_DEPENDENCIES = ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(nhrpd_SOURCES) +DIST_SOURCES = $(nhrpd_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CARES_CFLAGS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib -DQUAGGA_NO_DEPRECATED_INTERFACES +INSTALL_SDATA = @INSTALL@ -m 600 +AM_CFLAGS = $(PICFLAGS) #$(WERROR) +AM_LDFLAGS = $(PICLDFLAGS) +nhrpd_SOURCES = \ + zbuf.c \ + znl.c \ + resolver.c \ + linux.c \ + netlink_arp.c \ + netlink_gre.c \ + vici.c \ + reqid.c \ + nhrp_event.c \ + nhrp_packet.c \ + nhrp_interface.c \ + nhrp_vc.c \ + nhrp_peer.c \ + nhrp_cache.c \ + nhrp_nhs.c \ + nhrp_route.c \ + nhrp_shortcut.c \ + nhrp_vty.c \ + nhrp_main.c + +nhrpd_LDADD = ../lib/libzebra.la @LIBCAP@ @CARES_LIBS@ +noinst_HEADERS = debug.h netlink.h nhrpd.h vici.h znl.h list.h \ + nhrp_protocol.h os.h zbuf.h + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu nhrpd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu nhrpd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +nhrpd$(EXEEXT): $(nhrpd_OBJECTS) $(nhrpd_DEPENDENCIES) $(EXTRA_nhrpd_DEPENDENCIES) + @rm -f nhrpd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nhrpd_OBJECTS) $(nhrpd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_arp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_gre.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_cache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_event.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_interface.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_nhs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_packet.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_peer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_route.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_shortcut.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_vc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhrp_vty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reqid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vici.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zbuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/znl.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(sbindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool clean-sbinPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-sbinPROGRAMS install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +#dist_examples_DATA = nhrpd.conf.sample + +# 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/nhrpd/README.kernel b/nhrpd/README.kernel deleted file mode 100644 index 3fe1f65..0000000 --- a/nhrpd/README.kernel +++ /dev/null @@ -1,147 +0,0 @@ -LINUX KERNEL REQUIREMENTS -========================= - -The linux kernel has had various major regressions, performance -issues and subtle bugs (especially in pmtu). Here is a short list -of some -stable kernels that have been tested (at least briefly) -and seem to be working well with Quagga/NHRP: - 3.12.8 or later - 3.14.54 or later - 3.18.22 or later[1] - 4.4.52 or later - 4.9.30 or later - -[1] But you need to apply the following two backported commits: - 3cdaa5be9e ipv4: Don't increase PMTU with Datagram Too Big message - cb6ccf09d6 route: Use ipv4_mtu instead of raw rt_pmtu - -See below for list of known issues in various kernel versions. - -Kernels earlier than 3.12 need CONFIG_ARPD enabled in the configuration. -Many distributions do not enable it by default, and you may need to -compile your own kernel. - -KERNEL BUGS -=========== - -DMVPN and mGRE support in the kernel has been brittle. There are various -regressions in multiple kernel versions. - -This list tries to collect them to one source of information: - -- forward pmtu is disabled intentionally (but tunnel devices rely on it) - Broken since 3.14-rc1: - commit "ipv4: introduce ip_dst_mtu_maybe_forward and protect forwarding path against pmtu spoofing" - Workaround: - Set sysctl net.ipv4.ip_forward_use_pmtu=1 - (Should fix kernel to have this by default on for tunnel devices) - -- subtle path mtu mishandling issues - Broken since (uncertain) - Fixed in 4.1-rc2: - commit "ipv4: Don't increase PMTU with Datagram Too Big message." - commit "route: Use ipv4_mtu instead of raw rt_pmtu" - -- fragmentation of large packets inside tunnel not working - Broken since 3.11-rc1 - commit "ip_tunnels: Use skb-len to PMTU check." - Fixed in 3.14.54, 3.18.22, 4.1.9, 4.2-rc3 - commit "ip_tunnel: fix ipv4 pmtu check to honor inner ip header df" - -- ipsec will crash during xfrm gc - Broke since 3.15-rc1 - commit "flowcache: Make flow cache name space aware" - Fixed in 3.18.10, 4.0 - commit "flowcache: Fix kernel panic in flow_cache_flush_task" - -- TSO on GRE tunnels failed, and resulted in very slow performance - Broke since 3.14.24, 3.18-rc3 - commit "gre: Use inner mac length when computing tunnel length" - Fixed in 3.14.30, 3.18.4 - commit "gre: fix the inner mac header in nbma tunnel xmit path" - commit "gre: Set inner mac header in gro complete" - -- NAPI GRO handling was broken; causing immediate crash (32-bit only?) - Broken since 3.13-rc1 - commit "net: gro: allow to build full sized skb" - Fixed 3.14.5, 3.15-rc7 - commit "net: gro: make sure skb->cb[] initial content has not to be zero" - -- ip_gre dst caching broke NBMA GRE tunnels - Broken since 3.14-rc1 - Fixed in 3.14.5, 3.15-rc6 - commit "ipv4: ip_tunnels: disable cache for nbma gre tunnels" - -- Few packets can be lost when neighbor entry is in NUD_PROBE state, - and there is continuous traffic to it. - Broken since dawn of time - Fixed in 3.15-rc1 - commit "neigh: probe application via netlink in NUD_PROBE" - -- GRO was implemented for GRE, but the hw capabilities were not updated - correctly. In practice forwarding from non-GRE (physical) interface - to GRE interface with gro/gso/tx offloads enabled (also on the target - interface) does not work properly. - Broken around 3.9 to 3.11, need to check details. - -- recvfrom() returned incorrect NBMA address, breaking NAT detection - Broken since 3.10-rc1 - commit "GRE: Refactor GRE tunneling code." - Fixed in 3.10.27, 3.12.8, 3.13-rc7 - commit "ip_gre: fix msg_name parsing for recvfrom/recvmsg" - -- sendto() was broken causing opennhrp not work at all - Broken since 3.10-rc1 - commit "GRE: Refactor GRE tunneling code." - Fixed in 3.10.12, 3.11-rc6 - commit "ip_gre: fix ipgre_header to return correct offset" - -- PMTU was broken due to GRE driver rewrite - Broken since 3.10-rc1 - commit "GRE: Refactor GRE tunneling code." - Fixed in 3.11-rc1 - commit "ip_tunnels: Use skb-len to PMTU check." - -- PMTU was broken due to routing cache removal - Broken since 3.6-rc1 - commit "ipv4: Cache input routes in fib_info nexthops" - Fixed in 3.11-rc1 - commit "ipv4: use next hop exceptions also for input routes" - + 3 other commits - Patches exist for 3.10, but they were not approved to 3.10-stable. - -- Race condition during bootup: changing ARP flag did not flush - existing neighbor entries, causing problems if traffic was routed - to gre interface before opennhrp was running. - Broken since dawn of time - Fixed in 3.11-rc1 - commit "arp: flush arp cache on IFF_NOARP change" - -- Crash in IPsec - Broken since 3.9-rc1 - commit "xfrm: removes a superfluous check and add a statistic" - Fixed in 3.10-rc3 - commit "xfrm: properly handle invalid states as an error" - -- An incorrect ip_gre change broke NHRP traffic over GRE - Broken since 3.8-rc2 - commit "ip_gre: make ipgre_tunnel_xmit() not parse network header as IP unconditionally" - Fixed in 3.8.5, 3.9-rc4 - commit "Revert "ip_gre: make ipgre_tunnel_xmit() not parse network header as IP unconditionally"" - -- Multicast traffic over mGRE was broken. - Broken since 2.6.34-rc2 - commit "gre: fix hard header destination address checking" - Fixed in 2.6.39-rc2 - commit "net: gre: provide multicast mappings for ipv4 and ipv6" - -- Serious performance issues causing small throughput on medium to large DMVPN networks - Broken since dawn of time - Fixed in 2.6.35 - multiple commits rewriting ipsec caching - -- Even though around 2.6.24 is the first version where opennhrp started - to work, there has been various PMTU, performance, and functionality - bugs before 2.6.34. That's one of the first version I consider stable - wrt. to opennhrp functionality. - diff --git a/nhrpd/README.nhrpd b/nhrpd/README.nhrpd deleted file mode 100644 index af358fa..0000000 --- a/nhrpd/README.nhrpd +++ /dev/null @@ -1,140 +0,0 @@ -Quagga / NHRP Design and Configuration Notes -============================================ - -Quagga/NHRP is an NHRP (RFC2332) implementation for Linux. The primary -use case is to implement DMVPN. The aim is thus to be compatible with -Cisco DMVPN (and potentially with FlexVPN in the future). - - -Current Status --------------- - -Implemented: -- IPsec integration with strongSwan (requires patched strongSwan) -- IPv4 over IPv4 NBMA GRE -- IPv6 over IPv4 NBMA GRE -- majority of code exist; but is not tested -- Spoke (NHC) functionality -- Hub (NHS) functionality - -Not yet implemented: -- NHRP Authentication -- NHRP Groups -- Multicast support (OSPF will not work) -- Full Cisco FlexVPN compatibility (IKEv2 routing) - - -Routing Design --------------- - -In contrast to opennhrp routing design, Quagga/NHRP routes each NHRP -domain address individually (similar to Cisco FlexVPN). - -To create NBMA GRE tunnel you might use following: - ip tunnel add gre1 mode gre key 42 ttl 64 dev eth0 - ip addr add 10.255.255.2/32 dev gre1 - ip link set gre1 up - sysctl net.ipv4.ip_forward_use_pmtu=1 #for kernels>=3.14 - -This has two important differences compared to opennhrp setup: - 1. The 'tunnel add' now specifies physical device binding. Quagga/NHRP - wants to know stable protocol address to NBMA address mapping. Thus, - add 'dev ' binding, or specify 'local '. If - neither of this is specified, NHRP will not be enabled on the interface. - Alternatively you can skip 'dev' binding on tunnel if you allow - nhrpd to manage it using 'tunnel source' command (see below). - - 2. The 'addr add' now has host prefix. In opennhrp you would have used - the GRE subnet prefix length here instead, e.g. /24. - -Quagga/NHRP will automatically create additional host routes pointing to -gre1 when a connection with these hosts is established. The gre1 subnet -should be announced by routing protocol. This allows routing protocol -to decide which is the closest hub and get the gre addresses' traffic. - -The second benefit is that hubs can then easily exchange host prefixes -of directly connected gre addresses. And thus routing of gre addresses -inside hubs is based on routing protocol's shortest path choice -- not -on random choice from next hop server list. - - -Configuring nhrpd ------------------ - -The configuration is done using vtysh, and most commands do what they -do in Cisco. As minimal configuration example one can do: - configure terminal - interface gre1 - tunnel protection vici profile dmvpn - tunnel source eth0 - ip nhrp network-id 1 - ip nhrp shortcut - ip nhrp registration no-unique - ip nhrp nhs dynamic nbma hubs.example.com - -There's important notes about the "ip nhrp nhs" command: - - 1. The 'dynamic' works only against Cisco (or nhrpd), but is not - compatible with opennhrp. To use dynamic detection of opennhrp hub's - protocol address use the GRE broadcast address there. For the above - example of 10.255.255.0/24 the configuration should read instead: - ip nhrp nhs 10.255.255.255 nbma hubs.example.com - - 2. nbma works like opennhrp dynamic-map. That is, all of the - A-records are configured as NBMA addresses of different hubs, and - each hub protocol address will be dynamically detected. - - -Hub functionality ------------------ - -Sending Traffic Indication (redirect) notifications is now accomplished -using NFLOG. - -Use: -iptables -A FORWARD -i gre1 -o gre1 \ - -m hashlimit --hashlimit-upto 4/minute --hashlimit-burst 1 \ - --hashlimit-mode srcip,dstip --hashlimit-srcmask 16 --hashlimit-dstmask 16 \ - --hashlimit-name loglimit-0 -j NFLOG --nflog-group 1 --nflog-range 128 - -or similar to get rate-limited samples of the packets that match traffic -flow needing redirection. This kernel NFLOG target's nflog-group is configured -in global nhrp config with: - nhrp nflog-group 1 - -To start sending these traffic notices out from hubs, use the nhrp per-interface -directive: - ip nhrp redirect - -opennhrp used PF_PACKET and tried to create packet filter to get only -the packets of interest. Though, this was bad if shortcut fails to -establish (remote policy, or both are behind NAT or restrictive -firewalls), all of the relayaed traffic would match always. - - -Getting information via vtysh ------------------------------ - -Some commands of interest: - - show dmvpn - - show ip nhrp nhs - - show ip nhrp cache - - show ip nhrp shortcut - - show ip route nhrp - - clear ip nhrp cache - - clear ip nhrp shortcut - - -Integration with strongSwan ---------------------------- - -Contrary to opennhrp, Quagga/NHRP has tight integration with IKE daemon. -Currently strongSwan is supported using the VICI protocol. strongSwan -is connected using UNIX socket (hardcoded now as /var/run/charon.vici). -Thus nhrpd needs to be run as user that can open that file. - -Currently, you will need patched strongSwan. The working tree is at: - http://git.alpinelinux.org/cgit/user/tteras/strongswan/log/?h=tteras - -And the branch with patches against latest release are: - http://git.alpinelinux.org/cgit/user/tteras/strongswan/log/?h=tteras-release - diff --git a/nhrpd/nhrp-events.lua b/nhrpd/nhrp-events.lua deleted file mode 100755 index e5e3bbf..0000000 --- a/nhrpd/nhrp-events.lua +++ /dev/null @@ -1,272 +0,0 @@ -#!/usr/bin/lua5.2 - --- Example NHRP events processing script which validates --- NHRP registration GRE address against certificate subjectAltName IP --- and auto-creates BGP pairings and filters based on sbgp extensions. - --- Depends on lua5.2 lua5.2-posix lua5.2-cqueues lua5.2-ossl lua-asn1 - -local posix = require 'posix' -local struct = require 'struct' -local cq = require 'cqueues' -local cqs = require 'cqueues.socket' -local x509 = require 'openssl.x509' -local x509an = require 'openssl.x509.altname' -local rfc3779 = require 'asn1.rfc3779' - -local SOCK = "/var/run/nhrp-events.sock" -posix.unlink(SOCK) - -local loop = cq.new() -local nulfd = posix.open("/dev/null", posix.O_RDWR) -local listener = cqs.listen{path=SOCK} - -posix.chown(SOCK, "quagga", "quagga") -posix.setpid("u", "quagga") -posix.setpid("g", "quagga") -posix.openlog("nhrp-events", "np") - -function string.hex2bin(str) - return str:gsub('..', function(cc) return string.char(tonumber(cc, 16)) end) -end - -local function decode_ext(cert, name, tpe) - local ext = cert:getExtension(name) - if not ext then return end - return tpe.decode(ext:getData()) -end - -local function do_parse_cert(cert, out) - for type, value in pairs(cert:getSubjectAlt()) do - if type == 'IP' then - table.insert(out.GRE, value) - end - end - if #out.GRE == 0 then return end - - local asn = decode_ext(cert, 'sbgp-autonomousSysNum', rfc3779.ASIdentifiers) - if asn and asn.asnum and asn.asnum.asIdsOrRanges then - for _, as in ipairs(asn.asnum.asIdsOrRanges) do - if as.id then - out.AS = tonumber(as.id) - break - end - end - end - - local addrBlocks = decode_ext(cert, 'sbgp-ipAddrBlock', rfc3779.IPAddrBlocks) - for _, ab in ipairs(addrBlocks or {}) do - if ab.ipAddressChoice and ab.ipAddressChoice.addressesOrRanges then - for _, a in ipairs(ab.ipAddressChoice.addressesOrRanges) do - if a.addressPrefix then - table.insert(out.NET, a.addressPrefix) - end - end - end - end - - return true -end - -local function parse_cert(certhex) - local out = { - cn = "(no CN)", - AS = 0, - GRE = {}, - NET = {}, - } - local cert = x509.new(certhex:hex2bin(), 'der') - out.cn = tostring(cert:getSubject()) - -- Recognize hubs by certificate's CN to have OU=Hubs - out.hub = out.cn:match("/OU=Hubs/") and true or nil - do_parse_cert(cert, out) - return out -end - -local function execute(desc, cmd, ...) - local piper, pipew = posix.pipe() - if piper == nil then - return error("Pipe failed") - end - - local pid = posix.fork() - if pid == -1 then - return error("Fork failed") - end - if pid == 0 then - posix.close(piper) - posix.dup2(nulfd, 0) - posix.dup2(pipew, 1) - posix.dup2(nulfd, 2) - posix.execp(cmd, ...) - os.exit(1) - end - posix.close(pipew) - - -- This blocks -- perhaps should handle command executions in separate queue. - local output = {} - while true do - local d = posix.read(piper, 8192) - if d == nil or d == "" then break end - table.insert(output, d) - end - posix.close(piper) - - local _, reason, status = posix.wait(pid) - if status == 0 then - posix.syslog(6, ("Executed '%s' successfully"):format(desc)) - else - posix.syslog(3, ("Failed to execute '%s': %s %d"):format(desc, reason, status)) - end - return status, table.concat(output) -end - -local function configure_bgp(desc, ...) - local args = { - "-d", "bgpd", - "-c", "configure terminal", - } - for _, val in ipairs({...}) do - table.insert(args, "-c") - table.insert(args, val) - end - return execute(desc, "vtysh", table.unpack(args)) -end - -local last_bgp_reset = 0 - -local function bgp_reset(msg, local_cert) - local now = os.time() - if last_bgp_reset + 60 > now then return end - last_bgp_reset = now - - configure_bgp("spoke reset", - "route-map RTT-SET permit 10", "set metric rtt", "exit", - "route-map RTT-ADD permit 10", "set metric +rtt", "exit", - ("router bgp %d"):format(local_cert.AS), - "no neighbor hubs", - "neighbor hubs peer-group", - "neighbor hubs remote-as 65000", - "neighbor hubs ebgp-multihop 1", - "neighbor hubs disable-connected-check", - "neighbor hubs timers 10 30", - "neighbor hubs timers connect 10", - "neighbor hubs next-hop-self all", - "neighbor hubs soft-reconfiguration inbound", - "neighbor hubs route-map RTT-ADD in") -end - -local function bgp_nhs_up(msg, remote_cert, local_cert) - configure_bgp(("nhs-up %s"):format(msg.remote_addr), - ("router bgp %s"):format(local_cert.AS), - ("neighbor %s peer-group hubs"):format(msg.remote_addr)) -end - -local function bgp_nhs_down(msg, remote_cert, local_cert) - configure_bgp(("nhs-down %s"):format(msg.remote_addr), - ("router bgp %s"):format(local_cert.AS), - ("no neighbor %s"):format(msg.remote_addr)) -end - -local function bgp_create_spoke_rules(msg, remote_cert, local_cert) - if not local_cert.hub then return end - - local bgpcfg = {} - for seq, net in ipairs(remote_cert.NET) do - table.insert(bgpcfg, - ("ip prefix-list net-%s-in seq %d permit %s le %d"):format( - msg.remote_addr, seq * 5, net, - remote_cert.hub and 32 or 26)) - end - table.insert(bgpcfg, ("router bgp %s"):format(local_cert.AS)) - if remote_cert.hub then - table.insert(bgpcfg, ("neighbor %s peer-group hubs"):format(msg.remote_addr)) - elseif local_cert.AS == remote_cert.AS then - table.insert(bgpcfg, ("neighbor %s peer-group spoke-ibgp"):format(msg.remote_addr)) - else - table.insert(bgpcfg, ("neighbor %s remote-as %s"):format(msg.remote_addr, remote_cert.AS)) - table.insert(bgpcfg, ("neighbor %s peer-group spoke-ebgp"):format(msg.remote_addr)) - end - table.insert(bgpcfg, ("neighbor %s prefix-list net-%s-in in"):format(msg.remote_addr, msg.remote_addr)) - - local status, output = configure_bgp(("nhc-register %s"):format(msg.remote_addr), table.unpack(bgpcfg)) - if output:find("Cannot") then - posix.syslog(6, "BGP: "..output) - configure_bgp( - ("nhc-recreate %s"):format(msg.remote_addr), - ("router bgp %s"):format(local_cert.AS), - ("no neighbor %s"):format(msg.remote_addr), - table.unpack(bgpcfg)) - end -end - -local function handle_message(msg) - if msg.event ~= "authorize-binding" then return end - - -- Verify protocol address against certificate - local auth = false - local local_cert = parse_cert(msg.local_cert) - local remote_cert = parse_cert(msg.remote_cert) - for _, gre in pairs(remote_cert.GRE) do - if gre == msg.remote_addr then auth = true end - end - if not auth then - posix.syslog(3, ("GRE %s to NBMA %s DENIED (cert '%s', allows: %s)"):format( - msg.remote_addr, msg.remote_nbma, - remote_cert.cn, table.concat(remote_cert.GRE, " "))) - return "deny" - end - posix.syslog(6, ("GRE %s to NBMA %s authenticated for %s"):format( - msg.remote_addr, msg.remote_nbma, remote_cert.cn)) - - -- Automatic BGP binding for hub-spoke connections - if msg.type == "nhs" and msg.old_type ~= "nhs" then - if not local_cert.hub then - if tonumber(msg.num_nhs) == 0 and msg.vc_initiated == "yes" then - bgp_reset(msg, local_cert) - end - bgp_nhs_up(msg, remote_cert, local_cert) - else - bgp_create_spoke_rules(msg, remote_cert, local_cert) - end - elseif msg.type ~= "nhs" and msg.old_type == "nhs" then - bgp_nhs_down(msg, remote_cert, local_cert) - elseif msg.type == "dynamic" and msg.old_type ~= "dynamic" then - bgp_create_spoke_rules(msg, remote_cert, local_cert) - end - - return "accept" -end - -local function handle_connection(conn) - local msg = {} - for l in conn:lines() do - if l == "" then - res = handle_message(msg) - if msg.eventid then - conn:write(("eventid=%s\nresult=%s\n\n"):format(msg.eventid, res or "default")) - end - msg = {} - else - local key, value = l:match('([^=]*)=(.*)') - if key and value then - msg[key] = value - end - end - end - conn:close() -end - -loop:wrap(function() - while true do - local conn = listener:accept() - conn:setmode("b", "bl") - loop:wrap(function() - local ok, msg = pcall(handle_connection, conn) - if not ok then posix.syslog(3, msg) end - conn:close() - end) - end -end) - -print(loop:loop()) diff --git a/nhrpd/nhrp_main.c b/nhrpd/nhrp_main.c index 56ea271..1e3fee5 100644 --- a/nhrpd/nhrp_main.c +++ b/nhrpd/nhrp_main.c @@ -184,7 +184,6 @@ static struct quagga_signal_t sighandlers[] = { int main(int argc, char **argv) { - struct thread thread; const char *progname; /* Set umask before anything for security */ @@ -240,8 +239,7 @@ int main(int argc, char **argv) zlog_notice("nhrpd starting: vty@%d", vty_port); /* Main loop */ - while (thread_fetch(master, &thread)) - thread_call(&thread); + thread_main (master); return 0; } diff --git a/ospf6d/.gitignore b/ospf6d/.gitignore deleted file mode 100644 index 3fef0b7..0000000 --- a/ospf6d/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -Makefile.in -Makefile -*.o -*.patch -ospf6d -ospf6d.conf -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT -*.a diff --git a/ospf6d/Makefile.in b/ospf6d/Makefile.in new file mode 100644 index 0000000..266aa78 --- /dev/null +++ b/ospf6d/Makefile.in @@ -0,0 +1,817 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = ospf6d$(EXEEXT) +subdir = ospf6d +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libospf6_a_AR = $(AR) $(ARFLAGS) +libospf6_a_LIBADD = +am_libospf6_a_OBJECTS = ospf6_network.$(OBJEXT) \ + ospf6_message.$(OBJEXT) ospf6_lsa.$(OBJEXT) \ + ospf6_lsdb.$(OBJEXT) ospf6_top.$(OBJEXT) ospf6_area.$(OBJEXT) \ + ospf6_interface.$(OBJEXT) ospf6_neighbor.$(OBJEXT) \ + ospf6_flood.$(OBJEXT) ospf6_route.$(OBJEXT) \ + ospf6_intra.$(OBJEXT) ospf6_zebra.$(OBJEXT) \ + ospf6_spf.$(OBJEXT) ospf6_proto.$(OBJEXT) ospf6_asbr.$(OBJEXT) \ + ospf6_abr.$(OBJEXT) ospf6_snmp.$(OBJEXT) ospf6d.$(OBJEXT) +libospf6_a_OBJECTS = $(am_libospf6_a_OBJECTS) +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)" +PROGRAMS = $(sbin_PROGRAMS) +am__objects_1 = ospf6_network.$(OBJEXT) ospf6_message.$(OBJEXT) \ + ospf6_lsa.$(OBJEXT) ospf6_lsdb.$(OBJEXT) ospf6_top.$(OBJEXT) \ + ospf6_area.$(OBJEXT) ospf6_interface.$(OBJEXT) \ + ospf6_neighbor.$(OBJEXT) ospf6_flood.$(OBJEXT) \ + ospf6_route.$(OBJEXT) ospf6_intra.$(OBJEXT) \ + ospf6_zebra.$(OBJEXT) ospf6_spf.$(OBJEXT) \ + ospf6_proto.$(OBJEXT) ospf6_asbr.$(OBJEXT) ospf6_abr.$(OBJEXT) \ + ospf6_snmp.$(OBJEXT) ospf6d.$(OBJEXT) +am_ospf6d_OBJECTS = ospf6_main.$(OBJEXT) $(am__objects_1) +ospf6d_OBJECTS = $(am_ospf6d_OBJECTS) +ospf6d_DEPENDENCIES = ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libospf6_a_SOURCES) $(ospf6d_SOURCES) +DIST_SOURCES = $(libospf6_a_SOURCES) $(ospf6d_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +INSTALL_SDATA = @INSTALL@ -m 600 +AM_CFLAGS = $(WERROR) +noinst_LIBRARIES = libospf6.a +libospf6_a_SOURCES = \ + ospf6_network.c ospf6_message.c ospf6_lsa.c ospf6_lsdb.c \ + ospf6_top.c ospf6_area.c ospf6_interface.c ospf6_neighbor.c \ + ospf6_flood.c ospf6_route.c ospf6_intra.c ospf6_zebra.c \ + ospf6_spf.c ospf6_proto.c ospf6_asbr.c ospf6_abr.c ospf6_snmp.c \ + ospf6d.c + +noinst_HEADERS = \ + ospf6_network.h ospf6_message.h ospf6_lsa.h ospf6_lsdb.h \ + ospf6_top.h ospf6_area.h ospf6_interface.h ospf6_neighbor.h \ + ospf6_flood.h ospf6_route.h ospf6_intra.h ospf6_zebra.h \ + ospf6_spf.h ospf6_proto.h ospf6_asbr.h ospf6_abr.h ospf6_snmp.h \ + ospf6d.h + +ospf6d_SOURCES = \ + ospf6_main.c $(libospf6_a_SOURCES) + +ospf6d_LDADD = ../lib/libzebra.la @LIBCAP@ +examplesdir = $(exampledir) +dist_examples_DATA = ospf6d.conf.sample +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ospf6d/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ospf6d/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libospf6.a: $(libospf6_a_OBJECTS) $(libospf6_a_DEPENDENCIES) $(EXTRA_libospf6_a_DEPENDENCIES) + $(AM_V_at)-rm -f libospf6.a + $(AM_V_AR)$(libospf6_a_AR) libospf6.a $(libospf6_a_OBJECTS) $(libospf6_a_LIBADD) + $(AM_V_at)$(RANLIB) libospf6.a +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +ospf6d$(EXEEXT): $(ospf6d_OBJECTS) $(ospf6d_DEPENDENCIES) $(EXTRA_ospf6d_DEPENDENCIES) + @rm -f ospf6d$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ospf6d_OBJECTS) $(ospf6d_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +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_flood.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_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_proto.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_route.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf6_snmp.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@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool clean-noinstLIBRARIES \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES clean-sbinPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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/OSPFv3-MIB.txt b/ospf6d/OSPFv3-MIB.txt deleted file mode 100644 index 258f533..0000000 --- a/ospf6d/OSPFv3-MIB.txt +++ /dev/null @@ -1,3951 +0,0 @@ - OSPFV3-MIB DEFINITIONS ::= BEGIN - - IMPORTS - MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, mib-2, - Counter32, Gauge32, Integer32, Unsigned32 - FROM SNMPv2-SMI - TEXTUAL-CONVENTION, TruthValue, RowStatus, TimeStamp - FROM SNMPv2-TC - MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP - FROM SNMPv2-CONF - InterfaceIndex - FROM IF-MIB - InetAddressType, InetAddress, InetAddressPrefixLength, - InetAddressIPv6 - FROM INET-ADDRESS-MIB - Metric, BigMetric, Status, - HelloRange, DesignatedRouterPriority - FROM OSPF-MIB; - - ospfv3MIB MODULE-IDENTITY - LAST-UPDATED "200908130000Z" - ORGANIZATION "IETF OSPF Working Group" - CONTACT-INFO - "WG E-Mail: ospf@ietf.org - WG Chairs: Acee Lindem - acee@redback.com - - Abhay Roy - akr@cisco.com - - Editors: Dan Joyal - Nortel - 600 Technology Park Drive - Billerica, MA 01821, USA - djoyal@nortel.com - - Vishwas Manral - IP Infusion - Almora, Uttarakhand - India - vishwas@ipinfusion.com" - DESCRIPTION - "The MIB module for OSPF version 3. - - Copyright (c) 2009 IETF Trust and the persons - identified as authors of the code. All rights - reserved. - - Redistribution and use in source and binary forms, with - or without modification, are permitted provided that - the following conditions are met: - - - Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - - - Redistributions in binary form must reproduce the - above copyright notice, this list of conditions and - the following disclaimer in the documentation and/or - other materials provided with the distribution. - - - Neither the name of Internet Society, IETF or IETF - Trust, nor the names of specific contributors, may be - used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - This version of this MIB module is part of RFC 5643; - see the RFC itself for full legal notices." - - REVISION "200908130000Z" - DESCRIPTION - "Initial version, published as RFC 5643" - ::= { mib-2 191 } - - -- Textual conventions - - Ospfv3UpToRefreshIntervalTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "The values one might be able to configure for - variables bounded by the Refresh Interval." - REFERENCE - "OSPF Version 2, Appendix B, Architectural Constants" - SYNTAX Unsigned32 (1..1800) - - Ospfv3DeadIntervalRangeTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "The range, in seconds, of dead interval value." - REFERENCE - "OSPF for IPv6, Appendix C.3, Router Interface - Parameters" - SYNTAX Unsigned32 (1..'FFFF'h) - - Ospfv3RouterIdTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "A 32-bit, unsigned integer uniquely identifying the - router in the Autonomous System. To ensure - uniqueness, this may default to the value of one of - the router's IPv4 host addresses if IPv4 is - configured on the router." - REFERENCE - "OSPF for IPv6, Appendix C.1, Global Parameters" - SYNTAX Unsigned32 (1..'FFFFFFFF'h) - - Ospfv3LsIdTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "A unique 32-bit identifier of the piece of the - routing domain that is being described by a link - state advertisement. In contrast to OSPFv2, the - Link State ID (LSID) has no addressing semantics." - REFERENCE - "OSPF Version 2, Section 12.1.4, Link State ID" - SYNTAX Unsigned32 (1..'FFFFFFFF'h) - - Ospfv3AreaIdTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "An OSPFv3 Area Identifier. A value of zero - identifies the backbone area." - REFERENCE - "OSPF for IPv6, Appendix C.3 Router Interface - Parameters" - SYNTAX Unsigned32 (0..'FFFFFFFF'h) - - Ospfv3IfInstIdTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "An OSPFv3 Interface Instance ID." - REFERENCE - "OSPF for IPv6, Appendix C.3, Router Interface - Parameters" - SYNTAX Unsigned32 (0..255) - - Ospfv3LsaSequenceTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "The sequence number field is a signed 32-bit - integer. It is used to detect old and duplicate - link state advertisements. The space of - sequence numbers is linearly ordered. The - larger the sequence number, the more recent the - advertisement." - REFERENCE - "OSPF Version 2, Section 12.1.6, LS sequence - number" - SYNTAX Integer32 - - Ospfv3LsaAgeTC ::= TEXTUAL-CONVENTION - DISPLAY-HINT "d" - STATUS current - DESCRIPTION - "The age of the link state advertisement in - seconds. The high-order bit of the LS age - field is considered the DoNotAge bit for - support of on-demand circuits." - REFERENCE - "OSPF Version 2, Section 12.1.1, LS age; - Extending OSPF to Support Demand Circuits, - Section 2.2, The LS age field" - SYNTAX Unsigned32 (0..3600 | 32768..36368) - - -- Top-level structure of MIB - ospfv3Notifications OBJECT IDENTIFIER ::= { ospfv3MIB 0 } - ospfv3Objects OBJECT IDENTIFIER ::= { ospfv3MIB 1 } - ospfv3Conformance OBJECT IDENTIFIER ::= { ospfv3MIB 2 } - - -- OSPFv3 General Variables - - -- These parameters apply globally to the Router's - -- OSPFv3 Process. - - ospfv3GeneralGroup OBJECT IDENTIFIER ::= { ospfv3Objects 1 } - - ospfv3RouterId OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "A 32-bit unsigned integer uniquely identifying - the router in the Autonomous System. To ensure - uniqueness, this may default to the 32-bit - unsigned integer representation of one of - the router's IPv4 interface addresses (if IPv4 - is configured on the router). - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - REFERENCE - "OSPF for IPv6, Appendix C.1, Global Parameters" - ::= { ospfv3GeneralGroup 1 } - - ospfv3AdminStatus OBJECT-TYPE - SYNTAX Status - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "The administrative status of OSPFv3 in the - router. The value 'enabled' denotes that the - OSPFv3 Process is active on at least one - interface; 'disabled' disables it on all - interfaces. - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - ::= { ospfv3GeneralGroup 2 } - - ospfv3VersionNumber OBJECT-TYPE - SYNTAX INTEGER { version3 (3) } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The version number of OSPF for IPv6 is 3." - ::= { ospfv3GeneralGroup 3 } - - ospfv3AreaBdrRtrStatus OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "A flag to denote whether this router is an area - border router. The value of this object is true (1) - when the router is an area border router." - REFERENCE - "OSPF Version 2, Section 3, Splitting the AS into - Areas" - ::= { ospfv3GeneralGroup 4 } - - ospfv3ASBdrRtrStatus OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "A flag to note whether this router is - configured as an Autonomous System border router. - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - REFERENCE - "OSPF Version 2, Section 3.3, Classification of - routers" - ::= { ospfv3GeneralGroup 5 } - - ospfv3AsScopeLsaCount OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of AS-scope (e.g., AS-External) link state - advertisements in the link state database." - ::= { ospfv3GeneralGroup 6 } - - ospfv3AsScopeLsaCksumSum OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The 32-bit unsigned sum of the LS checksums of - the AS-scoped link state advertisements - contained in the link state database. This sum - can be used to determine if there has been a - change in a router's link state database or - to compare the link state database of two - routers." - ::= { ospfv3GeneralGroup 7 } - - ospfv3OriginateNewLsas OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of new link state advertisements - that have been originated. This number is - incremented each time the router originates a new - LSA. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3GeneralGroup 8 } - - ospfv3RxNewLsas OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of link state advertisements - received that are determined to be new - instantiations. This number does not include - newer instantiations of self-originated link state - advertisements. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3GeneralGroup 9 } - - ospfv3ExtLsaCount OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of External (LS type 0x4005) in the - link state database." - ::= { ospfv3GeneralGroup 10 } - - ospfv3ExtAreaLsdbLimit OBJECT-TYPE - SYNTAX Integer32 (-1..'7FFFFFFF'h) - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "The maximum number of non-default - AS-external-LSA entries that can be stored in the - link state database. If the value is -1, then - there is no limit. - - When the number of non-default AS-external-LSAs - in a router's link state database reaches - ospfv3ExtAreaLsdbLimit, the router enters Overflow - state. The router never holds more than - ospfv3ExtAreaLsdbLimit non-default AS-external-LSAs - in its database. ospfv3ExtAreaLsdbLimit MUST be set - identically in all routers attached to the OSPFv3 - backbone and/or any regular OSPFv3 area (i.e., - OSPFv3 stub areas and not-so-stubby-areas (NSSAs) - are excluded). - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - ::= { ospfv3GeneralGroup 11 } - - ospfv3ExitOverflowInterval OBJECT-TYPE - SYNTAX Unsigned32 - UNITS "seconds" - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "The number of seconds that, after entering - Overflow state, a router will attempt to leave - Overflow state. This allows the router to again - originate non-default, AS-External-LSAs. When - set to 0, the router will not leave Overflow - state until restarted. - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - ::= { ospfv3GeneralGroup 12 } - - ospfv3DemandExtensions OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "The router's support for demand circuits. - The value of this object is true (1) when - demand circuits are supported. - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - REFERENCE - "OSPF Version 2; Extending OSPF to Support Demand - Circuits" - ::= { ospfv3GeneralGroup 13 } - - ospfv3ReferenceBandwidth OBJECT-TYPE - SYNTAX Unsigned32 - UNITS "kilobits per second" - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "Reference bandwidth in kilobits per second for - calculating default interface metrics. The - default value is 100,000 KBPS (100 MBPS). - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - REFERENCE - "OSPF Version 2, Appendix C.3, Router interface - parameters" - DEFVAL { 100000 } - ::= { ospfv3GeneralGroup 14 } - - ospfv3RestartSupport OBJECT-TYPE - SYNTAX INTEGER { none(1), - plannedOnly(2), - plannedAndUnplanned(3) - } - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "The router's support for OSPF graceful restart. - Options include no restart support, only planned - - restarts, or both planned and unplanned restarts. - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - REFERENCE "Graceful OSPF Restart, Appendix B.1, Global - Parameters (Minimum subset)" - ::= { ospfv3GeneralGroup 15 } - - ospfv3RestartInterval OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "Configured OSPF graceful restart timeout interval. - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - REFERENCE "Graceful OSPF Restart, Appendix B.1, Global - Parameters (Minimum subset)" - DEFVAL { 120 } - ::= { ospfv3GeneralGroup 16 } - - ospfv3RestartStrictLsaChecking OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "Indicates if strict LSA checking is enabled for - graceful restart. A value of true (1) indicates that - strict LSA checking is enabled. - - This object is persistent, and when written, - the entity SHOULD save the change to non-volatile - storage." - REFERENCE "Graceful OSPF Restart, Appendix B.2, Global - Parameters (Optional)" - DEFVAL { true } - ::= { ospfv3GeneralGroup 17 } - - ospfv3RestartStatus OBJECT-TYPE - SYNTAX INTEGER { notRestarting(1), - plannedRestart(2), - unplannedRestart(3) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The current status of OSPF graceful restart capability." - ::= { ospfv3GeneralGroup 18 } - - ospfv3RestartAge OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Remaining time in the current OSPF graceful restart - interval." - ::= { ospfv3GeneralGroup 19 } - - ospfv3RestartExitReason OBJECT-TYPE - SYNTAX INTEGER { none(1), - inProgress(2), - completed(3), - timedOut(4), - topologyChanged(5) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Describes the outcome of the last attempt at a - graceful restart. - - none: no restart has yet been attempted. - inProgress: a restart attempt is currently underway. - completed: the last restart completed successfully. - timedOut: the last restart timed out. - topologyChanged: the last restart was aborted due to - a topology change." - ::= { ospfv3GeneralGroup 20 } - - ospfv3NotificationEnable OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "This object provides a coarse level of control - over the generation of OSPFv3 notifications. - - If this object is set to true (1), then it enables - the generation of OSPFv3 notifications. If it is - set to false (2), these notifications are not - generated. - - This object is persistent, and when written, the - entity SHOULD save the change to non-volatile - storage." - ::= { ospfv3GeneralGroup 21 } - -ospfv3StubRouterSupport OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The router's support for stub router functionality. An - object value of true (1) indicates that stub router - functionality is supported." - REFERENCE - "OSPF Stub Router Advertisement" - ::= { ospfv3GeneralGroup 22 } - - ospfv3StubRouterAdvertisement OBJECT-TYPE - SYNTAX INTEGER { - doNotAdvertise(1), - advertise(2) - } - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "This object controls the advertisement of - stub LSAs by the router. The value - doNotAdvertise (1) will result in the advertisement - of standard LSAs and is the default value. - - This object is persistent, and when written, - the entity SHOULD save the change to non-volatile - storage." - REFERENCE - "OSPF Stub Router Advertisement, Section 2, Proposed - Solution" - DEFVAL { doNotAdvertise } - ::= { ospfv3GeneralGroup 23 } - -ospfv3DiscontinuityTime OBJECT-TYPE - SYNTAX TimeStamp - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of sysUpTime on the most recent occasion - at which any one of this MIB's counters suffered - a discontinuity. - - If no such discontinuities have occurred since the last - re-initialization of the local management subsystem, - then this object contains a zero value." - ::= { ospfv3GeneralGroup 24 } - - ospfv3RestartTime OBJECT-TYPE - SYNTAX TimeStamp - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of sysUpTime on the most recent occasion - at which the ospfv3RestartExitReason was updated." - ::= { ospfv3GeneralGroup 25 } - - -- The OSPFv3 Area Data Structure contains information - -- regarding the various areas. The interfaces and - -- virtual links are configured as part of these areas. - -- Area 0, by definition, is the backbone area. - - ospfv3AreaTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3AreaEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information describing the configured - parameters and cumulative statistics of the router's - attached areas. The interfaces and - virtual links are configured as part of these areas. - Area 0, by definition, is the backbone area." - REFERENCE - "OSPF Version 2, Section 6, The Area Data - Structure" - ::= { ospfv3Objects 2 } - - ospfv3AreaEntry OBJECT-TYPE - SYNTAX Ospfv3AreaEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information describing the configured - parameters and cumulative statistics of one of the - router's attached areas. - - The information in this table is persistent, - and when written, the entity SHOULD save the a - change to non-volatile storage." - INDEX { ospfv3AreaId } - ::= { ospfv3AreaTable 1 } - - Ospfv3AreaEntry ::= SEQUENCE { - ospfv3AreaId - Ospfv3AreaIdTC, - ospfv3AreaImportAsExtern - INTEGER, - ospfv3AreaSpfRuns - Counter32, - ospfv3AreaBdrRtrCount - Gauge32, - ospfv3AreaAsBdrRtrCount - Gauge32, - ospfv3AreaScopeLsaCount - Gauge32, - ospfv3AreaScopeLsaCksumSum - Unsigned32, - ospfv3AreaSummary - INTEGER, - ospfv3AreaRowStatus - RowStatus, - ospfv3AreaStubMetric - BigMetric, - ospfv3AreaNssaTranslatorRole - INTEGER, - ospfv3AreaNssaTranslatorState - INTEGER, - ospfv3AreaNssaTranslatorStabInterval - Unsigned32, - ospfv3AreaNssaTranslatorEvents - Counter32, - ospfv3AreaStubMetricType - INTEGER, - ospfv3AreaTEEnabled - TruthValue - } - - ospfv3AreaId OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A 32-bit unsigned integer uniquely identifying an area. - Area ID 0 is used for the OSPFv3 backbone." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - ::= { ospfv3AreaEntry 1 } - - ospfv3AreaImportAsExtern OBJECT-TYPE - SYNTAX INTEGER { - importExternal(1), -- normal area - importNoExternal(2), -- stub area - importNssa(3) -- not-so-stubby-area - } - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Indicates whether an area is a stub area, NSSA, or - standard area. AS-scope LSAs are not imported into stub - areas or NSSAs. NSSAs import AS-External data as NSSA - LSAs that have Area-scope." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - DEFVAL { importExternal } - ::= { ospfv3AreaEntry 2 } - - ospfv3AreaSpfRuns OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of times that the intra-area route - table has been calculated using this area's - link state database. This is typically done - using Dijkstra's algorithm. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3AreaEntry 3 } - - ospfv3AreaBdrRtrCount OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The total number of area border routers - reachable within this area. This is initially zero, - and is calculated in each Shortest Path First (SPF) - pass." - DEFVAL { 0 } - ::= { ospfv3AreaEntry 4 } - - ospfv3AreaAsBdrRtrCount OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The total number of Autonomous System border - routers reachable within this area. This is - initially zero, and is calculated in each SPF - pass." - DEFVAL { 0 } - ::= { ospfv3AreaEntry 5 } - - ospfv3AreaScopeLsaCount OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The total number of Area-scope link state - advertisements in this area's link state - database." - DEFVAL { 0 } - ::= { ospfv3AreaEntry 6 } - - ospfv3AreaScopeLsaCksumSum OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The 32-bit unsigned sum of the Area-scope link state - advertisements' LS checksums contained in this - area's link state database. The sum can be used - to determine if there has been a change in a - router's link state database or to compare the - link state database of two routers." - ::= { ospfv3AreaEntry 7 } - - ospfv3AreaSummary OBJECT-TYPE - SYNTAX INTEGER { - noAreaSummary(1), - sendAreaSummary(2) - } - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The variable ospfv3AreaSummary controls the - import of Inter-Area LSAs into stub and - NSSA areas. It has no effect on other areas. - - If it is noAreaSummary, the router will neither - originate nor propagate Inter-Area LSAs into the - stub or NSSA area. It will only advertise a - default route. - - If it is sendAreaSummary, the router will both - summarize and propagate Inter-Area LSAs." - DEFVAL { sendAreaSummary } - ::= { ospfv3AreaEntry 8 } - - ospfv3AreaRowStatus OBJECT-TYPE - SYNTAX RowStatus - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This object permits management of the table by - facilitating actions such as row creation, - construction, and destruction. - - The value of this object has no effect on - whether other objects in this conceptual row can be - modified." - ::= { ospfv3AreaEntry 9 } - - ospfv3AreaStubMetric OBJECT-TYPE - SYNTAX BigMetric - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The metric value advertised for the default route - into stub and NSSA areas. By default, this equals the - least metric among the interfaces to other areas." - ::= { ospfv3AreaEntry 10 } - - ospfv3AreaNssaTranslatorRole OBJECT-TYPE - SYNTAX INTEGER { always(1), candidate(2) } - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Indicates an NSSA border router's policy to - perform NSSA translation of NSSA-LSAs into - AS-External-LSAs." - DEFVAL { candidate } - ::= { ospfv3AreaEntry 11 } - - ospfv3AreaNssaTranslatorState OBJECT-TYPE - SYNTAX INTEGER { - enabled(1), - elected(2), - disabled(3) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Indicates if and how an NSSA border router is - performing NSSA translation of NSSA-LSAs into - AS-External-LSAs. When this object is set to - 'enabled', the NSSA border router's - ospfv3AreaNssaTranslatorRole has been set to 'always'. - When this object is set to 'elected', a candidate - NSSA border router is translating NSSA-LSAs into - AS-External-LSAs. When this object is set to - 'disabled', a candidate NSSA Border router is NOT - translating NSSA-LSAs into AS-External-LSAs." - ::= { ospfv3AreaEntry 12 } - - ospfv3AreaNssaTranslatorStabInterval OBJECT-TYPE - SYNTAX Unsigned32 - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The stability interval defined as the number of - seconds after an elected translator determines its - services are no longer required that it should - continue to perform its translation duties." - DEFVAL { 40 } - ::= { ospfv3AreaEntry 13 } - - ospfv3AreaNssaTranslatorEvents OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Indicates the number of Translator state changes - that have occurred since the last start-up of the - OSPFv3 routing process. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3AreaEntry 14 } - - ospfv3AreaStubMetricType OBJECT-TYPE - SYNTAX INTEGER { - ospfv3Metric(1), -- OSPF Metric - comparableCost(2), -- external type 1 - nonComparable(3) -- external type 2 - } - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This variable assigns the type of metric - advertised as a default route." - DEFVAL { ospfv3Metric } - ::= { ospfv3AreaEntry 15 } - - ospfv3AreaTEEnabled OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Indicates whether or not traffic engineering - is enabled in the area. The object is set - to the value true (1) to enable traffic engineering. - Traffic engineering is disabled by default." - DEFVAL { false } - ::= { ospfv3AreaEntry 16 } - - -- OSPFv3 AS-Scope Link State Database - - ospfv3AsLsdbTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3AsLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The OSPFv3 Process's AS-scope link state database - (LSDB). The LSDB contains the AS-scope link state - advertisements from throughout the areas that the - device is attached to." - ::= { ospfv3Objects 3 } - - ospfv3AsLsdbEntry OBJECT-TYPE - SYNTAX Ospfv3AsLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A single AS-scope link state advertisement." - INDEX { ospfv3AsLsdbType, - ospfv3AsLsdbRouterId, - ospfv3AsLsdbLsid } - ::= { ospfv3AsLsdbTable 1 } - - Ospfv3AsLsdbEntry ::= SEQUENCE { - ospfv3AsLsdbType - Unsigned32, - ospfv3AsLsdbRouterId - Ospfv3RouterIdTC, - ospfv3AsLsdbLsid - Ospfv3LsIdTC, - ospfv3AsLsdbSequence - Ospfv3LsaSequenceTC, - ospfv3AsLsdbAge - Ospfv3LsaAgeTC, - ospfv3AsLsdbChecksum - Integer32, - ospfv3AsLsdbAdvertisement - OCTET STRING, - ospfv3AsLsdbTypeKnown - TruthValue - } - - ospfv3AsLsdbType OBJECT-TYPE - SYNTAX Unsigned32(0..'FFFFFFFF'h) - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The type of the link state advertisement. - Each link state type has a separate - advertisement format. AS-scope LSAs not recognized - by the router may be stored in the database." - ::= { ospfv3AsLsdbEntry 1 } - - ospfv3AsLsdbRouterId OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The 32-bit number that uniquely identifies the - originating router in the Autonomous System." - REFERENCE - "OSPF Version 2, Appendix C.1, Global parameters" - ::= { ospfv3AsLsdbEntry 2 } - - ospfv3AsLsdbLsid OBJECT-TYPE - SYNTAX Ospfv3LsIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Link State ID is an LS type-specific field - containing a unique identifier; - it identifies the piece of the routing domain - that is being described by the advertisement. - In contrast to OSPFv2, the LSID has no - addressing semantics." - ::= { ospfv3AsLsdbEntry 3 } - - -- Note that the OSPF sequence number is a 32-bit signed - -- integer. It starts with the value '80000001'h - -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. - -- Thus, a typical sequence number will be very negative. - - ospfv3AsLsdbSequence OBJECT-TYPE - SYNTAX Ospfv3LsaSequenceTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The sequence number field is a signed 32-bit - integer. It is used to detect old and duplicate - link state advertisements. The space of - sequence numbers is linearly ordered. The - larger the sequence number, the more recent the - advertisement." - REFERENCE - "OSPF Version 2, Section 12.1.6, LS sequence - number" - ::= { ospfv3AsLsdbEntry 4 } - - ospfv3AsLsdbAge OBJECT-TYPE - SYNTAX Ospfv3LsaAgeTC - UNITS "seconds" - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the age of the link state - advertisement in seconds. The high-order bit - of the LS age field is considered the DoNotAge - bit for support of on-demand circuits." - REFERENCE - "OSPF Version 2, Section 12.1.1, LS age; - Extending OSPF to Support Demand Circuits, - Section 2.2, The LS age field." - ::= { ospfv3AsLsdbEntry 5 } - - ospfv3AsLsdbChecksum OBJECT-TYPE - SYNTAX Integer32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the checksum of the complete - contents of the advertisement, excepting the - age field. The age field is excepted so that - an advertisement's age can be incremented - without updating the checksum. The checksum - used is the same that is used for ISO - connectionless datagrams; it is commonly - referred to as the Fletcher checksum." - REFERENCE - "OSPF Version 2, Section 12.1.7, LS checksum" - ::= { ospfv3AsLsdbEntry 6 } - - ospfv3AsLsdbAdvertisement OBJECT-TYPE - SYNTAX OCTET STRING (SIZE (1..65535)) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The entire link state advertisement, including - its header." - ::= { ospfv3AsLsdbEntry 7 } - - ospfv3AsLsdbTypeKnown OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value true (1) indicates that the LSA type - is recognized by this router." - ::= { ospfv3AsLsdbEntry 8 } - - -- OSPFv3 Area-Scope Link State Database - - ospfv3AreaLsdbTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3AreaLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The OSPFv3 Process's Area-scope LSDB. - The LSDB contains the Area-scope link state - advertisements from throughout the area that the - device is attached to." - ::= { ospfv3Objects 4 } - - ospfv3AreaLsdbEntry OBJECT-TYPE - SYNTAX Ospfv3AreaLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A single Area-scope link state advertisement." - INDEX { ospfv3AreaLsdbAreaId, - ospfv3AreaLsdbType, - ospfv3AreaLsdbRouterId, - ospfv3AreaLsdbLsid } - ::= { ospfv3AreaLsdbTable 1 } - - Ospfv3AreaLsdbEntry ::= SEQUENCE { - ospfv3AreaLsdbAreaId - Ospfv3AreaIdTC, - ospfv3AreaLsdbType - Unsigned32, - ospfv3AreaLsdbRouterId - Ospfv3RouterIdTC, - ospfv3AreaLsdbLsid - Ospfv3LsIdTC, - ospfv3AreaLsdbSequence - Ospfv3LsaSequenceTC, - ospfv3AreaLsdbAge - Ospfv3LsaAgeTC, - ospfv3AreaLsdbChecksum - Integer32, - ospfv3AreaLsdbAdvertisement - OCTET STRING, - ospfv3AreaLsdbTypeKnown - TruthValue - } - - ospfv3AreaLsdbAreaId OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The 32-bit identifier of the Area from which the - LSA was received." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - ::= { ospfv3AreaLsdbEntry 1 } - - ospfv3AreaLsdbType OBJECT-TYPE - SYNTAX Unsigned32(0..'FFFFFFFF'h) - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The type of the link state advertisement. - Each link state type has a separate - advertisement format. Area-scope LSAs unrecognized - by the router are also stored in this database." - ::= { ospfv3AreaLsdbEntry 2 } - - ospfv3AreaLsdbRouterId OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The 32-bit number that uniquely identifies the - originating router in the Autonomous System." - REFERENCE - "OSPF Version 2, Appendix C.1, Global parameters" - ::= { ospfv3AreaLsdbEntry 3 } - - ospfv3AreaLsdbLsid OBJECT-TYPE - SYNTAX Ospfv3LsIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Link State ID is an LS type-specific field - containing a unique identifier; - it identifies the piece of the routing domain - that is being described by the advertisement. - In contrast to OSPFv2, the LSID has no - addressing semantics." - ::= { ospfv3AreaLsdbEntry 4 } - - -- Note that the OSPF sequence number is a 32-bit signed - -- integer. It starts with the value '80000001'h - -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. - -- Thus, a typical sequence number will be very negative. - - ospfv3AreaLsdbSequence OBJECT-TYPE - SYNTAX Ospfv3LsaSequenceTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The sequence number field is a signed 32-bit - integer. It is used to detect old and - duplicate link state advertisements. The space - of sequence numbers is linearly ordered. The - larger the sequence number, the more recent the - advertisement." - REFERENCE - "OSPF Version 2, Section 12.1.6, LS sequence - number" - ::= { ospfv3AreaLsdbEntry 5 } - - ospfv3AreaLsdbAge OBJECT-TYPE - SYNTAX Ospfv3LsaAgeTC - UNITS "seconds" - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the age of the link state - advertisement in seconds. The high-order bit - of the LS age field is considered the DoNotAge - bit for support of on-demand circuits." - REFERENCE - "OSPF Version 2, Section 12.1.1, LS age; - Extending OSPF to Support Demand Circuits, - Section 2.2, The LS age field." - ::= { ospfv3AreaLsdbEntry 6 } - - ospfv3AreaLsdbChecksum OBJECT-TYPE - SYNTAX Integer32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the checksum of the complete - contents of the advertisement, excepting the - age field. The age field is excepted so that - an advertisement's age can be incremented - without updating the checksum. The checksum - used is the same that is used for ISO - connectionless datagrams; it is commonly - referred to as the Fletcher checksum." - REFERENCE - "OSPF Version 2, Section 12.1.7, LS checksum" - ::= { ospfv3AreaLsdbEntry 7 } - - ospfv3AreaLsdbAdvertisement OBJECT-TYPE - SYNTAX OCTET STRING (SIZE (1..65535)) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The entire link state advertisement, including - its header." - ::= { ospfv3AreaLsdbEntry 8 } - - ospfv3AreaLsdbTypeKnown OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value true (1) indicates that the LSA type is - recognized by this router." - ::= { ospfv3AreaLsdbEntry 9 } - - -- OSPFv3 Link-Scope Link State Database, for non-virtual interfaces - - ospfv3LinkLsdbTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3LinkLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The OSPFv3 Process's Link-scope LSDB for non-virtual - interfaces. The LSDB contains the Link-scope link - state advertisements from the interfaces that the - device is attached to." - ::= { ospfv3Objects 5 } - - ospfv3LinkLsdbEntry OBJECT-TYPE - SYNTAX Ospfv3LinkLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A single Link-scope link state advertisement." - INDEX { ospfv3LinkLsdbIfIndex, - ospfv3LinkLsdbIfInstId, - ospfv3LinkLsdbType, - ospfv3LinkLsdbRouterId, - ospfv3LinkLsdbLsid } - ::= { ospfv3LinkLsdbTable 1 } - - Ospfv3LinkLsdbEntry ::= SEQUENCE { - ospfv3LinkLsdbIfIndex - InterfaceIndex, - ospfv3LinkLsdbIfInstId - Ospfv3IfInstIdTC, - ospfv3LinkLsdbType - Unsigned32, - ospfv3LinkLsdbRouterId - Ospfv3RouterIdTC, - ospfv3LinkLsdbLsid - Ospfv3LsIdTC, - ospfv3LinkLsdbSequence - Ospfv3LsaSequenceTC, - ospfv3LinkLsdbAge - Ospfv3LsaAgeTC, - ospfv3LinkLsdbChecksum - Integer32, - ospfv3LinkLsdbAdvertisement - OCTET STRING, - ospfv3LinkLsdbTypeKnown - TruthValue - } - - ospfv3LinkLsdbIfIndex OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The identifier of the link from which the LSA - was received." - ::= { ospfv3LinkLsdbEntry 1 } - - ospfv3LinkLsdbIfInstId OBJECT-TYPE - SYNTAX Ospfv3IfInstIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The identifier of the interface instance from - which the LSA was received." - ::= { ospfv3LinkLsdbEntry 2 } - - ospfv3LinkLsdbType OBJECT-TYPE - SYNTAX Unsigned32(0..'FFFFFFFF'h) - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The type of the link state advertisement. - Each link state type has a separate - advertisement format. Link-scope LSAs unrecognized - by the router are also stored in this database." - ::= { ospfv3LinkLsdbEntry 3 } - - ospfv3LinkLsdbRouterId OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The 32-bit number that uniquely identifies the - originating router in the Autonomous System." - REFERENCE - "OSPF Version 2, Appendix C.1, Global parameters" - ::= { ospfv3LinkLsdbEntry 4 } - - ospfv3LinkLsdbLsid OBJECT-TYPE - SYNTAX Ospfv3LsIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Link State ID is an LS type-specific field - containing a unique identifier; - it identifies the piece of the routing domain - that is being described by the advertisement. - In contrast to OSPFv2, the LSID has no - addressing semantics. However, in OSPFv3 - the Link State ID always contains the flooding - scope of the LSA." - ::= { ospfv3LinkLsdbEntry 5 } - - -- Note that the OSPF sequence number is a 32-bit signed - -- integer. It starts with the value '80000001'h - -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. - -- Thus, a typical sequence number will be very negative. - - ospfv3LinkLsdbSequence OBJECT-TYPE - SYNTAX Ospfv3LsaSequenceTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The sequence number field is a signed 32-bit - integer. It is used to detect old and duplicate - link state advertisements. The space of - sequence numbers is linearly ordered. The - larger the sequence number, the more recent the - advertisement." - REFERENCE - "OSPF Version 2, Section 12.1.6, LS sequence - number" - ::= { ospfv3LinkLsdbEntry 6 } - - ospfv3LinkLsdbAge OBJECT-TYPE - SYNTAX Ospfv3LsaAgeTC - UNITS "seconds" - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the age of the link state - advertisement in seconds. The high-order bit - of the LS age field is considered the DoNotAge - bit for support of on-demand circuits." - REFERENCE - "OSPF Version 2, Section 12.1.1, LS age; - Extending OSPF to Support Demand Circuits, - Section 2.2, The LS age field." - ::= { ospfv3LinkLsdbEntry 7 } - - ospfv3LinkLsdbChecksum OBJECT-TYPE - SYNTAX Integer32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the checksum of the complete - contents of the advertisement, excepting the - age field. The age field is excepted so that - an advertisement's age can be incremented - without updating the checksum. The checksum - used is the same that is used for ISO - connectionless datagrams; it is commonly - referred to as the Fletcher checksum." - REFERENCE - "OSPF Version 2, Section 12.1.7, LS checksum" - ::= { ospfv3LinkLsdbEntry 8 } - - ospfv3LinkLsdbAdvertisement OBJECT-TYPE - SYNTAX OCTET STRING (SIZE (1..65535)) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The entire link state advertisement, including - its header." - ::= { ospfv3LinkLsdbEntry 9 } - - ospfv3LinkLsdbTypeKnown OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value true (1) indicates that the LSA type is - recognized by this router." - ::= { ospfv3LinkLsdbEntry 10 } - - -- OSPF Host Table - - ospfv3HostTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3HostEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Host/Metric Table indicates what hosts are - directly attached to the router and their - corresponding metrics." - REFERENCE - "OSPF Version 2, Appendix C.7, Host route - parameters" - ::= { ospfv3Objects 6 } - - ospfv3HostEntry OBJECT-TYPE - SYNTAX Ospfv3HostEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A metric to be advertised when a given host is - reachable. - - The information in this table is persistent, and - when written, the entity SHOULD save the change - to non-volatile storage." - INDEX { ospfv3HostAddressType, - ospfv3HostAddress } - ::= { ospfv3HostTable 1 } - - Ospfv3HostEntry ::= SEQUENCE { - ospfv3HostAddressType - InetAddressType, - ospfv3HostAddress - InetAddress, - ospfv3HostMetric - Metric, - ospfv3HostRowStatus - RowStatus, - ospfv3HostAreaID - Ospfv3AreaIdTC - } - - ospfv3HostAddressType OBJECT-TYPE - SYNTAX InetAddressType - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The address type of ospfv3HostAddress. Only IPv6 - global address type is expected." - REFERENCE - "OSPF Version 2, Appendix C.7, Host route - parameters" - ::= { ospfv3HostEntry 1 } - - ospfv3HostAddress OBJECT-TYPE - SYNTAX InetAddress - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The IPv6 address of the host. Must be an - IPv6 global address." - REFERENCE - "OSPF Version 2, Appendix C.7, Host route - parameters" - ::= { ospfv3HostEntry 2 } - - ospfv3HostMetric OBJECT-TYPE - SYNTAX Metric - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The metric to be advertised." - REFERENCE - "OSPF Version 2, Appendix C.7, Host route - parameters" - ::= { ospfv3HostEntry 3 } - - ospfv3HostRowStatus OBJECT-TYPE - SYNTAX RowStatus - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This object permits management of the table by - facilitating actions such as row creation, - construction, and destruction. - - The value of this object has no effect on - whether other objects in this conceptual row can be - modified." - ::= { ospfv3HostEntry 4 } - - ospfv3HostAreaID OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The Area the host entry is to be found within. - By default, the area for the subsuming OSPFv3 - interface, or Area 0 if there is no subsuming - interface." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - ::= { ospfv3HostEntry 5 } - - -- OSPFv3 Interface Table - - ospfv3IfTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3IfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The OSPFv3 Interface Table describes the - interfaces from the viewpoint of OSPFv3." - REFERENCE - "OSPF for IPv6, Appendix C.3, Router Interface - Parameters" - ::= { ospfv3Objects 7 } - - ospfv3IfEntry OBJECT-TYPE - SYNTAX Ospfv3IfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The OSPFv3 Interface Entry describes one - interface from the viewpoint of OSPFv3. - - The information in this table is persistent, - and when written, the entity SHOULD save the - change to non-volatile storage." - INDEX { ospfv3IfIndex, - ospfv3IfInstId } - ::= { ospfv3IfTable 1 } - - Ospfv3IfEntry ::= SEQUENCE { - ospfv3IfIndex - InterfaceIndex, - ospfv3IfInstId - Ospfv3IfInstIdTC, - ospfv3IfAreaId - Ospfv3AreaIdTC, - ospfv3IfType - INTEGER, - ospfv3IfAdminStatus - Status, - ospfv3IfRtrPriority - DesignatedRouterPriority, - ospfv3IfTransitDelay - Ospfv3UpToRefreshIntervalTC, - ospfv3IfRetransInterval - Ospfv3UpToRefreshIntervalTC, - ospfv3IfHelloInterval - HelloRange, - ospfv3IfRtrDeadInterval - Ospfv3DeadIntervalRangeTC, - ospfv3IfPollInterval - Unsigned32, - ospfv3IfState - INTEGER, - ospfv3IfDesignatedRouter - Ospfv3RouterIdTC, - ospfv3IfBackupDesignatedRouter - Ospfv3RouterIdTC, - ospfv3IfEvents - Counter32, - ospfv3IfRowStatus - RowStatus, - ospfv3IfDemand - TruthValue, - ospfv3IfMetricValue - Metric, - ospfv3IfLinkScopeLsaCount - Gauge32, - ospfv3IfLinkLsaCksumSum - Unsigned32, - ospfv3IfDemandNbrProbe - TruthValue, - ospfv3IfDemandNbrProbeRetransLimit - Unsigned32, - ospfv3IfDemandNbrProbeInterval - Unsigned32, - ospfv3IfTEDisabled - TruthValue, - ospfv3IfLinkLSASuppression - TruthValue - } - - ospfv3IfIndex OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The interface index of this OSPFv3 interface. - It corresponds to the interface index of the - IPv6 interface on which OSPFv3 is configured." - ::= { ospfv3IfEntry 1 } - - ospfv3IfInstId OBJECT-TYPE - SYNTAX Ospfv3IfInstIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Enables multiple interface instances of OSPFv3 - to be run over a single link. Each interface - instance would be assigned a separate ID. This ID - has local link significance only." - ::= { ospfv3IfEntry 2 } - - ospfv3IfAreaId OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "A 32-bit integer uniquely identifying the area - to which the interface connects. Area ID - 0 is used for the OSPFv3 backbone." - DEFVAL { 0 } - ::= { ospfv3IfEntry 3 } - - ospfv3IfType OBJECT-TYPE - SYNTAX INTEGER { - broadcast(1), - nbma(2), - pointToPoint(3), - pointToMultipoint(5) - } - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The OSPFv3 interface type." - ::= { ospfv3IfEntry 4 } - - ospfv3IfAdminStatus OBJECT-TYPE - SYNTAX Status - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The OSPFv3 interface's administrative status. - The value formed on the interface; the interface - will be advertised as an internal route to some - area. The value 'disabled' denotes that the - interface is external to OSPFv3. - - Note that a value of 'disabled' for the object - ospfv3AdminStatus will override a value of - 'enabled' for the interface." - DEFVAL { enabled } - ::= { ospfv3IfEntry 5 } - - ospfv3IfRtrPriority OBJECT-TYPE - SYNTAX DesignatedRouterPriority - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The priority of this interface. Used in - multi-access networks, this field is used in - the designated-router election algorithm. The - value 0 signifies that the router is not - eligible to become the Designated Router on this - particular network. In the event of a tie in - this value, routers will use their Router ID as - a tie breaker." - DEFVAL { 1 } - ::= { ospfv3IfEntry 6 } - - ospfv3IfTransitDelay OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The estimated number of seconds it takes to transmit - a Link State Update packet over this interface. LSAs - contained in the update packet must have their age - incremented by this amount before transmission. This - value should take into account the transmission and - propagation delays of the interface." - REFERENCE - "OSPF for IPv6, Appendix C.3, Router Interface - Parameters." - DEFVAL { 1 } - ::= { ospfv3IfEntry 7 } - - ospfv3IfRetransInterval OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The number of seconds between link state - advertisement retransmissions for adjacencies - - belonging to this interface. This value is - also used when retransmitting database - description and Link State Request packets." - DEFVAL { 5 } - ::= { ospfv3IfEntry 8 } - - ospfv3IfHelloInterval OBJECT-TYPE - SYNTAX HelloRange - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The length of time, in seconds, between the - Hello packets that the router sends on the - interface. This value must be the same for all - routers attached to a common network." - DEFVAL { 10 } - ::= { ospfv3IfEntry 9 } - - ospfv3IfRtrDeadInterval OBJECT-TYPE - SYNTAX Ospfv3DeadIntervalRangeTC - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The number of seconds that a router's Hello - packets have not been seen before its - neighbors declare the router down on the interface. - This should be some multiple of the Hello interval. - This value must be the same for all routers attached - to a common network." - DEFVAL { 40 } - ::= { ospfv3IfEntry 10 } - - ospfv3IfPollInterval OBJECT-TYPE - SYNTAX Unsigned32 - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The larger time interval, in seconds, between - the Hello packets sent to an inactive, - non-broadcast multi-access neighbor." - DEFVAL { 120 } - ::= { ospfv3IfEntry 11 } - - ospfv3IfState OBJECT-TYPE - SYNTAX INTEGER { - down(1), - loopback(2), - waiting(3), - pointToPoint(4), - designatedRouter(5), - backupDesignatedRouter(6), - otherDesignatedRouter(7), - standby(8) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The OSPFv3 interface state. An interface may be - in standby state if there are multiple interfaces - on the link and another interface is active. The - interface may be in Down state if the underlying - IPv6 interface is down or if the admin status is - 'disabled' either globally or for the interface." - ::= { ospfv3IfEntry 12 } - - ospfv3IfDesignatedRouter OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The Router ID of the Designated Router." - ::= { ospfv3IfEntry 13 } - - ospfv3IfBackupDesignatedRouter OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The Router ID of the Backup Designated - Router." - ::= { ospfv3IfEntry 14 } - - ospfv3IfEvents OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of times this OSPFv3 interface has - changed its state or an error has occurred. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3IfEntry 15 } - - ospfv3IfRowStatus OBJECT-TYPE - SYNTAX RowStatus - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This object permits management of the table by - facilitating actions such as row creation, - construction, and destruction. - - The value of this object has no effect on - whether other objects in this conceptual row can be - modified." - ::= { ospfv3IfEntry 16 } - - ospfv3IfDemand OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Indicates whether Demand OSPFv3 procedures - (Hello suppression to FULL neighbors and - setting the DoNotAge flag on propagated LSAs) - should be performed on this interface." - DEFVAL { false } - ::= { ospfv3IfEntry 17 } - - ospfv3IfMetricValue OBJECT-TYPE - SYNTAX Metric - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The metric assigned to this interface. - The default value of the metric is - 'Reference Bandwidth / ifSpeed'. The value - of the reference bandwidth can be set - in the ospfv3ReferenceBandwidth object." - ::= { ospfv3IfEntry 18 } - - ospfv3IfLinkScopeLsaCount OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The total number of Link-scope link state - advertisements in this link's link state - database." - ::= { ospfv3IfEntry 19 } - - ospfv3IfLinkLsaCksumSum OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The 32-bit unsigned sum of the Link-scope link state - advertisements' LS checksums contained in this - link's link state database. The sum can be used - to determine if there has been a change in a - router's link state database or to compare the - link state database of two routers." - ::= { ospfv3IfEntry 20 } - - ospfv3IfDemandNbrProbe OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Indicates whether or not neighbor probing is - enabled to determine whether or not the neighbor - is inactive. Neighbor probing is disabled by - default." - DEFVAL { false } - ::= { ospfv3IfEntry 21 } - -ospfv3IfDemandNbrProbeRetransLimit OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The number of consecutive LSA retransmissions before - the neighbor is deemed inactive and the neighbor - adjacency is brought down." - DEFVAL { 10 } - ::= { ospfv3IfEntry 22} - -ospfv3IfDemandNbrProbeInterval OBJECT-TYPE - SYNTAX Unsigned32 - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Defines how often the neighbor will be probed." - DEFVAL { 120 } - ::= { ospfv3IfEntry 23 } - - ospfv3IfTEDisabled OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Indicates whether or not traffic engineering - is disabled on the interface when traffic - engineering is enabled in the area where the - interface is attached. The object is set - to the value true (1) to disable traffic engineering - on the interface. Traffic engineering is enabled - by default on the interface when traffic engineering - is enabled in the area where the interface is - attached." - DEFVAL { false } - ::= { ospfv3IfEntry 24 } - - ospfv3IfLinkLSASuppression OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Specifies whether or not link LSA origination is - suppressed for broadcast or NBMA interface types. - The object is set to value true (1) to suppress - the origination." - REFERENCE - "OSPF for IPv6, Appendix C.3, Router Interface - Parameters" - DEFVAL { false } - ::= { ospfv3IfEntry 25 } - - -- OSPFv3 Virtual Interface Table - - ospfv3VirtIfTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3VirtIfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information about this router's virtual - interfaces that the OSPFv3 Process is configured - to carry on." - REFERENCE - "OSPF for IPv6, Appendix C.4, Virtual Link - Parameters" - ::= { ospfv3Objects 8 } - - ospfv3VirtIfEntry OBJECT-TYPE - SYNTAX Ospfv3VirtIfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Information about a single virtual interface. - - The information in this table is persistent, - and when written, the entity SHOULD save the - change to non-volatile storage." - INDEX { ospfv3VirtIfAreaId, - ospfv3VirtIfNeighbor } - ::= { ospfv3VirtIfTable 1 } - - Ospfv3VirtIfEntry ::= SEQUENCE { - ospfv3VirtIfAreaId - Ospfv3AreaIdTC, - ospfv3VirtIfNeighbor - Ospfv3RouterIdTC, - ospfv3VirtIfIndex - InterfaceIndex, - ospfv3VirtIfInstId - Ospfv3IfInstIdTC, - ospfv3VirtIfTransitDelay - Ospfv3UpToRefreshIntervalTC, - ospfv3VirtIfRetransInterval - Ospfv3UpToRefreshIntervalTC, - ospfv3VirtIfHelloInterval - HelloRange, - ospfv3VirtIfRtrDeadInterval - Ospfv3DeadIntervalRangeTC, - ospfv3VirtIfState - INTEGER, - ospfv3VirtIfEvents - Counter32, - ospfv3VirtIfRowStatus - RowStatus, - ospfv3VirtIfLinkScopeLsaCount - Gauge32, - ospfv3VirtIfLinkLsaCksumSum - Unsigned32 - } - - ospfv3VirtIfAreaId OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The transit area that the virtual link - traverses. By definition, this is not - Area 0." - ::= { ospfv3VirtIfEntry 1 } - - ospfv3VirtIfNeighbor OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Router ID of the virtual neighbor." - ::= { ospfv3VirtIfEntry 2 } - - ospfv3VirtIfIndex OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The local interface index assigned by the - OSPFv3 Process to this OSPFv3 virtual interface. - It is advertised in Hellos sent over the virtual - link and in the router's router-LSAs." - ::= { ospfv3VirtIfEntry 3 } - - ospfv3VirtIfInstId OBJECT-TYPE - SYNTAX Ospfv3IfInstIdTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The local Interface Instance ID assigned by the - OSPFv3 Process to this OSPFv3 virtual interface." - ::= { ospfv3VirtIfEntry 4 } - - ospfv3VirtIfTransitDelay OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The estimated number of seconds it takes to - transmit a Link State Update packet over this - interface." - DEFVAL { 1 } - ::= { ospfv3VirtIfEntry 5 } - - ospfv3VirtIfRetransInterval OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The number of seconds between link state - advertisement retransmissions for adjacencies - belonging to this interface. This value is - also used when retransmitting database - description and Link State Request packets. This - value should be well over the expected - round-trip time." - DEFVAL { 5 } - ::= { ospfv3VirtIfEntry 6 } - - ospfv3VirtIfHelloInterval OBJECT-TYPE - SYNTAX HelloRange - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The length of time, in seconds, between the - Hello packets that the router sends on the - interface. This value must be the same for the - virtual neighbor." - DEFVAL { 10 } - ::= { ospfv3VirtIfEntry 7 } - - ospfv3VirtIfRtrDeadInterval OBJECT-TYPE - SYNTAX Ospfv3DeadIntervalRangeTC - UNITS "seconds" - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The number of seconds that a router's Hello - packets have not been seen before its - neighbors declare the router down. This should - be some multiple of the Hello interval. This - value must be the same for the virtual - neighbor." - DEFVAL { 60 } - ::= { ospfv3VirtIfEntry 8 } - - ospfv3VirtIfState OBJECT-TYPE - SYNTAX INTEGER { - down(1), - pointToPoint(4) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "OSPF virtual interface states. The same encoding - as the ospfV3IfTable is used." - ::= { ospfv3VirtIfEntry 9 } - - ospfv3VirtIfEvents OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of state changes or error events on - this virtual link. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3VirtIfEntry 10 } - - ospfv3VirtIfRowStatus OBJECT-TYPE - SYNTAX RowStatus - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This object permits management of the table by - facilitating actions such as row creation, - construction, and destruction. - - The value of this object has no effect on - whether other objects in this conceptual row can be - modified." - ::= { ospfv3VirtIfEntry 11 } - - ospfv3VirtIfLinkScopeLsaCount OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The total number of Link-scope link state - advertisements in this virtual link's link state - database." - ::= { ospfv3VirtIfEntry 12 } - - ospfv3VirtIfLinkLsaCksumSum OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The 32-bit unsigned sum of the Link-scope link state - advertisements' LS checksums contained in this - virtual link's link state database. The sum can be used - to determine if there has been a change in a - router's link state database or to compare the - link state database of two routers." - ::= { ospfv3VirtIfEntry 13 } - - -- OSPFv3 Neighbor Table - - ospfv3NbrTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3NbrEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A table describing all neighbors in the - locality of the OSPFv3 router." - REFERENCE - "OSPF Version 2, Section 10, The Neighbor Data - Structure" - ::= { ospfv3Objects 9 } - - ospfv3NbrEntry OBJECT-TYPE - SYNTAX Ospfv3NbrEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The information regarding a single neighbor." - REFERENCE - "OSPF Version 2, Section 10, The Neighbor Data - Structure" - INDEX { ospfv3NbrIfIndex, - ospfv3NbrIfInstId, - ospfv3NbrRtrId } - ::= { ospfv3NbrTable 1 } - - Ospfv3NbrEntry ::= SEQUENCE { - ospfv3NbrIfIndex - InterfaceIndex, - ospfv3NbrIfInstId - Ospfv3IfInstIdTC, - ospfv3NbrRtrId - Ospfv3RouterIdTC, - ospfv3NbrAddressType - InetAddressType, - ospfv3NbrAddress - InetAddress, - ospfv3NbrOptions - Integer32, - ospfv3NbrPriority - DesignatedRouterPriority, - ospfv3NbrState - INTEGER, - ospfv3NbrEvents - Counter32, - ospfv3NbrLsRetransQLen - Gauge32, - ospfv3NbrHelloSuppressed - TruthValue, - ospfv3NbrIfId - InterfaceIndex, - ospfv3NbrRestartHelperStatus - INTEGER, - ospfv3NbrRestartHelperAge - Ospfv3UpToRefreshIntervalTC, - ospfv3NbrRestartHelperExitReason - INTEGER - } - - ospfv3NbrIfIndex OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Local Link ID of the link over which the - neighbor can be reached." - ::= { ospfv3NbrEntry 1 } - - ospfv3NbrIfInstId OBJECT-TYPE - SYNTAX Ospfv3IfInstIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Interface instance over which the neighbor - can be reached. This ID has local link - significance only." - ::= { ospfv3NbrEntry 2 } - - ospfv3NbrRtrId OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A 32-bit unsigned integer uniquely identifying the - neighboring router in the Autonomous System." - ::= { ospfv3NbrEntry 3 } - - ospfv3NbrAddressType OBJECT-TYPE - SYNTAX InetAddressType - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The address type of ospfv3NbrAddress. Only IPv6 - addresses without zone index are expected." - ::= { ospfv3NbrEntry 4 } - - ospfv3NbrAddress OBJECT-TYPE - SYNTAX InetAddress - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The IPv6 address of the neighbor associated with - the local link." - ::= { ospfv3NbrEntry 5 } - - ospfv3NbrOptions OBJECT-TYPE - SYNTAX Integer32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "A bit mask corresponding to the neighbor's - options field." - REFERENCE - "OSPF for IPv6, Appendix A.2, The Options Field" - ::= { ospfv3NbrEntry 6 } - - ospfv3NbrPriority OBJECT-TYPE - SYNTAX DesignatedRouterPriority - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The priority of this neighbor in the designated- - router election algorithm. The value 0 signifies - that the neighbor is not eligible to become the - Designated Router on this particular network." - ::= { ospfv3NbrEntry 7 } - - ospfv3NbrState OBJECT-TYPE - SYNTAX INTEGER { - down(1), - attempt(2), - init(3), - twoWay(4), - exchangeStart(5), - exchange(6), - loading(7), - full(8) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The state of the relationship with this - neighbor." - REFERENCE - "OSPF Version 2, Section 10.1, Neighbor states" - ::= { ospfv3NbrEntry 8 } - - ospfv3NbrEvents OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of times this neighbor relationship - has changed state or an error has occurred. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3NbrEntry 9 } - - ospfv3NbrLsRetransQLen OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The current length of the retransmission - queue." - ::= { ospfv3NbrEntry 10 } - - ospfv3NbrHelloSuppressed OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Indicates whether Hellos are being suppressed - to the neighbor." - ::= { ospfv3NbrEntry 11 } - - ospfv3NbrIfId OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The Interface ID that the neighbor advertises - in its Hello packets on this link, that is, the - neighbor's local interface index." - ::= { ospfv3NbrEntry 12 } - - ospfv3NbrRestartHelperStatus OBJECT-TYPE - SYNTAX INTEGER { notHelping(1), - helping(2) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Indicates whether the router is acting - as a graceful restart helper for the neighbor." - ::= { ospfv3NbrEntry 13 } - - ospfv3NbrRestartHelperAge OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Remaining time in current OSPF graceful restart - interval, if the router is acting as a restart - helper for the neighbor." - ::= { ospfv3NbrEntry 14 } - - ospfv3NbrRestartHelperExitReason OBJECT-TYPE - SYNTAX INTEGER { none(1), - inProgress(2), - completed(3), - timedOut(4), - topologyChanged(5) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Describes the outcome of the last attempt at acting - as a graceful restart helper for the neighbor. - - none: no restart has yet been attempted. - inProgress: a restart attempt is currently underway. - completed: the last restart completed successfully. - timedOut: the last restart timed out. - topologyChanged: the last restart was aborted due to - a topology change." - ::= { ospfv3NbrEntry 15 } - - -- OSPFv3 Configured Neighbor Table - - ospfv3CfgNbrTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3CfgNbrEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A table describing all configured neighbors. - - The Configured Neighbors table just gives - OSPFv3 information for sending OSPFv3 packets - to potential neighbors and is typically used - on NBMA and Point-to-Multipoint networks. - Once a Hello is received from a neighbor in - the Configured Neighbor table, an entry for - that neighbor is created in the Neighbor table - and adjacency state is maintained there. - Neighbors on multi-access or Point-to-Point - networks can use multicast addressing, so only - Neighbor table entries are created for them." - REFERENCE - "OSPF Version 2, Section 10, The Neighbor Data - Structure" - ::= { ospfv3Objects 10 } - - ospfv3CfgNbrEntry OBJECT-TYPE - SYNTAX Ospfv3CfgNbrEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The information regarding a single configured - neighbor. - - The information in this table is persistent, - and when written, the entity SHOULD save the - change to non-volatile storage." - REFERENCE - "OSPF Version 2, Section 10, The Neighbor Data - Structure" - INDEX { ospfv3CfgNbrIfIndex, - ospfv3CfgNbrIfInstId, - ospfv3CfgNbrAddressType, - ospfv3CfgNbrAddress } - ::= { ospfv3CfgNbrTable 1 } - - Ospfv3CfgNbrEntry ::= SEQUENCE { - ospfv3CfgNbrIfIndex - InterfaceIndex, - ospfv3CfgNbrIfInstId - Ospfv3IfInstIdTC, - ospfv3CfgNbrAddressType - InetAddressType, - ospfv3CfgNbrAddress - InetAddress, - ospfv3CfgNbrPriority - DesignatedRouterPriority, - ospfv3CfgNbrRowStatus - RowStatus - } - - ospfv3CfgNbrIfIndex OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Local Link ID of the link over which the - neighbor can be reached." - ::= { ospfv3CfgNbrEntry 1 } - - ospfv3CfgNbrIfInstId OBJECT-TYPE - SYNTAX Ospfv3IfInstIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Interface instance over which the neighbor - can be reached. This ID has local link - significance only." - ::= { ospfv3CfgNbrEntry 2 } - - ospfv3CfgNbrAddressType OBJECT-TYPE - SYNTAX InetAddressType - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The address type of ospfv3NbrAddress. Only IPv6 - addresses without zone index are expected." - ::= { ospfv3CfgNbrEntry 3 } - - ospfv3CfgNbrAddress OBJECT-TYPE - SYNTAX InetAddress - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The IPv6 address of the neighbor associated with - the local link." - ::= { ospfv3CfgNbrEntry 4 } - - ospfv3CfgNbrPriority OBJECT-TYPE - SYNTAX DesignatedRouterPriority - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "The priority of this neighbor in the designated- - router election algorithm. The value 0 signifies - that the neighbor is not eligible to become the - Designated Router on this particular network." - DEFVAL { 1 } - ::= { ospfv3CfgNbrEntry 5 } - - ospfv3CfgNbrRowStatus OBJECT-TYPE - SYNTAX RowStatus - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This object permits management of the table by - facilitating actions such as row creation, - construction, and destruction. - - The value of this object has no effect on - whether other objects in this conceptual row can be - modified." - ::= { ospfv3CfgNbrEntry 6 } - - -- OSPFv3 Virtual Neighbor Table - - ospfv3VirtNbrTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3VirtNbrEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A table describing all virtual neighbors." - REFERENCE - "OSPF Version 2, Section 15, Virtual Links" - ::= { ospfv3Objects 11 } - - ospfv3VirtNbrEntry OBJECT-TYPE - SYNTAX Ospfv3VirtNbrEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "Virtual neighbor information." - INDEX { ospfv3VirtNbrArea, - ospfv3VirtNbrRtrId } - ::= { ospfv3VirtNbrTable 1 } - - Ospfv3VirtNbrEntry ::= SEQUENCE { - ospfv3VirtNbrArea - Ospfv3AreaIdTC, - ospfv3VirtNbrRtrId - Ospfv3RouterIdTC, - ospfv3VirtNbrIfIndex - InterfaceIndex, - ospfv3VirtNbrIfInstId - Ospfv3IfInstIdTC, - ospfv3VirtNbrAddressType - InetAddressType, - ospfv3VirtNbrAddress - InetAddress, - ospfv3VirtNbrOptions - Integer32, - ospfv3VirtNbrState - INTEGER, - ospfv3VirtNbrEvents - Counter32, - ospfv3VirtNbrLsRetransQLen - Gauge32, - ospfv3VirtNbrHelloSuppressed - TruthValue, - ospfv3VirtNbrIfId - InterfaceIndex, - ospfv3VirtNbrRestartHelperStatus - INTEGER, - ospfv3VirtNbrRestartHelperAge - Ospfv3UpToRefreshIntervalTC, - ospfv3VirtNbrRestartHelperExitReason - INTEGER - } - - ospfv3VirtNbrArea OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The transit area Identifier." - ::= { ospfv3VirtNbrEntry 1 } - - ospfv3VirtNbrRtrId OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A 32-bit integer uniquely identifying the - neighboring router in the Autonomous System." - ::= { ospfv3VirtNbrEntry 2 } - - ospfv3VirtNbrIfIndex OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The local Interface ID for the virtual link over - which the neighbor can be reached." - ::= { ospfv3VirtNbrEntry 3 } - - ospfv3VirtNbrIfInstId OBJECT-TYPE - SYNTAX Ospfv3IfInstIdTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The interface instance for the virtual link over - which the neighbor can be reached." - ::= { ospfv3VirtNbrEntry 4 } - - ospfv3VirtNbrAddressType OBJECT-TYPE - SYNTAX InetAddressType - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The address type of ospfv3VirtNbrAddress. Only IPv6 - addresses without zone index are expected." - ::= { ospfv3VirtNbrEntry 5 } - - ospfv3VirtNbrAddress OBJECT-TYPE - SYNTAX InetAddress - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The IPv6 address advertised by this virtual neighbor. - It must be a global scope address." - ::= { ospfv3VirtNbrEntry 6 } - - ospfv3VirtNbrOptions OBJECT-TYPE - SYNTAX Integer32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "A bit mask corresponding to the neighbor's options - field." - REFERENCE - "OSPF for IPv6, Appendix A.2, The Options Field" - ::= { ospfv3VirtNbrEntry 7 } - - ospfv3VirtNbrState OBJECT-TYPE - SYNTAX INTEGER { - down(1), - attempt(2), - init(3), - twoWay(4), - exchangeStart(5), - exchange(6), - loading(7), - full(8) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The state of the virtual neighbor relationship." - ::= { ospfv3VirtNbrEntry 8 } - - ospfv3VirtNbrEvents OBJECT-TYPE - SYNTAX Counter32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of times this virtual link has - changed its state or an error has occurred. - - Discontinuities in the value of this counter - can occur at re-initialization of the management - system and at other times as indicated by the - value of ospfv3DiscontinuityTime." - ::= { ospfv3VirtNbrEntry 9 } - - ospfv3VirtNbrLsRetransQLen OBJECT-TYPE - SYNTAX Gauge32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The current length of the retransmission - queue." - ::= { ospfv3VirtNbrEntry 10 } - - ospfv3VirtNbrHelloSuppressed OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Indicates whether Hellos are being suppressed - to the neighbor." - ::= { ospfv3VirtNbrEntry 11 } - - ospfv3VirtNbrIfId OBJECT-TYPE - SYNTAX InterfaceIndex - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The Interface ID that the neighbor advertises - in its Hello packets on this virtual link, that is, - the neighbor's local Interface ID." - ::= { ospfv3VirtNbrEntry 12 } - -ospfv3VirtNbrRestartHelperStatus OBJECT-TYPE - SYNTAX INTEGER { notHelping(1), - helping(2) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Indicates whether the router is acting - as a graceful restart helper for the neighbor." - ::= { ospfv3VirtNbrEntry 13 } - - ospfv3VirtNbrRestartHelperAge OBJECT-TYPE - SYNTAX Ospfv3UpToRefreshIntervalTC - UNITS "seconds" - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Remaining time in the current OSPF graceful restart - interval, if the router is acting as a restart - helper for the neighbor." - ::= { ospfv3VirtNbrEntry 14 } - - ospfv3VirtNbrRestartHelperExitReason OBJECT-TYPE - SYNTAX INTEGER { none(1), - inProgress(2), - completed(3), - timedOut(4), - topologyChanged(5) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Describes the outcome of the last attempt at acting - as a graceful restart helper for the neighbor. - - none: no restart has yet been attempted. - inProgress: a restart attempt is currently underway. - completed: the last restart completed successfully. - timedOut: the last restart timed out. - topologyChanged: the last restart was aborted due to - a topology change." - ::= { ospfv3VirtNbrEntry 15 } - - -- - -- The OSPFv3 Area Aggregate Table - -- - - ospfv3AreaAggregateTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3AreaAggregateEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Area Aggregate Table acts as an adjunct - to the Area Table. It describes those address - aggregates that are configured to be propagated - from an area. Its purpose is to reduce the amount - of information that is known beyond an area's - borders. - - A range of IPv6 prefixes specified by a - prefix / prefix length pair. Note that if - ranges are configured such that one range - subsumes another range, the most specific - match is the preferred one." - ::= { ospfv3Objects 12 } - - ospfv3AreaAggregateEntry OBJECT-TYPE - SYNTAX Ospfv3AreaAggregateEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A single area aggregate entry. - - Information in this table is persistent, and - when this object is written, the entity SHOULD - save the change to non-volatile storage." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - INDEX { ospfv3AreaAggregateAreaID, - ospfv3AreaAggregateAreaLsdbType, - ospfv3AreaAggregatePrefixType, - ospfv3AreaAggregatePrefix, - ospfv3AreaAggregatePrefixLength } - ::= { ospfv3AreaAggregateTable 1 } - - Ospfv3AreaAggregateEntry ::= SEQUENCE { - ospfv3AreaAggregateAreaID - Ospfv3AreaIdTC, - ospfv3AreaAggregateAreaLsdbType - INTEGER, - ospfv3AreaAggregatePrefixType - InetAddressType, - ospfv3AreaAggregatePrefix - InetAddress, - ospfv3AreaAggregatePrefixLength - InetAddressPrefixLength, - ospfv3AreaAggregateRowStatus - RowStatus, - ospfv3AreaAggregateEffect - INTEGER, - ospfv3AreaAggregateRouteTag - Unsigned32 - } - - ospfv3AreaAggregateAreaID OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The area the Address Aggregate is to be found - within." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - ::= { ospfv3AreaAggregateEntry 1 } - - ospfv3AreaAggregateAreaLsdbType OBJECT-TYPE - SYNTAX INTEGER { - interAreaPrefixLsa(8195), -- 0x2003 - nssaExternalLsa(8199) -- 0x2007 - } - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The type of the Address Aggregate. This field - specifies the Area LSDB type that this Address - Aggregate applies to." - REFERENCE - "OSPF Version 2, Appendix A.4.1, The LSA header" - ::= { ospfv3AreaAggregateEntry 2 } - - ospfv3AreaAggregatePrefixType OBJECT-TYPE - SYNTAX InetAddressType - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The prefix type of ospfv3AreaAggregatePrefix. Only - IPv6 addresses are expected." - ::= { ospfv3AreaAggregateEntry 3 } - - ospfv3AreaAggregatePrefix OBJECT-TYPE - SYNTAX InetAddress (SIZE (0..16)) - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The IPv6 prefix." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - ::= { ospfv3AreaAggregateEntry 4 } - - ospfv3AreaAggregatePrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (3..128) - UNITS "bits" - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The length of the prefix (in bits). A prefix can - not be shorter than 3 bits." - REFERENCE - "OSPF Version 2, Appendix C.2, Area parameters" - ::= { ospfv3AreaAggregateEntry 5 } - - ospfv3AreaAggregateRowStatus OBJECT-TYPE - SYNTAX RowStatus - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This object permits management of the table by - facilitating actions such as row creation, - construction, and destruction. - - The value of this object has no effect on - whether other objects in this conceptual row can be - modified." - ::= { ospfv3AreaAggregateEntry 6 } - - ospfv3AreaAggregateEffect OBJECT-TYPE - SYNTAX INTEGER { - advertiseMatching(1), - doNotAdvertiseMatching(2) - } - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "Prefixes subsumed by ranges will either trigger the - advertisement of the indicated aggregate - (advertiseMatching) or result in the prefix not - being advertised at all outside the area." - DEFVAL { advertiseMatching } - ::= { ospfv3AreaAggregateEntry 7 } - - ospfv3AreaAggregateRouteTag OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-create - STATUS current - DESCRIPTION - "This tag is advertised only in the summarized - As-External LSA when summarizing from NSSA-LSAs to - AS-External-LSAs." - DEFVAL { 0 } - ::= { ospfv3AreaAggregateEntry 8 } - - -- OSPFv3 Link-Scope Link State Database, for virtual interfaces - - ospfv3VirtLinkLsdbTable OBJECT-TYPE - SYNTAX SEQUENCE OF Ospfv3VirtLinkLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The OSPFv3 Process's Link-scope LSDB for virtual - interfaces. The LSDB contains the Link-scope link - state advertisements from virtual interfaces." - ::= { ospfv3Objects 13 } - - ospfv3VirtLinkLsdbEntry OBJECT-TYPE - SYNTAX Ospfv3VirtLinkLsdbEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "A single Link-scope link state advertisement - for a virtual interface." - INDEX { ospfv3VirtLinkLsdbIfAreaId, - ospfv3VirtLinkLsdbIfNeighbor, - ospfv3VirtLinkLsdbType, - ospfv3VirtLinkLsdbRouterId, - ospfv3VirtLinkLsdbLsid } - ::= { ospfv3VirtLinkLsdbTable 1 } - - Ospfv3VirtLinkLsdbEntry ::= SEQUENCE { - ospfv3VirtLinkLsdbIfAreaId - Ospfv3AreaIdTC, - ospfv3VirtLinkLsdbIfNeighbor - Ospfv3RouterIdTC, - ospfv3VirtLinkLsdbType - Unsigned32, - ospfv3VirtLinkLsdbRouterId - Ospfv3RouterIdTC, - ospfv3VirtLinkLsdbLsid - Ospfv3LsIdTC, - ospfv3VirtLinkLsdbSequence - Ospfv3LsaSequenceTC, - ospfv3VirtLinkLsdbAge - Ospfv3LsaAgeTC, - ospfv3VirtLinkLsdbChecksum - Integer32, - ospfv3VirtLinkLsdbAdvertisement - OCTET STRING, - ospfv3VirtLinkLsdbTypeKnown - TruthValue - } - - ospfv3VirtLinkLsdbIfAreaId OBJECT-TYPE - SYNTAX Ospfv3AreaIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The transit area that the virtual link - traverses. By definition, this is not - Area 0." - ::= { ospfv3VirtLinkLsdbEntry 1 } - - ospfv3VirtLinkLsdbIfNeighbor OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Router ID of the virtual neighbor." - ::= { ospfv3VirtLinkLsdbEntry 2 } - - ospfv3VirtLinkLsdbType OBJECT-TYPE - SYNTAX Unsigned32(0..'FFFFFFFF'h) - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The type of the link state advertisement. - Each link state type has a separate - advertisement format. Link-scope LSAs unrecognized - by the router are also stored in this database." - ::= { ospfv3VirtLinkLsdbEntry 3 } - - ospfv3VirtLinkLsdbRouterId OBJECT-TYPE - SYNTAX Ospfv3RouterIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The 32-bit number that uniquely identifies the - originating router in the Autonomous System." - REFERENCE - "OSPF Version 2, Appendix C.1, Global parameters" - ::= { ospfv3VirtLinkLsdbEntry 4 } - - ospfv3VirtLinkLsdbLsid OBJECT-TYPE - SYNTAX Ospfv3LsIdTC - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "The Link State ID is an LS type-specific field - containing a unique identifier; - it identifies the piece of the routing domain - that is being described by the advertisement. - In contrast to OSPFv2, the LSID has no - addressing semantics." - ::= { ospfv3VirtLinkLsdbEntry 5 } - - -- Note that the OSPF sequence number is a 32-bit signed - -- integer. It starts with the value '80000001'h - -- or -'7FFFFFFF'h, and increments until '7FFFFFFF'h. - -- Thus, a typical sequence number will be very negative. - - ospfv3VirtLinkLsdbSequence OBJECT-TYPE - SYNTAX Ospfv3LsaSequenceTC - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The sequence number field is a signed 32-bit - integer. It is used to detect old and duplicate - link state advertisements. The space of - sequence numbers is linearly ordered. The - larger the sequence number, the more recent the - advertisement." - REFERENCE - "OSPF Version 2, Section 12.1.6, LS sequence - number" - ::= { ospfv3VirtLinkLsdbEntry 6 } - - ospfv3VirtLinkLsdbAge OBJECT-TYPE - SYNTAX Ospfv3LsaAgeTC - UNITS "seconds" - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the age of the link state - advertisement in seconds. The high-order bit - of the LS age field is considered the DoNotAge - bit for support of on-demand circuits." - REFERENCE - "OSPF Version 2, Section 12.1.1, LS age; - Extending OSPF to Support Demand Circuits, - Section 2.2, The LS age field." - ::= { ospfv3VirtLinkLsdbEntry 7 } - - ospfv3VirtLinkLsdbChecksum OBJECT-TYPE - SYNTAX Integer32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "This field is the checksum of the complete - contents of the advertisement, excepting the - age field. The age field is excepted so that - an advertisement's age can be incremented - without updating the checksum. The checksum - used is the same that is used for ISO - connectionless datagrams; it is commonly - referred to as the Fletcher checksum." - REFERENCE - "OSPF Version 2, Section 12.1.7, LS checksum" - ::= { ospfv3VirtLinkLsdbEntry 8 } - - ospfv3VirtLinkLsdbAdvertisement OBJECT-TYPE - SYNTAX OCTET STRING (SIZE (1..65535)) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The entire link state advertisement, including - its header." - ::= { ospfv3VirtLinkLsdbEntry 9 } - - ospfv3VirtLinkLsdbTypeKnown OBJECT-TYPE - SYNTAX TruthValue - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value true (1) indicates that the LSA type is - recognized by this router." - ::= { ospfv3VirtLinkLsdbEntry 10 } - - -- The Ospfv3 Notification Table - - -- The Ospfv3 Notification Table records fields that are - -- required for notifications. - - ospfv3NotificationEntry OBJECT IDENTIFIER - ::= { ospfv3Objects 14 } - - ospfv3ConfigErrorType OBJECT-TYPE - SYNTAX INTEGER { - badVersion(1), - areaMismatch(2), - unknownNbmaNbr(3), -- Router is DR eligible - unknownVirtualNbr(4), - helloIntervalMismatch(5), - deadIntervalMismatch(6), - optionMismatch(7), - mtuMismatch(8), - duplicateRouterId(9), - noError(10) } - MAX-ACCESS accessible-for-notify - STATUS current - DESCRIPTION - "Potential types of configuration conflicts. - Used by the ospfv3ConfigError and - ospfv3ConfigVirtError notifications." - ::= { ospfv3NotificationEntry 1 } - - ospfv3PacketType OBJECT-TYPE - SYNTAX INTEGER { - hello(1), - dbDescript(2), - lsReq(3), - lsUpdate(4), - lsAck(5), - nullPacket(6) } - MAX-ACCESS accessible-for-notify - STATUS current - DESCRIPTION - "OSPFv3 packet types." - ::= { ospfv3NotificationEntry 2 } - - ospfv3PacketSrc OBJECT-TYPE - SYNTAX InetAddressIPv6 - MAX-ACCESS accessible-for-notify - STATUS current - DESCRIPTION - "The IPv6 address of an inbound packet that cannot - be identified by a neighbor instance. - - Only IPv6 addresses without zone index are expected." - ::= { ospfv3NotificationEntry 3 } - - -- Notification Definitions - - -- The notifications need to be throttled so as to not overwhelm the - -- management agent in case of rapid changes to the OSPFv3 module. - -ospfv3VirtIfStateChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3VirtIfState -- The new state - } - STATUS current - DESCRIPTION - "An ospfv3VirtIfStateChange notification signifies that - there has been a change in the state of an OSPFv3 virtual - interface. - - This notification should be generated when the interface - state regresses (e.g., goes from Point-to-Point to Down) - or progresses to a terminal state (i.e., Point-to-Point)." - ::= { ospfv3Notifications 1 } - -ospfv3NbrStateChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3NbrState -- The new state - - } - STATUS current - DESCRIPTION - "An ospfv3NbrStateChange notification signifies that - there has been a change in the state of a - non-virtual OSPFv3 neighbor. This notification should be - generated when the neighbor state regresses - (e.g., goes from Attempt or Full to 1-Way or - Down) or progresses to a terminal state (e.g., - 2-Way or Full). When a neighbor transitions - from or to Full on non-broadcast multi-access - and broadcast networks, the notification should be - generated by the Designated Router. A Designated - Router transitioning to Down will be noted by - ospfIfStateChange." - ::= { ospfv3Notifications 2 } - -ospfv3VirtNbrStateChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3VirtNbrState -- The new state - } - STATUS current - DESCRIPTION - "An ospfv3VirtNbrStateChange notification signifies - that there has been a change in the state of an OSPFv3 - virtual neighbor. This notification should be generated - when the neighbor state regresses (e.g., goes - from Attempt or Full to 1-Way or Down) or - progresses to a terminal state (e.g., Full)." - ::= { ospfv3Notifications 3 } - -ospfv3IfConfigError NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3IfState, -- State of the interface - ospfv3PacketSrc, -- IPv6 address of source - ospfv3ConfigErrorType, -- Type of error - ospfv3PacketType -- Type of packet - } - STATUS current - DESCRIPTION - "An ospfv3IfConfigError notification signifies that a - packet has been received on a non-virtual - interface from a router whose configuration - parameters conflict with this router's - configuration parameters. Note that the event - optionMismatch should cause a notification only if it - prevents an adjacency from forming." - ::= { ospfv3Notifications 4 } - -ospfv3VirtIfConfigError NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3VirtIfState, -- State of the interface - ospfv3ConfigErrorType, -- Type of error - ospfv3PacketType - } - STATUS current - DESCRIPTION - "An ospfv3VirtIfConfigError notification signifies that a - packet has been received on a virtual interface - from a router whose configuration parameters - conflict with this router's configuration - parameters. Note that the event optionMismatch - should cause a notification only if it prevents an - adjacency from forming." - ::= { ospfv3Notifications 5 } - -ospfv3IfRxBadPacket NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3IfState, -- State of the interface - ospfv3PacketSrc, -- The source IPv6 address - ospfv3PacketType -- Type of packet - } - STATUS current - DESCRIPTION - "An ospfv3IfRxBadPacket notification signifies that an - OSPFv3 packet that cannot be parsed has been received on a - non-virtual interface." - ::= { ospfv3Notifications 6 } - -ospfv3VirtIfRxBadPacket NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3VirtIfState, -- State of the interface - ospfv3PacketType -- Type of packet - } - STATUS current - DESCRIPTION - "An ospfv3VirtIfRxBadPacket notification signifies - that an OSPFv3 packet that cannot be parsed has been - received on a virtual interface." - ::= { ospfv3Notifications 7 } - -ospfv3LsdbOverflow NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3ExtAreaLsdbLimit -- Limit on External LSAs - } - STATUS current - DESCRIPTION - "An ospfv3LsdbOverflow notification signifies that the - number of LSAs in the router's link state - database has exceeded ospfv3ExtAreaLsdbLimit." - ::= { ospfv3Notifications 8 } - -ospfv3LsdbApproachingOverflow NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3ExtAreaLsdbLimit - } - STATUS current - DESCRIPTION - "An ospfv3LsdbApproachingOverflow notification signifies - that the number of LSAs in the router's - link state database has exceeded ninety percent of - ospfv3ExtAreaLsdbLimit." - ::= { ospfv3Notifications 9 } - -ospfv3IfStateChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3IfState -- The new state - } - STATUS current - DESCRIPTION - "An ospfv3IfStateChange notification signifies that there - has been a change in the state of a non-virtual - OSPFv3 interface. This notification should be generated - when the interface state regresses (e.g., goes - from DR to Down) or progresses to a terminal - state (i.e., Point-to-Point, DR Other, DR, or - Backup)." - ::= { ospfv3Notifications 10 } - -ospfv3NssaTranslatorStatusChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3AreaNssaTranslatorState -- new state - } - STATUS current - DESCRIPTION - "An ospfv3NssaTranslatorStatusChange notification - indicates that there has been a change in the router's - ability to translate OSPFv3 NSSA LSAs into OSPFv3 External - LSAs. This notification should be generated when the - Translator Status transitions from or to any defined - status on a per-area basis." - ::= { ospfv3Notifications 11 } - -ospfv3RestartStatusChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3RestartStatus, -- new status - ospfv3RestartInterval, - ospfv3RestartExitReason - } - STATUS current - DESCRIPTION - "An ospfv3RestartStatusChange notification signifies that - there has been a change in the graceful restart - state for the router. This notification should be - generated when the router restart status - changes." - ::= { ospfv3Notifications 12 } - -ospfv3NbrRestartHelperStatusChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3NbrRestartHelperStatus, -- new status - ospfv3NbrRestartHelperAge, - ospfv3NbrRestartHelperExitReason - } - STATUS current - DESCRIPTION - "An ospfv3NbrRestartHelperStatusChange notification - signifies that there has been a change in the - graceful restart helper state for the neighbor. - This notification should be generated when the - neighbor restart helper status transitions for a neighbor." - ::= { ospfv3Notifications 13 } - -ospfv3VirtNbrRestartHelperStatusChange NOTIFICATION-TYPE - OBJECTS { ospfv3RouterId, -- The originator of the notification - ospfv3VirtNbrRestartHelperStatus, -- new status - ospfv3VirtNbrRestartHelperAge, - ospfv3VirtNbrRestartHelperExitReason - } - STATUS current - DESCRIPTION - "An ospfv3VirtNbrRestartHelperStatusChange - notification signifies that there has been a - change in the graceful restart helper state for - the virtual neighbor. This notification should be - generated when the virtual neighbor restart helper status - transitions for a virtual neighbor." - ::= { ospfv3Notifications 14 } - - -- Conformance Information - - ospfv3Groups OBJECT IDENTIFIER ::= { ospfv3Conformance 1 } - ospfv3Compliances OBJECT IDENTIFIER ::= { ospfv3Conformance 2 } - - -- Compliance Statements - - ospfv3FullCompliance MODULE-COMPLIANCE - STATUS current - DESCRIPTION "The compliance statement" - MODULE -- this module - MANDATORY-GROUPS { - ospfv3BasicGroup, - ospfv3AreaGroup, - ospfv3IfGroup, - ospfv3VirtIfGroup, - ospfv3NbrGroup, - ospfv3CfgNbrGroup, - ospfv3VirtNbrGroup, - ospfv3AreaAggregateGroup - } - - GROUP ospfv3AsLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their AS-scope link state database." - - GROUP ospfv3AreaLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their Area-scope link state database." - - GROUP ospfv3LinkLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their Link-scope link state database - for non-virtual interfaces." - - GROUP ospfv3VirtLinkLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their Link-scope link state database - for virtual interfaces." - - GROUP ospfv3HostGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - support attached hosts." - - GROUP ospfv3NotificationObjectGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - support OSPFv3 notifications." - - GROUP ospfv3NotificationGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - support OSPFv3 notifications." - - OBJECT ospfv3NbrAddressType - SYNTAX InetAddressType { ipv6(2) } - DESCRIPTION - "An implementation is only required to support IPv6 - address without zone index." - - OBJECT ospfv3NbrAddress - SYNTAX InetAddress (SIZE (16)) - DESCRIPTION - "An implementation is only required to support IPv6 - address without zone index." - - OBJECT ospfv3VirtNbrAddressType - SYNTAX InetAddressType { ipv6(2) } - DESCRIPTION - "An implementation is only required to support IPv6 - address without zone index." - - OBJECT ospfv3VirtNbrAddress - SYNTAX InetAddress (SIZE (16)) - DESCRIPTION - "An implementation is only required to support IPv6 - address without zone index." - ::= { ospfv3Compliances 1 } - - ospfv3ReadOnlyCompliance MODULE-COMPLIANCE - STATUS current - DESCRIPTION - "When this MIB module is implemented without - support for read-create (i.e., in read-only - mode), the implementation can claim read-only - compliance. Such a device can then be monitored, - but cannot be configured with this MIB." - - MODULE -- this module - MANDATORY-GROUPS { - ospfv3BasicGroup, - ospfv3AreaGroup, - ospfv3IfGroup, - ospfv3VirtIfGroup, - ospfv3NbrGroup, - ospfv3CfgNbrGroup, - ospfv3VirtNbrGroup, - ospfv3AreaAggregateGroup - } - - GROUP ospfv3AsLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their AS-scope link state database." - - GROUP ospfv3AreaLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their Area-scope link state database." - - GROUP ospfv3LinkLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their Link-scope link state database - for non-virtual interfaces." - - GROUP ospfv3VirtLinkLsdbGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - display their Link-scope link state database - for virtual interfaces." - - GROUP ospfv3HostGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - support attached hosts." - - GROUP ospfv3NotificationObjectGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - support OSPFv3 notifications." - - GROUP ospfv3NotificationGroup - DESCRIPTION - "This group is required for OSPFv3 systems that - support OSPFv3 notifications." - - OBJECT ospfv3RouterId - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AdminStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3ExtAreaLsdbLimit - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3ExitOverflowInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3DemandExtensions - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3ReferenceBandwidth - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3RestartSupport - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3RestartInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3RestartStrictLsaChecking - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3NotificationEnable - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3StubRouterAdvertisement - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaImportAsExtern - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaSummary - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaRowStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaStubMetric - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaNssaTranslatorRole - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaNssaTranslatorStabInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaStubMetricType - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaTEEnabled - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3HostMetric - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3HostRowStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3HostAreaID - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfAreaId - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfType - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfAdminStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfRtrPriority - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfTransitDelay - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfRetransInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfHelloInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfRtrDeadInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfPollInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfRowStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfDemand - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfMetricValue - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfDemandNbrProbe - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfDemandNbrProbeRetransLimit - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfDemandNbrProbeInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfTEDisabled - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3IfLinkLSASuppression - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3VirtIfTransitDelay - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3VirtIfRetransInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3VirtIfHelloInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3VirtIfRtrDeadInterval - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3VirtIfRowStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3CfgNbrPriority - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3CfgNbrRowStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaAggregateRowStatus - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaAggregateEffect - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - - OBJECT ospfv3AreaAggregateRouteTag - MIN-ACCESS read-only - DESCRIPTION - "Write access is not required." - ::= { ospfv3Compliances 2 } - - -- units of conformance - - ospfv3BasicGroup OBJECT-GROUP - OBJECTS { - ospfv3RouterId, - ospfv3AdminStatus, - ospfv3VersionNumber, - ospfv3AreaBdrRtrStatus, - ospfv3ASBdrRtrStatus, - ospfv3AsScopeLsaCount, - ospfv3AsScopeLsaCksumSum, - ospfv3OriginateNewLsas, - ospfv3RxNewLsas, - ospfv3ExtLsaCount, - ospfv3ExtAreaLsdbLimit, - ospfv3ExitOverflowInterval, - ospfv3DemandExtensions, - ospfv3ReferenceBandwidth, - ospfv3RestartSupport, - ospfv3RestartInterval, - ospfv3RestartStrictLsaChecking, - ospfv3RestartStatus, - ospfv3RestartAge, - ospfv3RestartExitReason, - ospfv3NotificationEnable, - ospfv3StubRouterSupport, - ospfv3StubRouterAdvertisement, - ospfv3DiscontinuityTime, - ospfv3RestartTime - } - STATUS current - DESCRIPTION - "These objects are used for managing/monitoring - OSPFv3 global parameters." - ::= { ospfv3Groups 1 } - - ospfv3AreaGroup OBJECT-GROUP - OBJECTS { - ospfv3AreaImportAsExtern, - ospfv3AreaSpfRuns, - ospfv3AreaBdrRtrCount, - ospfv3AreaAsBdrRtrCount, - ospfv3AreaScopeLsaCount, - ospfv3AreaScopeLsaCksumSum, - ospfv3AreaSummary, - ospfv3AreaRowStatus, - ospfv3AreaStubMetric, - ospfv3AreaNssaTranslatorRole, - ospfv3AreaNssaTranslatorState, - ospfv3AreaNssaTranslatorStabInterval, - ospfv3AreaNssaTranslatorEvents, - ospfv3AreaStubMetricType, - ospfv3AreaTEEnabled - } - STATUS current - DESCRIPTION - "These objects are used for OSPFv3 systems - supporting areas." - ::= { ospfv3Groups 2 } - - ospfv3AsLsdbGroup OBJECT-GROUP - OBJECTS { - ospfv3AsLsdbSequence, - ospfv3AsLsdbAge, - ospfv3AsLsdbChecksum, - ospfv3AsLsdbAdvertisement, - ospfv3AsLsdbTypeKnown - } - STATUS current - DESCRIPTION - "These objects are used for OSPFv3 systems - that display their AS-scope link state database." - ::= { ospfv3Groups 3 } - - ospfv3AreaLsdbGroup OBJECT-GROUP - OBJECTS { - ospfv3AreaLsdbSequence, - ospfv3AreaLsdbAge, - ospfv3AreaLsdbChecksum, - ospfv3AreaLsdbAdvertisement, - ospfv3AreaLsdbTypeKnown - } - STATUS current - DESCRIPTION - "These objects are used for OSPFv3 systems - that display their Area-scope link state database." - ::= { ospfv3Groups 4 } - - ospfv3LinkLsdbGroup OBJECT-GROUP - OBJECTS { - ospfv3LinkLsdbSequence, - ospfv3LinkLsdbAge, - ospfv3LinkLsdbChecksum, - ospfv3LinkLsdbAdvertisement, - ospfv3LinkLsdbTypeKnown - } - STATUS current - DESCRIPTION - "These objects are used for OSPFv3 systems - that display their Link-scope link state database - for non-virtual interfaces." - ::= { ospfv3Groups 5 } - - ospfv3HostGroup OBJECT-GROUP - OBJECTS { - ospfv3HostMetric, - ospfv3HostRowStatus, - ospfv3HostAreaID - } - STATUS current - DESCRIPTION - "These objects are used for OSPFv3 systems - that support attached hosts." - ::= { ospfv3Groups 6 } - - ospfv3IfGroup OBJECT-GROUP - OBJECTS { - ospfv3IfAreaId, - ospfv3IfType, - ospfv3IfAdminStatus, - ospfv3IfRtrPriority, - ospfv3IfTransitDelay, - ospfv3IfRetransInterval, - ospfv3IfHelloInterval, - ospfv3IfRtrDeadInterval, - ospfv3IfPollInterval, - ospfv3IfState, - ospfv3IfDesignatedRouter, - ospfv3IfBackupDesignatedRouter, - ospfv3IfEvents, - ospfv3IfRowStatus, - ospfv3IfDemand, - ospfv3IfMetricValue, - ospfv3IfLinkScopeLsaCount, - ospfv3IfLinkLsaCksumSum, - ospfv3IfDemandNbrProbe, - ospfv3IfDemandNbrProbeRetransLimit, - ospfv3IfDemandNbrProbeInterval, - ospfv3IfTEDisabled, - ospfv3IfLinkLSASuppression - } - STATUS current - DESCRIPTION - "These interface objects are used for - managing/monitoring OSPFv3 interfaces." - ::= { ospfv3Groups 7 } - - ospfv3VirtIfGroup OBJECT-GROUP - OBJECTS { - ospfv3VirtIfIndex, - ospfv3VirtIfInstId, - ospfv3VirtIfTransitDelay, - ospfv3VirtIfRetransInterval, - ospfv3VirtIfHelloInterval, - ospfv3VirtIfRtrDeadInterval, - ospfv3VirtIfState, - ospfv3VirtIfEvents, - ospfv3VirtIfRowStatus, - ospfv3VirtIfLinkScopeLsaCount, - ospfv3VirtIfLinkLsaCksumSum - } - STATUS current - DESCRIPTION - "These virtual interface objects are used for - managing/monitoring OSPFv3 virtual interfaces." - ::= { ospfv3Groups 8 } - - ospfv3NbrGroup OBJECT-GROUP - OBJECTS { - ospfv3NbrAddressType, - ospfv3NbrAddress, - ospfv3NbrOptions, - ospfv3NbrPriority, - ospfv3NbrState, - ospfv3NbrEvents, - ospfv3NbrLsRetransQLen, - ospfv3NbrHelloSuppressed, - ospfv3NbrIfId, - ospfv3NbrRestartHelperStatus, - ospfv3NbrRestartHelperAge, - ospfv3NbrRestartHelperExitReason - } - STATUS current - DESCRIPTION - "These neighbor objects are used for - managing/monitoring OSPFv3 neighbors." - ::= { ospfv3Groups 9 } - - ospfv3CfgNbrGroup OBJECT-GROUP - OBJECTS { - ospfv3CfgNbrPriority, - ospfv3CfgNbrRowStatus - } - STATUS current - DESCRIPTION - "These configured neighbor objects are used for - managing/monitoring OSPFv3-configured neighbors." - ::= { ospfv3Groups 10 } - - ospfv3VirtNbrGroup OBJECT-GROUP - OBJECTS { - ospfv3VirtNbrIfIndex, - ospfv3VirtNbrIfInstId, - ospfv3VirtNbrAddressType, - ospfv3VirtNbrAddress, - ospfv3VirtNbrOptions, - ospfv3VirtNbrState, - ospfv3VirtNbrEvents, - ospfv3VirtNbrLsRetransQLen, - ospfv3VirtNbrHelloSuppressed, - ospfv3VirtNbrIfId, - ospfv3VirtNbrRestartHelperStatus, - ospfv3VirtNbrRestartHelperAge, - ospfv3VirtNbrRestartHelperExitReason - } - STATUS current - DESCRIPTION - "These virtual neighbor objects are used for - managing/monitoring OSPFv3 virtual neighbors." - ::= { ospfv3Groups 11 } - - ospfv3AreaAggregateGroup OBJECT-GROUP - OBJECTS { - ospfv3AreaAggregateRowStatus, - ospfv3AreaAggregateEffect, - ospfv3AreaAggregateRouteTag - } - STATUS current - DESCRIPTION - "These area aggregate objects are required for - aggregating OSPFv3 prefixes for summarization - across areas." - ::= { ospfv3Groups 12 } - - ospfv3VirtLinkLsdbGroup OBJECT-GROUP - OBJECTS { - ospfv3VirtLinkLsdbSequence, - ospfv3VirtLinkLsdbAge, - ospfv3VirtLinkLsdbChecksum, - ospfv3VirtLinkLsdbAdvertisement, - ospfv3VirtLinkLsdbTypeKnown - } - STATUS current - DESCRIPTION - "These objects are used for OSPFv3 systems - that display their Link-scope link state database - for virtual interfaces." - ::= { ospfv3Groups 13 } - - ospfv3NotificationObjectGroup OBJECT-GROUP - OBJECTS { - ospfv3ConfigErrorType, - ospfv3PacketType, - ospfv3PacketSrc - } - STATUS current - DESCRIPTION - "These objects are used to record notification - parameters." - ::= { ospfv3Groups 14 } - - ospfv3NotificationGroup NOTIFICATION-GROUP - NOTIFICATIONS { - ospfv3VirtIfStateChange, - ospfv3NbrStateChange, - ospfv3VirtNbrStateChange, - ospfv3IfConfigError, - ospfv3VirtIfConfigError, - ospfv3IfRxBadPacket, - ospfv3VirtIfRxBadPacket, - ospfv3LsdbOverflow, - ospfv3LsdbApproachingOverflow, - ospfv3IfStateChange, - ospfv3NssaTranslatorStatusChange, - ospfv3RestartStatusChange, - ospfv3NbrRestartHelperStatusChange, - ospfv3VirtNbrRestartHelperStatusChange - } - STATUS current - DESCRIPTION - "This group is used for OSPFv3 notifications." - ::= { ospfv3Groups 15 } - - END diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c index 1861fe7..6d82e72 100644 --- a/ospf6d/ospf6_area.c +++ b/ospf6d/ospf6_area.c @@ -657,7 +657,7 @@ DEFUN (show_ipv6_ospf6_spf_tree, SHOW_STR IP6_STR OSPF6_STR - "Shortest Path First caculation\n" + "Shortest Path First calculation\n" "Show SPF tree\n") { struct listnode *node; @@ -694,7 +694,7 @@ DEFUN (show_ipv6_ospf6_area_spf_tree, OSPF6_STR OSPF6_AREA_STR OSPF6_AREA_ID_STR - "Shortest Path First caculation\n" + "Shortest Path First calculation\n" "Show SPF tree\n") { u_int32_t area_id; @@ -738,7 +738,7 @@ DEFUN (show_ipv6_ospf6_simulate_spf_tree_root, SHOW_STR IP6_STR OSPF6_STR - "Shortest Path First caculation\n" + "Shortest Path First calculation\n" "Show SPF tree\n" "Specify root's router-id to calculate another router's SPF tree\n") { diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c index 1afe84a..1dbebe9 100644 --- a/ospf6d/ospf6_main.c +++ b/ospf6d/ospf6_main.c @@ -229,7 +229,6 @@ main (int argc, char *argv[], char *envp[]) char *vty_addr = NULL; int vty_port = 0; char *config_file = NULL; - struct thread thread; int dryrun = 0; /* Set umask before anything for security */ @@ -352,9 +351,8 @@ main (int argc, char *argv[], char *envp[]) QUAGGA_VERSION, OSPF6_DAEMON_VERSION,vty_port); /* Start finite state machine, here we go! */ - while (thread_fetch (master, &thread)) - thread_call (&thread); - + thread_main (master); + /* Log in case thread failed */ zlog_warn ("Thread failed"); diff --git a/ospfclient/.gitignore b/ospfclient/.gitignore deleted file mode 100644 index 191322b..0000000 --- a/ospfclient/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -Makefile -Makefile.in -*.o -ospfclient -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/ospfclient/Makefile.in b/ospfclient/Makefile.in new file mode 100644 index 0000000..e4165e8 --- /dev/null +++ b/ospfclient/Makefile.in @@ -0,0 +1,830 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = ospfclient$(EXEEXT) +subdir = ospfclient +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(ospfapiheader_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" \ + "$(DESTDIR)$(ospfapiheaderdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libospfapiclient_la_DEPENDENCIES = ../ospfd/libospf.la \ + ../lib/libzebra.la +am_libospfapiclient_la_OBJECTS = ospf_apiclient.lo +libospfapiclient_la_OBJECTS = $(am_libospfapiclient_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libospfapiclient_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libospfapiclient_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +PROGRAMS = $(sbin_PROGRAMS) +am_ospfclient_OBJECTS = ospfclient-ospfclient.$(OBJEXT) +ospfclient_OBJECTS = $(am_ospfclient_OBJECTS) +ospfclient_DEPENDENCIES = libospfapiclient.la ../ospfd/libospf.la \ + ../lib/libzebra.la +ospfclient_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ospfclient_CFLAGS) \ + $(CFLAGS) $(ospfclient_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libospfapiclient_la_SOURCES) $(ospfclient_SOURCES) +DIST_SOURCES = $(libospfapiclient_la_SOURCES) $(ospfclient_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(ospfapiheader_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp AUTHORS \ + COPYING INSTALL NEWS README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +AM_CFLAGS = $(WERROR) +lib_LTLIBRARIES = libospfapiclient.la +libospfapiclient_la_LDFLAGS = -version-info 0:0:0 +libospfapiclient_la_LIBADD = ../ospfd/libospf.la ../lib/libzebra.la +libospfapiclient_la_SOURCES = \ + ospf_apiclient.c + +ospfapiheaderdir = $(pkgincludedir)/ospfapi +ospfapiheader_HEADERS = \ + ospf_apiclient.h + +ospfclient_SOURCES = \ + ospfclient.c + +ospfclient_LDADD = libospfapiclient.la \ + ../ospfd/libospf.la ../lib/libzebra.la @LIBCAP@ + +ospfclient_CFLAGS = $(AM_CFLAGS) +ospfclient_LDFLAGS = $(AM_LDFLAGS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ospfclient/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ospfclient/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libospfapiclient.la: $(libospfapiclient_la_OBJECTS) $(libospfapiclient_la_DEPENDENCIES) $(EXTRA_libospfapiclient_la_DEPENDENCIES) + $(AM_V_CCLD)$(libospfapiclient_la_LINK) -rpath $(libdir) $(libospfapiclient_la_OBJECTS) $(libospfapiclient_la_LIBADD) $(LIBS) +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +ospfclient$(EXEEXT): $(ospfclient_OBJECTS) $(ospfclient_DEPENDENCIES) $(EXTRA_ospfclient_DEPENDENCIES) + @rm -f ospfclient$(EXEEXT) + $(AM_V_CCLD)$(ospfclient_LINK) $(ospfclient_OBJECTS) $(ospfclient_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_apiclient.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospfclient-ospfclient.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +ospfclient-ospfclient.o: ospfclient.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ospfclient_CFLAGS) $(CFLAGS) -MT ospfclient-ospfclient.o -MD -MP -MF $(DEPDIR)/ospfclient-ospfclient.Tpo -c -o ospfclient-ospfclient.o `test -f 'ospfclient.c' || echo '$(srcdir)/'`ospfclient.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ospfclient-ospfclient.Tpo $(DEPDIR)/ospfclient-ospfclient.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ospfclient.c' object='ospfclient-ospfclient.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ospfclient_CFLAGS) $(CFLAGS) -c -o ospfclient-ospfclient.o `test -f 'ospfclient.c' || echo '$(srcdir)/'`ospfclient.c + +ospfclient-ospfclient.obj: ospfclient.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ospfclient_CFLAGS) $(CFLAGS) -MT ospfclient-ospfclient.obj -MD -MP -MF $(DEPDIR)/ospfclient-ospfclient.Tpo -c -o ospfclient-ospfclient.obj `if test -f 'ospfclient.c'; then $(CYGPATH_W) 'ospfclient.c'; else $(CYGPATH_W) '$(srcdir)/ospfclient.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ospfclient-ospfclient.Tpo $(DEPDIR)/ospfclient-ospfclient.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ospfclient.c' object='ospfclient-ospfclient.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ospfclient_CFLAGS) $(CFLAGS) -c -o ospfclient-ospfclient.obj `if test -f 'ospfclient.c'; then $(CYGPATH_W) 'ospfclient.c'; else $(CYGPATH_W) '$(srcdir)/ospfclient.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-ospfapiheaderHEADERS: $(ospfapiheader_HEADERS) + @$(NORMAL_INSTALL) + @list='$(ospfapiheader_HEADERS)'; test -n "$(ospfapiheaderdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(ospfapiheaderdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(ospfapiheaderdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(ospfapiheaderdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(ospfapiheaderdir)" || exit $$?; \ + done + +uninstall-ospfapiheaderHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(ospfapiheader_HEADERS)'; test -n "$(ospfapiheaderdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(ospfapiheaderdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(ospfapiheaderdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libLTLIBRARIES clean-libtool \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-ospfapiheaderHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-ospfapiheaderHEADERS \ + uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-sbinPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-ospfapiheaderHEADERS install-pdf \ + install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-libLTLIBRARIES uninstall-ospfapiheaderHEADERS \ + uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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/ospfclient/ospfclient.c b/ospfclient/ospfclient.c index 1de7644..324e539 100644 --- a/ospfclient/ospfclient.c +++ b/ospfclient/ospfclient.c @@ -284,8 +284,6 @@ static int usage() int main (int argc, char *argv[]) { - struct thread thread; - args = argv; /* ospfclient should be started with the following arguments: @@ -340,11 +338,7 @@ main (int argc, char *argv[]) thread_add_read (master, lsa_read, oclient, oclient->fd_async); /* Now connection is established, run loop */ - while (1) - { - thread_fetch (master, &thread); - thread_call (&thread); - } + thread_main (master); /* Never reached */ return 0; diff --git a/ospfd/.gitignore b/ospfd/.gitignore deleted file mode 100644 index f7d6f09..0000000 --- a/ospfd/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -Makefile -Makefile.in -*.o -ospfd -ospfd.conf -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/ospfd/Makefile.in b/ospfd/Makefile.in new file mode 100644 index 0000000..c9bb8e1 --- /dev/null +++ b/ospfd/Makefile.in @@ -0,0 +1,872 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = ospfd$(EXEEXT) +subdir = ospfd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(ospfdheader_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" \ + "$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(ospfdheaderdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libospf_la_DEPENDENCIES = ../lib/libzebra.la +am_libospf_la_OBJECTS = ospfd.lo ospf_zebra.lo ospf_interface.lo \ + ospf_ism.lo ospf_neighbor.lo ospf_nsm.lo ospf_dump.lo \ + ospf_network.lo ospf_packet.lo ospf_lsa.lo ospf_spf.lo \ + ospf_route.lo ospf_ase.lo ospf_abr.lo ospf_ia.lo ospf_flood.lo \ + ospf_lsdb.lo ospf_asbr.lo ospf_routemap.lo ospf_snmp.lo \ + ospf_opaque.lo ospf_te.lo ospf_ri.lo ospf_vty.lo ospf_api.lo \ + ospf_apiserver.lo +libospf_la_OBJECTS = $(am_libospf_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libospf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libospf_la_LDFLAGS) $(LDFLAGS) -o $@ +PROGRAMS = $(sbin_PROGRAMS) +am_ospfd_OBJECTS = ospf_main.$(OBJEXT) +ospfd_OBJECTS = $(am_ospfd_OBJECTS) +ospfd_DEPENDENCIES = libospf.la ../lib/libzebra.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libospf_la_SOURCES) $(ospfd_SOURCES) +DIST_SOURCES = $(libospf_la_SOURCES) $(ospfd_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) $(ospfdheader_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ $(LOCAL_OPTS) -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +AM_CFLAGS = $(WERROR) +INSTALL_SDATA = @INSTALL@ -m 600 +lib_LTLIBRARIES = libospf.la +libospf_la_LDFLAGS = -version-info 0:0:0 +libospf_la_LIBADD = ../lib/libzebra.la +libospf_la_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_ri.c ospf_vty.c ospf_api.c ospf_apiserver.c + +ospfdheaderdir = $(pkgincludedir)/ospfd +ospfdheader_HEADERS = \ + ospf_api.h ospf_asbr.h ospf_dump.h ospf_lsa.h ospf_lsdb.h \ + ospf_nsm.h ospf_ism.h ospf_opaque.h ospfd.h + +noinst_HEADERS = \ + ospf_interface.h ospf_neighbor.h ospf_network.h ospf_packet.h \ + ospf_zebra.h ospf_spf.h ospf_route.h ospf_ase.h ospf_abr.h ospf_ia.h \ + ospf_flood.h ospf_snmp.h ospf_te.h ospf_ri.h ospf_vty.h ospf_apiserver.h + +ospfd_SOURCES = ospf_main.c +ospfd_LDADD = libospf.la ../lib/libzebra.la @LIBCAP@ @LIBM@ +EXTRA_DIST = OSPF-MIB.txt OSPF-TRAP-MIB.txt ChangeLog.opaque.txt +examplesdir = $(exampledir) +dist_examples_DATA = ospfd.conf.sample +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ospfd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ospfd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libospf.la: $(libospf_la_OBJECTS) $(libospf_la_DEPENDENCIES) $(EXTRA_libospf_la_DEPENDENCIES) + $(AM_V_CCLD)$(libospf_la_LINK) -rpath $(libdir) $(libospf_la_OBJECTS) $(libospf_la_LIBADD) $(LIBS) +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +ospfd$(EXEEXT): $(ospfd_OBJECTS) $(ospfd_DEPENDENCIES) $(EXTRA_ospfd_DEPENDENCIES) + @rm -f ospfd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ospfd_OBJECTS) $(ospfd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_abr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_api.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_apiserver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_asbr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_ase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_dump.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_flood.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_ia.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_interface.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_ism.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_lsa.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_lsdb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_neighbor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_network.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_nsm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_opaque.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_packet.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_ri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_route.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_routemap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_snmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_spf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_te.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_vty.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospf_zebra.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ospfd.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) +install-ospfdheaderHEADERS: $(ospfdheader_HEADERS) + @$(NORMAL_INSTALL) + @list='$(ospfdheader_HEADERS)'; test -n "$(ospfdheaderdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(ospfdheaderdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(ospfdheaderdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(ospfdheaderdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(ospfdheaderdir)" || exit $$?; \ + done + +uninstall-ospfdheaderHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(ospfdheader_HEADERS)'; test -n "$(ospfdheaderdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(ospfdheaderdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)" "$(DESTDIR)$(ospfdheaderdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libLTLIBRARIES clean-libtool \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA install-ospfdheaderHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-libLTLIBRARIES \ + uninstall-ospfdheaderHEADERS uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-sbinPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-ospfdheaderHEADERS \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-libLTLIBRARIES \ + uninstall-ospfdheaderHEADERS uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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-ALIGNMENT.txt b/ospfd/OSPF-ALIGNMENT.txt deleted file mode 100644 index dac6182..0000000 --- a/ospfd/OSPF-ALIGNMENT.txt +++ /dev/null @@ -1,119 +0,0 @@ -$Id: OSPF-ALIGNMENT.txt,v 1.1 2004/11/17 17:59:52 gdt Exp $ - -Greg Troxel -2004-11-17 - -The OSPF specification (RFC2328) and the OSPF Opaque LSA specification -(RFC2370) are ambiguous about LSAs whose data section is not an -integral multiple of 4 octets. This note examines the issue and -proposes clarifications to ensure interoperability. - -RFC2328 does not specify that LSA lengths be a multiple of 4. -It does not require that LSAs in update packets be aligned. -However, all structures defined by RFC2328 are multiples of 4, and -thus update packets with those structures must be aligned. -LSA length is defined in Appendix A.4 as - - length - The length in bytes of the LSA. This includes the 20 byte LSA - header. - -RFC2370 defines Opaque LSAs, which are intended to contain arbitrary -data: - - This memo defines enhancements to the OSPF protocol to support a new - class of link-state advertisements (LSA) called Opaque LSAs. Opaque - LSAs provide a generalized mechanism to allow for the future - extensibility of OSPF. Opaque LSAs consist of a standard LSA header - followed by application-specific information. The information field - may be used directly by OSPF or by other applications. Standard OSPF - link-state database flooding mechanisms are used to distribute Opaque - LSAs to all or some limited portion of the OSPF topology. - - -Later, 2370 says: - - Opaque LSAs contain some number of octets (of application-specific - data) padded to 32-bit alignment. - -This can be interpreted in several ways: - -A) The payload may be any number of octets, and the length field -reflects the payload length (e.g. length 23 for 3 octets of payload), -but there are padding octets following the LSA in packets, so that the -next LSA starts on a 4-octet boundary. (This approach is common in -the BSD user/kernel interface.) - -B) The payload must be a multiple of 4 octets, so that the length is a -multiple of 4 octets. This corresponds to an implementation that -treats an Opaque LSA publish request that is not a multiple of 4 -octets as an error. - -C) The payload can be any number of octets, but padding is added and -included in the length field. This interpretation corresponds to an -OSPF implementation that accepts a publish request for an Opaque LSA -that is not a multiple of 4 octets. This interpretation is -nonsensical, because it claims to represent arbitrary lengths, but -does not actually do so --- the receiver cannot distinguish padding -from supplied data. - -D) Accept according to A, and transmit according to B. - -Option A arguably violates RFC 2328, which doesn't say anything about -adding padding (A.3.5 shows a diagram of adjacent LSAs which are shown -as all multiples of 4). This option is thus likely to lead to a lack -of interoperability. - -Option B restricts what data can be represented as an Opaque LSA, but -probably not in a serious way. It is likely to lead to -interoperability in that the complex case of non-multiple-of-4 lengths -will not arise. - -However, an implementation that follows A and emits an LSA with -payload length not a multiple of 4 will not interoperate with an -Option B implementation. - -Given that all known and documented uses of Opaque LSAs seem to be -multiples of 4 octets, we choose Option B as the clarification. - -CLARIFYING TEXT - -In RFC2328: - -In section A.4, add a second sentence about length: - - length - The length in bytes of the LSA. This includes the 20 byte LSA - header. The length must be an integral multiple of 4 bytes. - -Add to the list in Section 13: - - Verify that the length of the LSA is a multiple of 4 bytes. If - not, discard the entire Link State Update Packet. - -In RFC2380: - -Change text: - - Opaque LSAs contain some number of octets (of application-specific - data) padded to 32-bit alignment. - -to: - - Opaque LSAs contain some a number of octets (of - application-specific data). The number of octets must be a - multiple of four. - - -HOW THIS ISSUE AROSE - -At BBN, we use Opaque LSAs to exchange data among routers; the format -of the data is naturally aligned to 4 bytes, and thus does not raise -this issue. We created a test program to publish Opaque data via IPC -to the OSPF daemon (quagga), and this program accepts strings on the -command line to publish. We then used this test program to publish -software version strings. Quagga's ospfd then crashed on a -NetBSD/sparc64 machine with an alignment fault, because the odd-length -LSAs were marshalled into a link-state update packet with no padding. -While this behavior was a clear violation of RFC2380, it was not clear -how to remedy the problem. diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c index 32b64e2..ee48018 100644 --- a/ospfd/ospf_main.c +++ b/ospfd/ospf_main.c @@ -186,7 +186,6 @@ main (int argc, char **argv) int daemon_mode = 0; char *config_file = NULL; char *progname; - struct thread thread; int dryrun = 0; /* Set umask before anything for security */ @@ -334,10 +333,8 @@ main (int argc, char **argv) /* Print banner. */ zlog_notice ("OSPFd %s starting: vty@%d", QUAGGA_VERSION, vty_port); - /* Fetch next active thread. */ - while (thread_fetch (master, &thread)) - thread_call (&thread); - + thread_main (master); + /* Not reached. */ return (0); } diff --git a/ospfd/ospf_te.h b/ospfd/ospf_te.h index 8bb77c4..d80629c 100644 --- a/ospfd/ospf_te.h +++ b/ospfd/ospf_te.h @@ -386,7 +386,7 @@ struct te_link_subtlv /* Following structure are internal use only. */ struct ospf_mpls_te { - /* Status of MPLS-TE: enable or disbale */ + /* Status of MPLS-TE: enable or disable */ status_t status; /* RFC5392 */ diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c index 60d9852..95d2afe 100644 --- a/ospfd/ospf_zebra.c +++ b/ospfd/ospf_zebra.c @@ -1069,7 +1069,7 @@ ospf_distribute_list_update (struct ospf *ospf, uintptr_t type) /* If access-list is updated, apply some check. */ static void -ospf_filter_update (struct access_list *access) +ospf_filter_update (const char *name) { struct ospf *ospf; int type; @@ -1112,7 +1112,7 @@ ospf_filter_update (struct access_list *access) /* Schedule distribute-list update timer. */ if (DISTRIBUTE_LIST (ospf, type) == NULL || - strcmp (DISTRIBUTE_NAME (ospf, type), access->name) == 0) + strcmp (DISTRIBUTE_NAME (ospf, type), name) == 0) ospf_distribute_list_update (ospf, type); } } diff --git a/pimd/.gitignore b/pimd/.gitignore deleted file mode 100644 index 51a2ac8..0000000 --- a/pimd/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -Makefile -Makefile.in -libpim.a -pimd -test_igmpv3_join -tags -TAGS -.deps -*.o -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT diff --git a/pimd/CAVEATS b/pimd/CAVEATS deleted file mode 100644 index 9f07bda..0000000 --- a/pimd/CAVEATS +++ /dev/null @@ -1,178 +0,0 @@ -# $QuaggaId: $Format:%an, %ai, %h$ $ - -C1 IGMPv3 backward compatibility with IGMPv1 and IGMPv2 is not - implemented. See RFC 3376, 7.3. Multicast Router Behavior. That's - because only Source-Specific Multicast is currently targeted. - -C2 IGMPv3 support for forwarding any-source groups is not - implemented. Traffic for groups in mode EXCLUDE {empty} won't be - forwarded. See RFC 3376, 6.3. Source-Specific Forwarding - Rules. That's because only Source-Specific Multicast is currently - targeted. - -C3 Load Splitting of IP Multicast Traffic over ECMP is not supported. - See also: RFC 2991 - Multipath Issues in Unicast and Multicast Next-Hop Selection - http://www.rfc-editor.org/rfc/rfc2991.txt - -C4 IPSec AH authentication is not supported (RFC 4601: - 6.3. Authentication Using IPsec). - -C5 PIM support is limited to SSM mode as defined in section 4.8.2 - (PIM-SSM-Only Routers) of RFC4601. That's because only - Source-Specific Multicast is currently targeted. - -C6 PIM implementation currently does not support IPv6. PIM-SSM - requires IGMPv3 for IPv4 and MLDv2 for IPv6. MLDv2 is currently - missing. See also CAVEAT C9. - -C7 FIXED (S,G) Assert state machine (RFC 4601, section 4.6.1) is not - implemented. See also TODO T6. See also CAVEAT C10. - -C8 It is not possible to disable join suppression in order to - explicitly track the join membership of individual downstream - routers. - - IGMPv3 Explicit Membership Tracking is not supported. - When explicit tracking is enabled on a router, the router can - individually track the Internet Group Management Protocol (IGMP) - membership state of all reporting hosts. This feature allows the - router to achieve minimal leave latencies when hosts leave a - multicast group or channel. Example: - conf t - interface eth0 - ip igmp explicit-tracking - -C9 Only IPv4 Address Family (number=1) is supported in the PIM Address - Family field. - See also RFC 4601: 5.1. PIM Address Family - See also CAVEAT C6. - See also http://www.iana.org/assignments/address-family-numbers - -C10 FIXED Assert metric depends on metric_preference and - route_metric. Those parameters should be fetched from RIB - (zebra). See also pim_rpf.c, pim_rpf_update(). - -C11 SSM Mapping is not supported - - SSM Mapping Overview: - - SSM mapping introduces a means for the last hop router to discover - sources sending to groups. When SSM mapping is configured, if a - router receives an IGMPv1 or IGMPv2 membership report for a - particular group G, the router translates this report into one or - more (S, G) channel memberships for the well-known sources - associated with this group. - - When the router receives an IGMPv1 or IGMPv2 membership report for - a group G, the router uses SSM mapping to determine one or more - source IP addresses for the group G. SSM mapping then translates - the membership report as an IGMPv3 report INCLUDE (G, [S1, G], - [S2, G]...[Sn, G] and continues as if it had received an IGMPv3 - report. The router then sends out PIM joins toward (S1, G) to (Sn, - G) and continues to be joined to these groups as long as it - continues to receive the IGMPv1 or IGMPv2 membership reports and - as long as the SSM mapping for the group remains the same. SSM - mapping, thus, enables you to leverage SSM for video delivery to - legacy STBs that do not support IGMPv3 or for applications that do - not take advantage of the IGMPv3 host stack. - - SSM mapping enables the last hop router to determine the source - addresses either by a statically configured table on the router or - by consulting a DNS server. When the statically configured table - is changed, or when the DNS mapping changes, the router will leave - the current sources associated with the joined groups. - -C12 FIXED MRIB for incongruent unicast/multicast topologies is not - supported. RPF mechanism currently just looks up the information - in the unicast routing table. - - See also: - RFC5110: 2.2.3. Issue: Overlapping Unicast/Multicast Topology - - Sometimes, multicast RPF mechanisms first look up the multicast - routing table, or M-RIB ("topology database") with a longest - prefix match algorithm, and if they find any entry (including a - default route), that is used; if no match is found, the unicast - routing table is used instead. - -C13 Can't detect change of primary address before the actual change. - Possible approach is to craft old interface address into ip source - address by using raw ip socket. - - See also: - - RFC 4601: 4.3.1. Sending Hello Messages - - Before an interface goes down or changes primary IP address, a - Hello message with a zero HoldTime should be sent immediately - (with the old IP address if the IP address changed). - - See also pim_sock_delete(). - -C14 FIXED Detection of interface primary address changes may fail when - there are multiple addresses. - See also TODO T32. - -C15 Changes in interface secondary address list are not immediately - detected. - See also detect_secondary_address_change - See also TODO T31. - -C16 AMT Draft (mboned-auto-multicast) is not supported. - AMT = Automatic IP Multicast Without Explicit Tunnels - - See also: - - Draft - http://tools.ietf.org/html/draft-ietf-mboned-auto-multicast - http://tools.ietf.org/html/draft-ietf-mboned-auto-multicast-09 - - AMT gateway implementation for Linux - http://cs.utdallas.edu/amt/ - - AMT for Streaming (IPTV) on Global IP Multicast by Greg Shepherd (Cisco) - http://nznog.miniconf.org/nznog-2008-sysadmin-miniconf-greg-shepherd-iptv.pdf - -C17 SNMP / RFC 5060 (PIM MIB) is not supported. - -C18 MFC never recovers from removal of static route to source - - # route add -host 1.2.3.4 gw 192.168.56.10 - Before removal: - quagga-pimd-router# sh ip mroute - Source Group Proto Input iVifI Output oVifI TTL Uptime - 1.2.3.4 232.1.2.3 I eth1 3 eth0 2 1 00:00:36 - - # route del -host 1.2.3.4 gw 192.168.56.10 - After removal: sh ip mroute --> empty output - - # route add -host 1.2.3.4 gw 192.168.56.10 - After the route is restored: sh ip mroute --> never recovers (empty output) - - At this point, "no ip pim ssm" on the upstream interface (eth0) crashes pimd: - - 2014/02/14 16:30:14 PIM: ifmembership_set: (S,G)=(1.2.3.4,232.1.2.3) membership now is NOINFO on interface eth0 - 2014/02/14 16:30:14 PIM: pim_ifchannel_update_assert_tracking_desired: AssertTrackingDesired(1.2.3.4,232.1.2.3,eth0) changed from 1 to 0 - 2014/02/14 16:30:14 PIM: pim_zebra.c del_oif: nonexistent protocol mask 2 removed OIF eth0 (vif_index=2, min_ttl=0) from channel (S,G)=(1.2.3.4,232.1.2.3) - 2014/02/14 16:30:14 PIM: pim_ifchannel_update_could_assert: CouldAssert(1.2.3.4,232.1.2.3,eth0) changed from 1 to 0 - 2014/02/14 16:30:14 PIM: pim_ifchannel_update_my_assert_metric: my_assert_metric(1.2.3.4,232.1.2.3,eth0) changed from 0,0,0,10.0.2.15 to 1,4294967295,4294967295,0.0.0.0 - 2014/02/14 16:30:14 PIM: pim_zebra.c del_oif: nonexistent protocol mask 1 removed OIF eth0 (vif_index=2, min_ttl=0) from channel (S,G)=(1.2.3.4,232.1.2.3) - 2014/02/14 16:30:14 PIM: Assertion `!IGMP_SOURCE_TEST_FORWARDING(source->source_flags)' failed in file pim_igmpv3.c, line 412, function igmp_source_delete - -C19 Provision to prevent group mode clash - - Beware group mode clash. A host/application issuing IGMPv2 - any-source joins for a group will disrupt SSM multicast for that - group. - - For instance, support for source-specific static igmp WILL FAIL if - there is host/application issuing IGMPv2 any-source joins for the - same group. - - The reason is the IGMPv2 any-source join forces qpimd to switch - the group mode to ASM (any-source multicast); however, qpimd is - unable to program ASM groups into the kernel; multicast won't - flow. There could be some provision to prevent such a behavior, - but currently there is none. - --x- diff --git a/pimd/COMMANDS b/pimd/COMMANDS deleted file mode 100644 index 425ac82..0000000 --- a/pimd/COMMANDS +++ /dev/null @@ -1,81 +0,0 @@ -# $QuaggaId: $Format:%an, %ai, %h$ $ - -global configuration commands: - pimd: - ip multicast-routing Enable IP multicast forwarding - ip ssmpingd Enable ssmpingd operation - - zebra: - ip mroute Configure static unicast route into MRIB for multicast RPF lookup - -interface configuration commands: - pimd: - ip igmp Enable IGMP operation - ip igmp join IGMP join multicast group - ip igmp query-interval <1-1800> IGMP host query interval - ip igmp query-max-response-time <1-25> IGMP max query response (seconds) - ip igmp query-max-response-time-dsec <10-250> IGMP max query response (deciseconds) - ip pim ssm Enable PIM SSM operation - -verification commands: - pimd: - show ip igmp interface IGMP interface information - show ip igmp join IGMP static join information - show ip igmp parameters IGMP parameters information - show ip igmp groups IGMP groups information - show ip igmp groups retransmissions IGMP group retransmission - show ip igmp sources IGMP sources information - show ip igmp sources retransmissions IGMP source retransmission - show ip pim address PIM interface address - show ip pim assert PIM interface assert - show ip pim assert-internal PIM interface internal assert state - show ip pim assert-metric PIM interface assert metric - show ip pim assert-winner-metric PIM interface assert winner metric - show ip pim designated-router PIM interface designated router - show ip pim hello PIM interface hello information - show ip pim interface PIM interface information - show ip pim lan-prune-delay PIM neighbors LAN prune delay parameters - show ip pim local-membership PIM interface local-membership - show ip pim jp-override-interval PIM interface J/P override interval - show ip pim join PIM interface join information - show ip pim neighbor PIM neighbor information - show ip pim rpf PIM cached source rpf information - show ip pim secondary PIM neighbor addresses - show ip pim upstream PIM upstream information - show ip pim upstream-join-desired PIM upstream join-desired - show ip pim upstream-rpf PIM upstream source rpf - show ip multicast Multicast global information - show ip mroute IP multicast routing table - show ip mroute count Route and packet count data - show ip rib IP unicast routing table - show ip ssmpingd ssmpingd operation - - zebra: - show ip rpf Display RPF information for multicast source - -debug commands: - pimd: - clear ip interfaces Reset interfaces - clear ip igmp interfaces Reset IGMP interfaces - clear ip mroute Reset multicast routes - clear ip pim interfaces Reset PIM interfaces - clear ip pim oil Rescan PIM OIL (output interface list) - debug igmp IGMP protocol activity - debug mroute PIM interaction with kernel MFC cache - debug pim PIM protocol activity - debug pim zebra ZEBRA protocol activity - debug ssmpingd ssmpingd activity - show debugging State of each debugging option - test igmp receive report Test reception of IGMPv3 report - test pim receive assert Test reception of PIM assert - test pim receive dump Test reception of PIM packet dump - test pim receive hello Test reception of PIM hello - test pim receive join Test reception of PIM join - test pim receive prune Test reception of PIM prune - test pim receive upcall Test reception of kernel upcall - -statistics commands: - pimd: - show memory pim PIM memory statistics - --x- diff --git a/pimd/DEBUG b/pimd/DEBUG deleted file mode 100644 index 72fb826..0000000 --- a/pimd/DEBUG +++ /dev/null @@ -1,86 +0,0 @@ -# $QuaggaId: $Format:%an, %ai, %h$ $ - -DEBUG HINTS - - - Check the source is issuing multicast packets with TTL high enough - to reach the recipients. - - - Check the multicast packets are not being dropped due to - fragmentation problems. - - - Three easy options to test IGMPv3 joins from the receiver host: - - 1) Configure pimd on the receiver host with "ip igmp join": - - interface eth0 - ip pim ssm - ip igmp join 239.1.1.1 1.1.1.1 - - 2) Use test_igmpv3_join command-line utility (provided with qpimd): - - test_igmpv3_join eth0 239.1.1.1 1.1.1.1 - - 3) User the Stig Venaas' ssmping utility: - - ssmping -I eth0 1.1.1.1 - - To see multicast responses with ssmping, you will need run on - the host 1.1.1.1 either: - a) Stig Venaas' ssmpingd command-line daemon - OR - b) qpimd built-in ssmpingd service: - conf t - ip ssmpingd 1.1.1.1 - - - Using nepim to generate multicast stream from 1.1.1.1 to 239.1.1.1: - - Notices: - - a) The host unicast address 1.1.1.1 must be reachable from the - receiver. - - b) nepim tool requires the receiver must be started *before* the - sender. - - First: Start a receiver for that stream by running: - - nepim -q -6 -j 1.1.1.1+239.1.1.1@eth0 - (Remember of enabling both "ip pim ssm" and "ip igmp" under eth0.) - - Second: Start the sender at host 1.1.1.1. - - The following command generates a 100-kbps multicast stream for - channel 1.1.1.1,239.1.1.1 with TTL 10 and 1000-byte payload per UDP - packet (to avoid fragmentation): - - nepim -6 -M -b 1.1.1.1 -c 239.1.1.1 -T 10 -W 1000 -r 100k -a 1d - - - -SAMPLE DEBUG COMMANDS - - conf t - int eth0 - ip pim ssm - - test pim receive hello eth0 192.168.0.2 600 10 111 1000 3000 0 - test pim receive join eth0 600 192.168.0.1 192.168.0.2 239.1.1.1 1.1.1.1 - - show ip pim join - - -INTEROPERABILITY WITH CISCO - - ! Cisco IP Multicast command reference: - ! ftp://ftpeng.cisco.com/ipmulticast/Multicast-Commands - ! - ip pim ssm default ! enable SSM mode for groups 232.0.0.0/8 - ip multicast-routing - ip pim state-refresh disable - no ip pim dm-fallback - ! - interface FastEthernet0 - ip pim sparse-mode - ip igmp version 3 - --x- diff --git a/pimd/LINUX_KERNEL_MROUTE_MFC b/pimd/LINUX_KERNEL_MROUTE_MFC deleted file mode 100644 index e87e567..0000000 --- a/pimd/LINUX_KERNEL_MROUTE_MFC +++ /dev/null @@ -1,26 +0,0 @@ -# $QuaggaId: $Format:%an, %ai, %h$ $ - -# -# The Linux Kernel MFC (Multicast Forwarding Cache) -# - -# Check Linux kernel multicast interfaces: -cat /proc/net/dev_mcast - -# Check that interface eth0 is forwarding multicast: -cat /proc/sys/net/ipv4/conf/eth0/mc_forwarding - -# Check Linux kernel multicast VIFs: -cat /proc/net/ip_mr_vif -Interface BytesIn PktsIn BytesOut PktsOut Flags Local Remote - -# Check Linux kernel MFC: -# Oifs format = vifi:TTL -cat /proc/net/ip_mr_cache -Group Origin Iif Pkts Bytes Wrong Oifs - -# iproute2 can display the MFC: -ip mroute show -(2.2.2.2, 239.2.2.2) Iif: eth1 Oifs: eth0 - -# -- end-of-file -- diff --git a/pimd/Makefile.in b/pimd/Makefile.in new file mode 100644 index 0000000..10db91c --- /dev/null +++ b/pimd/Makefile.in @@ -0,0 +1,942 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +# qpimd - pimd for quagga +# Copyright (C) 2008 Everton da Silva Marques +# +# qpimd 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. +# +# qpimd 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 qpimd; see the file COPYING. If not, write +# to the Free Software Foundation, Inc., 59 Temple Place - Suite +# 330, Boston, MA 02111-1307, USA. + +# PIM_DEBUG_BYDEFAULT: Automatically enables all pimd "debug ..." commands +# PIM_ZCLIENT_DEBUG: Support for internal ZEBRA client debugging +# PIM_CHECK_RECV_IFINDEX_SANITY: Compare socket ifindex with recv ifindex +# PIM_REPORT_RECV_IFINDEX_MISMATCH: Report sock/recv ifindex mismatch +# PIM_ENFORCE_LOOPFREE_MFC: Refuse adding looping MFC entries +# PIM_UNEXPECTED_KERNEL_UPCALL: Report unexpected kernel upcall + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = pimd$(EXEEXT) +bin_PROGRAMS = test_igmpv3_join$(EXEEXT) +subdir = pimd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libpim_a_AR = $(AR) $(ARFLAGS) +libpim_a_LIBADD = +am_libpim_a_OBJECTS = pimd.$(OBJEXT) pim_version.$(OBJEXT) \ + pim_cmd.$(OBJEXT) pim_signals.$(OBJEXT) pim_iface.$(OBJEXT) \ + pim_vty.$(OBJEXT) pim_igmp.$(OBJEXT) pim_sock.$(OBJEXT) \ + pim_zebra.$(OBJEXT) pim_igmpv3.$(OBJEXT) pim_str.$(OBJEXT) \ + pim_mroute.$(OBJEXT) pim_util.$(OBJEXT) pim_time.$(OBJEXT) \ + pim_oil.$(OBJEXT) pim_zlookup.$(OBJEXT) pim_pim.$(OBJEXT) \ + pim_tlv.$(OBJEXT) pim_neighbor.$(OBJEXT) pim_hello.$(OBJEXT) \ + pim_ifchannel.$(OBJEXT) pim_join.$(OBJEXT) \ + pim_assert.$(OBJEXT) pim_msg.$(OBJEXT) pim_upstream.$(OBJEXT) \ + pim_rpf.$(OBJEXT) pim_macro.$(OBJEXT) pim_igmp_join.$(OBJEXT) \ + pim_ssmpingd.$(OBJEXT) pim_int.$(OBJEXT) pim_static.$(OBJEXT) \ + pim_routemap.$(OBJEXT) +libpim_a_OBJECTS = $(am_libpim_a_OBJECTS) +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" \ + "$(DESTDIR)$(examplesdir)" +PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS) +am__objects_1 = pimd.$(OBJEXT) pim_version.$(OBJEXT) pim_cmd.$(OBJEXT) \ + pim_signals.$(OBJEXT) pim_iface.$(OBJEXT) pim_vty.$(OBJEXT) \ + pim_igmp.$(OBJEXT) pim_sock.$(OBJEXT) pim_zebra.$(OBJEXT) \ + pim_igmpv3.$(OBJEXT) pim_str.$(OBJEXT) pim_mroute.$(OBJEXT) \ + pim_util.$(OBJEXT) pim_time.$(OBJEXT) pim_oil.$(OBJEXT) \ + pim_zlookup.$(OBJEXT) pim_pim.$(OBJEXT) pim_tlv.$(OBJEXT) \ + pim_neighbor.$(OBJEXT) pim_hello.$(OBJEXT) \ + pim_ifchannel.$(OBJEXT) pim_join.$(OBJEXT) \ + pim_assert.$(OBJEXT) pim_msg.$(OBJEXT) pim_upstream.$(OBJEXT) \ + pim_rpf.$(OBJEXT) pim_macro.$(OBJEXT) pim_igmp_join.$(OBJEXT) \ + pim_ssmpingd.$(OBJEXT) pim_int.$(OBJEXT) pim_static.$(OBJEXT) \ + pim_routemap.$(OBJEXT) +am_pimd_OBJECTS = pim_main.$(OBJEXT) $(am__objects_1) +pimd_OBJECTS = $(am_pimd_OBJECTS) +pimd_DEPENDENCIES = ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_test_igmpv3_join_OBJECTS = test_igmpv3_join.$(OBJEXT) \ + pim_igmp_join.$(OBJEXT) +test_igmpv3_join_OBJECTS = $(am_test_igmpv3_join_OBJECTS) +test_igmpv3_join_LDADD = $(LDADD) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libpim_a_SOURCES) $(pimd_SOURCES) \ + $(test_igmpv3_join_SOURCES) +DIST_SOURCES = $(libpim_a_SOURCES) $(pimd_SOURCES) \ + $(test_igmpv3_join_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp AUTHORS \ + COPYING README TODO +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" $(PIM_DEFS) +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +#PIM_DEFS += -DPIM_DEBUG_BYDEFAULT +#PIM_DEFS += -DPIM_REPORT_RECV_IFINDEX_MISMATCH +PIM_DEFS = -DPIM_CHECK_RECV_IFINDEX_SANITY -DPIM_ZCLIENT_DEBUG \ + -DPIM_ENFORCE_LOOPFREE_MFC +#PIM_DEFS += -DPIM_UNEXPECTED_KERNEL_UPCALL +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +INSTALL_SDATA = @INSTALL@ -m 600 +AM_CFLAGS = $(WERROR) +noinst_LIBRARIES = libpim.a +libpim_a_SOURCES = \ + pimd.c pim_version.c pim_cmd.c pim_signals.c pim_iface.c \ + pim_vty.c pim_igmp.c pim_sock.c pim_zebra.c \ + pim_igmpv3.c pim_str.c pim_mroute.c pim_util.c pim_time.c \ + pim_oil.c pim_zlookup.c pim_pim.c pim_tlv.c pim_neighbor.c \ + pim_hello.c pim_ifchannel.c pim_join.c pim_assert.c \ + pim_msg.c pim_upstream.c pim_rpf.c pim_macro.c \ + pim_igmp_join.c pim_ssmpingd.c pim_int.c pim_static.c \ + pim_routemap.c + +noinst_HEADERS = \ + pimd.h pim_version.h pim_cmd.h pim_signals.h pim_iface.h \ + pim_vty.h pim_igmp.h pim_sock.h pim_zebra.h \ + pim_igmpv3.h pim_str.h pim_mroute.h pim_util.h pim_time.h \ + pim_oil.h pim_zlookup.h pim_pim.h pim_tlv.h pim_neighbor.h \ + pim_hello.h pim_ifchannel.h pim_join.h pim_assert.h \ + pim_msg.h pim_upstream.h pim_rpf.h pim_macro.h \ + pim_igmp_join.h pim_ssmpingd.h pim_int.h pim_static.h + +pimd_SOURCES = \ + pim_main.c $(libpim_a_SOURCES) + +test_igmpv3_join_SOURCES = \ + test_igmpv3_join.c pim_igmp_join.c + +pimd_LDADD = ../lib/libzebra.la @LIBCAP@ +examplesdir = $(exampledir) +dist_examples_DATA = pimd.conf.sample +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pimd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu pimd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libpim.a: $(libpim_a_OBJECTS) $(libpim_a_DEPENDENCIES) $(EXTRA_libpim_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpim.a + $(AM_V_AR)$(libpim_a_AR) libpim.a $(libpim_a_OBJECTS) $(libpim_a_LIBADD) + $(AM_V_at)$(RANLIB) libpim.a +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +pimd$(EXEEXT): $(pimd_OBJECTS) $(pimd_DEPENDENCIES) $(EXTRA_pimd_DEPENDENCIES) + @rm -f pimd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pimd_OBJECTS) $(pimd_LDADD) $(LIBS) + +test_igmpv3_join$(EXEEXT): $(test_igmpv3_join_OBJECTS) $(test_igmpv3_join_DEPENDENCIES) $(EXTRA_test_igmpv3_join_DEPENDENCIES) + @rm -f test_igmpv3_join$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_igmpv3_join_OBJECTS) $(test_igmpv3_join_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_assert.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_cmd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_hello.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_iface.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_ifchannel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_igmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_igmp_join.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_igmpv3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_int.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_join.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_macro.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_mroute.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_msg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_neighbor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_oil.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_pim.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_routemap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_rpf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_signals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_sock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_ssmpingd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_static.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_str.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_tlv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_upstream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_version.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_vty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_zebra.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pim_zlookup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pimd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_igmpv3_join.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-libtool \ + clean-noinstLIBRARIES clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-dist_examplesDATA \ + uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool \ + clean-noinstLIBRARIES clean-sbinPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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/pimd/TROUBLESHOOTING b/pimd/TROUBLESHOOTING deleted file mode 100644 index 7d1f52d..0000000 --- a/pimd/TROUBLESHOOTING +++ /dev/null @@ -1,33 +0,0 @@ -TROUBLESHOOTING - -# Check kernel mcast cache -# On Linux: -ip mroute show - -! qpimd on last-hop router -! . attached to mcast receiver -! . runnning both PIM-SSM and IGMPv3 -! -show ip mroute (kernel mcast programming is correct?) -show ip pim upstream (we joined our upstream?) -show ip pim neighbor (upstream is neighbor?) -show ip pim interface (pim enabled on interfaces?) -show ip multicast (multicast enabled at all?) -show ip rib SRC (unicast route towards source?) - -show ip igmp sources (receiver joined on interface?) -show ip igmp interface (igmp enabled on receiver interface?) - -! qpimd on intermmediate routers -! . may be attached to mcast source -! . runnning only PIM-SSM, not IGMPv3 -! -show ip mroute (kernel mcast programming is correct?) -show ip pim upstream (we joined our upstream?) -show ip pim join (downstream joined us?) -show ip pim neighbor (downstream is neighbor?) -show ip pim interface (pim enabled on interfaces?) -show ip multicast (multicast enabled at all?) -show ip rib SRC (unicast route towards source?) - ---EOF-- diff --git a/pimd/WHY_SSM b/pimd/WHY_SSM deleted file mode 100644 index 2e8c966..0000000 --- a/pimd/WHY_SSM +++ /dev/null @@ -1,32 +0,0 @@ -WHY SSM - -Benefis of PIM SSM over PIM SM ------------------------------- - -- SSM consumes minimum link bandwidth -- SSM simplifies multicast address management (specially important for - inter-domain multicast) - - SSM (S,G) channels easily provide unique per-application addressing - - SSM does not require MSDP between PIM domains -- SSM does not suffer instabilities from traffic-driven SPT switchover -- SSM is not suscetible to DoS attack from unwanted sources -- SSM does not use RP. Some RP issues: - - RP is possible point of failure - - RP demands redundancy management - - RP may require PIM dense mode support for RP election - - RP is possible performance bottleneck - - RP may demand lots of extra management -- SSM can be deployed in an existing PIM SM network (only the last hop - routers need to support IGMPv3) -- SSM is easier to deploy and maintain - -PIM-SSM drawbacks ------------------ - -- SSM requires IGMPv3 support on both receivers and last-hop routers -- SSM may be memory intensive when managing (S,G) states for - many-to-many multicast distribution -- SSM will keep (S,G) state as long as there are subscriptions from - receivers, even if the source is not actually sending traffic - ---EOF-- diff --git a/pimd/pim_main.c b/pimd/pim_main.c index ea70a8f..5642e36 100644 --- a/pimd/pim_main.c +++ b/pimd/pim_main.c @@ -129,7 +129,6 @@ int main(int argc, char** argv, char** envp) { int daemon_mode = 0; char *config_file = NULL; char *zebra_sock_path = NULL; - struct thread thread; umask(0027); @@ -273,8 +272,7 @@ int main(int argc, char** argv, char** envp) { zlog_notice("!HAVE_CLOCK_MONOTONIC"); #endif - while (thread_fetch(master, &thread)) - thread_call(&thread); + thread_main (master); zlog_err("%s %s: thread_fetch() returned NULL, exiting", __FILE__, __PRETTY_FUNCTION__); diff --git a/pkgsrc/.gitignore b/pkgsrc/.gitignore deleted file mode 100644 index 63e9a66..0000000 --- a/pkgsrc/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -Makefile -Makefile.in -*.sh -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/pkgsrc/Makefile.in b/pkgsrc/Makefile.in new file mode 100644 index 0000000..f998aa7 --- /dev/null +++ b/pkgsrc/Makefile.in @@ -0,0 +1,582 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = pkgsrc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = bgpd.sh ospf6d.sh ospfd.sh ripd.sh ripngd.sh \ + zebra.sh +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(rcdir)" +SCRIPTS = $(rc_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/bgpd.sh.in \ + $(srcdir)/ospf6d.sh.in $(srcdir)/ospfd.sh.in \ + $(srcdir)/ripd.sh.in $(srcdir)/ripngd.sh.in \ + $(srcdir)/zebra.sh.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +rcdir = @pkgsrcrcdir@ +rc_SCRIPTS = bgpd.sh ospf6d.sh ospfd.sh ripd.sh ripngd.sh zebra.sh +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pkgsrc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu pkgsrc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +bgpd.sh: $(top_builddir)/config.status $(srcdir)/bgpd.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +ospf6d.sh: $(top_builddir)/config.status $(srcdir)/ospf6d.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +ospfd.sh: $(top_builddir)/config.status $(srcdir)/ospfd.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +ripd.sh: $(top_builddir)/config.status $(srcdir)/ripd.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +ripngd.sh: $(top_builddir)/config.status $(srcdir)/ripngd.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +zebra.sh: $(top_builddir)/config.status $(srcdir)/zebra.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-rcSCRIPTS: $(rc_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(rc_SCRIPTS)'; test -n "$(rcdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(rcdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(rcdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(rcdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(rcdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-rcSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(rc_SCRIPTS)'; test -n "$(rcdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(rcdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(rcdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-rcSCRIPTS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-rcSCRIPTS + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-rcSCRIPTS install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am uninstall-rcSCRIPTS + +.PRECIOUS: Makefile + + +# 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/pkgsrc/README.txt b/pkgsrc/README.txt deleted file mode 100644 index 13ec449..0000000 --- a/pkgsrc/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -$Id: README.txt,v 1.1 2004/08/27 15:57:35 gdt Exp $ - -This directory contains files for use with the pkgsrc framework -(http://www.pkgsrc.org) used with NetBSD and other operating systems. -Eventually it will be hooked into automake such that they can be -installed in /usr/pkg/etc/rc.d (via configure option, probably). - diff --git a/ports/.gitignore b/ports/.gitignore deleted file mode 100644 index dd5bf7c..0000000 --- a/ports/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.arch-inventory -.arch-ids - -*~ -*.loT - diff --git a/ports/Makefile b/ports/Makefile deleted file mode 100644 index 86f77bd..0000000 --- a/ports/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -# New ports collection makefile for: zebra -# Version required: 2.1.5 -# Date created: 28 Feb 1998 -# Whom: seirios@matrix.iri.co.jp -# - -#DISTNAME= zebra-980224 -DISTNAME= zebra-current -PKGNAME= zebra -CATEGORIES= net -MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ - -MAINTAINER= seirios@matrix.iri.co.jp - -WRKSRC= ${WRKDIR}/zebra-current - -#### Under constructing, We cannot support md5 -NO_CHECKSUM= yes - -do-build: - @(cd ${WRKSRC}; sh ./configure; make) - -post-install: - @if [ ! -f ${PREFIX}/etc/rc.d/zebra.sh ]; then \ - echo "Installing ${PREFIX}/etc/rc.d/zebra.sh startup file."; \ - echo "#!/bin/sh" > ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "# zebra" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "if [ -x /usr/local/sbin/zebra -a ! -f /var/run/zebra.pid -a -f /usr/local/etc/zebra.conf ]; then" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " /usr/local/sbin/zebra -d -f /usr/local/etc/zebra.conf" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " echo -n ' zebra'" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "fi" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "# bgpd" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "if [ -x /usr/local/sbin/bgpd -a ! -f /var/run/bgpd.pid -a -f /usr/local/etc/bgpd.conf ]; then" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " /usr/local/sbin/bgpd -d -f /usr/local/etc/bgpd.conf" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " echo -n ' bgpd'" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "fi" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "# ripd" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "if [ -x /usr/local/sbin/ripd -a ! -f /var/run/ripd.pid -a -f /usr/local/etc/ripd.conf ]; then" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " /usr/local/sbin/ripd -d -f /usr/local/etc/ripd.conf" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " echo -n ' ripd'" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "fi" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "# ripngd" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "if [ -x /usr/local/sbin/ripngd -a ! -f /var/run/ripd.pid -a -f /usr/local/etc/ripd.conf ]; then" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " /usr/local/sbin/ripngd -d -f /usr/local/etc/ripd.conf" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo " echo -n ' ripngd'" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - echo "fi" >> ${PREFIX}/etc/rc.d/zebra.sh; \ - chmod 751 ${PREFIX}/etc/rc.d/zebra.sh; \ - fi - @echo "If you will access zebra,bgpd,ripd,ripngd with telnet,"; - @echo "then you add some line (written under this line) to /etc/services"; - @echo " zebrasrv 2600/tcp # zebra service"; - @echo " zebra 2601/tcp # zebra vty"; - @echo " ripd 2602/tcp # RIPd vty"; - @echo " ripngd 2603/tcp # RIPngd vty"; - @echo " ospfd 2604/tcp # OSPFd vty"; - @echo " bgpd 2605/tcp # BGPd vty"; - @echo " pimd 2611/tcp # PIMd vty"; - -.include diff --git a/ports/README b/ports/README deleted file mode 100644 index a650eaa..0000000 --- a/ports/README +++ /dev/null @@ -1 +0,0 @@ -This directory contain files for making FreeBSD package. diff --git a/ports/files/.gitignore b/ports/files/.gitignore deleted file mode 100644 index dd5bf7c..0000000 --- a/ports/files/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.arch-inventory -.arch-ids - -*~ -*.loT - diff --git a/ports/files/md5 b/ports/files/md5 deleted file mode 100644 index 520c348..0000000 --- a/ports/files/md5 +++ /dev/null @@ -1 +0,0 @@ -MD5 (zebra-980224.tar.gz) = c6887645741200c43341156c168c7034 diff --git a/ports/pkg/.gitignore b/ports/pkg/.gitignore deleted file mode 100644 index dd5bf7c..0000000 --- a/ports/pkg/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.arch-inventory -.arch-ids - -*~ -*.loT - diff --git a/ports/pkg/COMMENT b/ports/pkg/COMMENT deleted file mode 100644 index 53c55e3..0000000 --- a/ports/pkg/COMMENT +++ /dev/null @@ -1 +0,0 @@ -Zebra Routing protocol daemon diff --git a/ports/pkg/DESCR b/ports/pkg/DESCR deleted file mode 100644 index aeb1950..0000000 --- a/ports/pkg/DESCR +++ /dev/null @@ -1,76 +0,0 @@ -============= -WHAT IS ZEBRA -============= - Zebra is a free software that manages TCP/IP based routing protocol. - It takes multi-server and multi-thread approach to resolve the current -complexity of the Internet. - - Currently zebra is still under development, so If you want to use zebra, -I strongly recommend you to get the latest version of zebra. - Zebra snapshot is released on every monday. - -=================== -SUPPORTED Protocols -=================== - Zebra supports both IPv4 and IPv6 :-) - For supporting IPv4 Routing protocols is here - RIP (both version1 and version2) - RIPv2 supports both Multicast and Broadcast - BGP (only support BGP4) - - For supporting IPv6 Routing protocols is here - RIPng - BGP4+ - -=================== -Supported plat-home -=================== - Now zebra is testing on - o FreeBSD 2.2.8 - -- without IPv6 ;-) - -- with KAME - -- with INRIA IPv6 protocol stack. - - o GNU/Linux 2.2.2 - o GNU/Linux 2.0.36 - -=========== -ZEBRA Ports -=========== - Each daemon has each own terminal interface. Also zebra has communication -port which provides several services to other daemons. Below is zebra ports -list. - -zebrasrv 2600/tcp # zebra service -zebra 2601/tcp # zebra vty -ripd 2602/tcp # RIPd vty -ripngd 2603/tcp # RIPngd vty -ospfd 2604/tcp # OSPFd vty -bgpd 2605/tcp # BGPd vty -pimd 2611/tcp # PIMd vty - -I recommend you to add upper list to /etc/services. - -==================== -For More Information -==================== - Web page is located at: - http://www.zebra.org/ - - Alpha version source file can be found at: - ftp://ftp.zebra.org/pub/zebra/ - - Mailing List is here - zebra@zebra.org - zebra-jp@zebra.org - - If you want to join zebra mailing list, mail to - majordomo@zebra.org - and you write - subscribe zebra - -- if you want to talk with English - subscribe zebra-jp - -- if you want to talk with Japanese - on Mail BODY (Not Subject). - -Enjoy. diff --git a/ports/pkg/PLIST b/ports/pkg/PLIST deleted file mode 100644 index ccc69eb..0000000 --- a/ports/pkg/PLIST +++ /dev/null @@ -1,8 +0,0 @@ -sbin/zebra -sbin/bgpd -sbin/ripd -etc/bgpd.conf.sample -etc/ripd.conf.sample -etc/zebra.conf.sample -etc/rc.d/zebra.sh -info/zebra.info diff --git a/qpb/.gitignore b/qpb/.gitignore deleted file mode 100644 index b133c52..0000000 --- a/qpb/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -Makefile -Makefile.in -*.o -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.a -*.libs -.arch-inventory -.arch-ids -*~ -*.loT diff --git a/qpb/Makefile.in b/qpb/Makefile.in new file mode 100644 index 0000000..9b663c0 --- /dev/null +++ b/qpb/Makefile.in @@ -0,0 +1,769 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +# +# Automake fragment intended to be shared by Makefile.am files in the +# tree. +# + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = qpb +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libquagga_pb_la_LIBADD = +am__libquagga_pb_la_SOURCES_DIST = linear_allocator.h qpb.h qpb.c \ + qpb_allocator.h qpb_allocator.c +@HAVE_PROTOBUF_TRUE@am__objects_1 = qpb_allocator.lo +am_libquagga_pb_la_OBJECTS = qpb.lo $(am__objects_1) +@HAVE_PROTOBUF_TRUE@am__objects_2 = qpb.pb-c.lo +nodist_libquagga_pb_la_OBJECTS = $(am__objects_2) +libquagga_pb_la_OBJECTS = $(am_libquagga_pb_la_OBJECTS) \ + $(nodist_libquagga_pb_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libquagga_pb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libquagga_pb_la_LDFLAGS) $(LDFLAGS) \ + -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libquagga_pb_la_SOURCES) $(nodist_libquagga_pb_la_SOURCES) +DIST_SOURCES = $(am__libquagga_pb_la_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/../common.am $(srcdir)/Makefile.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Uncomment to use an non-system version of libprotobuf-c. +# +# Q_PROTOBUF_C_CLIENT_INCLUDES = -I$(top_srcdir)/third-party/protobuf-c/src +# Q_PROTOBUF_C_CLIENT_LDOPTS = $(top_builddir)/third-party/protobuf-c/src/libprotobuf-c.la +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_C_CLIENT_INCLUDES = +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_C_CLIENT_LDOPTS = -lprotobuf-c +@HAVE_PROTOBUF_TRUE@Q_PROTOC = protoc +@HAVE_PROTOBUF_TRUE@Q_PROTOC_C = protoc-c +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_CFILES = $(filter %.pb-c.c,$(SOURCES)) +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_SRCS = $(Q_PROTOBUF_CFILES) $(Q_PROTOBUF_HFILES) + +# +# Information about how to link to various libraries. +# +@HAVE_PROTOBUF_TRUE@Q_QUAGGA_PB_CLIENT_LDOPTS = $(top_srcdir)/qpb/libquagga_pb.la $(Q_PROTOBUF_C_CLIENT_LDOPTS) +@HAVE_PROTOBUF_TRUE@Q_FPM_PB_CLIENT_LDOPTS = $(top_srcdir)/fpm/libfpm_pb.la $(Q_QUAGGA_PB_CLIENT_LDOPTS) +Q_CLEANFILES = $(Q_PROTOBUF_SRCS) +Q_BUILT_SRCS = $(Q_PROTOBUF_SRCS) +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib $(Q_PROTOBUF_C_CLIENT_INCLUDES) +PROTOBUF_INCLUDES = -I$(top_srcdir) +PROTOBUF_PACKAGE = qpb +lib_LTLIBRARIES = libquagga_pb.la +libquagga_pb_la_LDFLAGS = -version-info 0:0:0 +@HAVE_PROTOBUF_TRUE@protobuf_srcs = \ +@HAVE_PROTOBUF_TRUE@ qpb_allocator.c + +@HAVE_PROTOBUF_TRUE@protobuf_srcs_nodist = \ +@HAVE_PROTOBUF_TRUE@ qpb.pb-c.c + +libquagga_pb_la_SOURCES = \ + linear_allocator.h \ + qpb.h \ + qpb.c \ + qpb_allocator.h \ + $(protobuf_srcs) + +nodist_libquagga_pb_la_SOURCES = $(protobuf_srcs_nodist) +CLEANFILES = $(Q_CLEANFILES) +BUILT_SOURCES = $(Q_PROTOBUF_SRCS) +EXTRA_DIST = qpb.proto +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../common.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu qpb/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu qpb/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/../common.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libquagga_pb.la: $(libquagga_pb_la_OBJECTS) $(libquagga_pb_la_DEPENDENCIES) $(EXTRA_libquagga_pb_la_DEPENDENCIES) + $(AM_V_CCLD)$(libquagga_pb_la_LINK) -rpath $(libdir) $(libquagga_pb_la_OBJECTS) $(libquagga_pb_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qpb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qpb.pb-c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qpb_allocator.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES + +.PRECIOUS: Makefile + + +# Rules +@HAVE_PROTOBUF_TRUE@%.pb.h: %.proto +@HAVE_PROTOBUF_TRUE@ $(Q_PROTOC) $(PROTOBUF_INCLUDES) --cpp_out=$(top_srcdir) $(top_srcdir)/$(PROTOBUF_PACKAGE)/$^ + +@HAVE_PROTOBUF_TRUE@%.pb-c.c %.pb-c.h: %.proto +@HAVE_PROTOBUF_TRUE@ $(Q_PROTOC_C) $(PROTOBUF_INCLUDES) --c_out=$(top_srcdir) $(top_srcdir)/$(PROTOBUF_PACKAGE)/$^ + +# 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/qpb/README.txt b/qpb/README.txt deleted file mode 100644 index 99ccd05..0000000 --- a/qpb/README.txt +++ /dev/null @@ -1 +0,0 @@ -Protobuf definitions and code that is applicable to all of quagga. diff --git a/redhat/.gitignore b/redhat/.gitignore deleted file mode 100644 index e399bd8..0000000 --- a/redhat/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -zebra.spec -quagga.spec -Makefile -Makefile.in -.nfs* -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/redhat/Makefile.in b/redhat/Makefile.in new file mode 100644 index 0000000..128e845 --- /dev/null +++ b/redhat/Makefile.in @@ -0,0 +1,510 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = redhat +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = quagga.spec quagga.sysconfig +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/quagga.spec.in \ + $(srcdir)/quagga.sysconfig.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = bgpd.init bgpd.service isisd.init \ + isisd.service ospf6d.init ospf6d.service ospfd.init ospfd.service \ + quagga.logrotate quagga.pam quagga.spec \ + quagga.sysconfig ripd.init ripd.service ripngd.init ripngd.service \ + watchquagga.init pimd.init pimd.service zebra.init zebra.service \ + nhrpd.service \ + quagga-filter-perl-requires.sh quagga-tmpfs.conf \ + README.rpm_build.md + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu redhat/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu redhat/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +quagga.spec: $(top_builddir)/config.status $(srcdir)/quagga.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +quagga.sysconfig: $(top_builddir)/config.status $(srcdir)/quagga.sysconfig.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# 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/redhat/bgpd.service b/redhat/bgpd.service index ef24841..a50bfff 100644 --- a/redhat/bgpd.service +++ b/redhat/bgpd.service @@ -5,10 +5,13 @@ Wants=network.target After=zebra.service network-pre.target Before=network.target ConditionPathExists=/etc/quagga/bgpd.conf +Documentation=man:bgpd [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/bgpd.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/bgpd.conf ExecStart=/usr/sbin/bgpd -d $BGPD_OPTS -f /etc/quagga/bgpd.conf Restart=on-abort diff --git a/redhat/isisd.service b/redhat/isisd.service index edb6eea..93663aa 100644 --- a/redhat/isisd.service +++ b/redhat/isisd.service @@ -5,10 +5,13 @@ Wants=network.target After=zebra.service network-pre.target Before=network.target ConditionPathExists=/etc/quagga/isisd.conf +Documentation=man:isisd [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/isisd.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/isisd.conf ExecStart=/usr/sbin/isisd -d $ISISD_OPTS -f /etc/quagga/isisd.conf Restart=on-abort diff --git a/redhat/nhrpd.service b/redhat/nhrpd.service index 63f138c..5b4120d 100644 --- a/redhat/nhrpd.service +++ b/redhat/nhrpd.service @@ -5,10 +5,13 @@ Wants=network.target After=zebra.service network-pre.target Before=network.target ConditionPathExists=/etc/quagga/nhrpd.conf +Documentation=man:nhrpd [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/nhrpd.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/nhrpd.conf ExecStart=/usr/sbin/nhrpd -d $NHRPD_OPTS -f /etc/quagga/nhrpdd.conf Restart=on-abort diff --git a/redhat/ospf6d.service b/redhat/ospf6d.service index b53b970..3c1c978 100644 --- a/redhat/ospf6d.service +++ b/redhat/ospf6d.service @@ -5,10 +5,13 @@ Wants=network.target After=zebra.service network-pre.target Before=network.target ConditionPathExists=/etc/quagga/ospf6d.conf +Documentation=man:ospf6d [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/ospf6d.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/ospf6d.conf ExecStart=/usr/sbin/ospf6d -d $OSPF6D_OPTS -f /etc/quagga/ospf6d.conf Restart=on-abort diff --git a/redhat/ospfd.service b/redhat/ospfd.service index 5d6c5bb..0084b6c 100644 --- a/redhat/ospfd.service +++ b/redhat/ospfd.service @@ -5,10 +5,13 @@ Wants=network.target After=zebra.service network-pre.target Before=network.target ConditionPathExists=/etc/quagga/ospfd.conf +Documentation=man:ospfd [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/ospfd.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/ospfd.conf ExecStart=/usr/sbin/ospfd -d $OSPFD_OPTS -f /etc/quagga/ospfd.conf Restart=on-abort diff --git a/redhat/pimd.service b/redhat/pimd.service index d62fe64..1916846 100644 --- a/redhat/pimd.service +++ b/redhat/pimd.service @@ -3,10 +3,13 @@ Description=PIM multicast routing engine BindTo=zebra.service After=syslog.target network.target zebra.service ConditionPathExists=/etc/quagga/pimd.conf +Documentation=man:pimd [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/pimd.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/pimd.conf ExecStart=/usr/sbin/pimd -d $PIMD_OPTS -f /etc/quagga/pimd.conf Restart=on-abort diff --git a/redhat/quagga.spec b/redhat/quagga.spec new file mode 100644 index 0000000..a0e8bbb --- /dev/null +++ b/redhat/quagga.spec @@ -0,0 +1,799 @@ +# configure options +# +# Some can be overriden on rpmbuild commandline with: +# rpmbuild --define 'variable value' +# (use any value, ie 1 for flag "with_XXXX" definitions) +# +# E.g. rpmbuild --define 'release_rev 02' may be useful if building +# rpms again and again on the same day, so the newer rpms can be installed. +# bumping the number each time. + +####################### Quagga configure options ######################### +# with-feature options +%{!?with_snmp: %global with_snmp 1 } +%{!?with_vtysh: %global with_vtysh 1 } +%{!?with_tcp_zebra: %global with_tcp_zebra 0 } +%{!?with_vtysh: %global with_vtysh 1 } +%{!?with_pam: %global with_pam 1 } +%{!?with_ospfclient: %global with_ospfclient 1 } +%{!?with_ospfapi: %global with_ospfapi 1 } +%{!?with_irdp: %global with_irdp 1 } +%{!?with_rtadv: %global with_rtadv 1 } +%{!?with_isisd: %global with_isisd 1 } +%{!?with_pimd: %global with_pimd 1 } +%{!?with_nhrpd: %global with_nhrpd 1 } +%{!?with_shared: %global with_shared 1 } +%{!?with_multipath: %global with_multipath 64 } +%{!?quagga_user: %global quagga_user quagga } +%{!?vty_group: %global vty_group quaggavt } +%{!?with_fpm: %global with_fpm 0 } +%{!?with_watchquagga: %global with_watchquagga 1 } +# whether to build doc/quagga.html - requires a lot of TeX packages +%{!?with_texi2html: %global with_texi2html 0 } + +# path defines +%define _sysconfdir /etc/quagga +%define zeb_src %{_builddir}/%{name}-%{quaggaversion} +%define zeb_rh_src %{zeb_src}/redhat +%define zeb_docs %{zeb_src}/doc + +# defines for configure +%define _localstatedir /var/run/quagga +############################################################################ + +#### Version String tweak +# Remove invalid characters form version string and replace with _ +%{expand: %%global rpmversion %(echo '1.2.3' | tr [:blank:]- _ )} +%define quaggaversion 1.2.3 + +#### Check version of texi2html +# Old versions don't support "--number-footnotes" option. +%if %{with_texi2html} + %{expand: %%global texi2htmlversion %(type texi2html >/dev/null 2>&1 && (rpm -q --qf '%%{VERSION}' texi2html | cut -d. -f1) || echo 0 )} +%endif + +#### Check for systemd or init.d (upstart) +# Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7) +%{expand: %%global initsystem %(if [[ `/sbin/init --version 2> /dev/null` =~ upstart ]]; then echo upstart; elif [[ `systemctl` =~ -\.mount ]]; then echo systemd; fi)} +# +# If init system is systemd, then always disable watchquagga +# +%if "%{initsystem}" == "systemd" + # Note: For systems with systemd, watchquagga will NOT be built. Systemd + # takes over the role of restarting crashed processes. Value will + # be overwritten with 0 below for systemd independent on the setting here + %global with_watchquagga 0 +%endif + +# if FPM is enabled, then enable tcp_zebra as well +# +%if %{with_fpm} + %global with_tcp_zebra 1 +%endif + +# misc internal defines +%{!?quagga_uid: %global quagga_uid 92 } +%{!?quagga_gid: %global quagga_gid 92 } +%{!?vty_gid: %global vty_gid 85 } + +%define daemon_list zebra ripd ospfd bgpd + +%define daemonv6_list ripngd ospf6d + +%if %{with_isisd} +%define daemon_isisd isisd +%else +%define daemon_isisd "" +%endif + +%if %{with_pimd} +%define daemon_pimd pimd +%else +%define daemon_pimd "" +%endif + +%if %{with_nhrpd} +%define daemon_nhrpd nhrpd +%else +%define daemon_nhrpd "" +%endif + +%if %{with_watchquagga} +%define daemon_watchquagga watchquagga +%else +%define daemon_watchquagga "" +%endif + +%define all_daemons %{daemon_list} %{daemonv6_list} %{daemon_isisd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_watchquagga} + +# allow build dir to be kept +%{!?keep_build: %global keep_build 0 } + +#release sub-revision (the two digits after the CONFDATE) +%{!?release_rev: %global release_rev 01 } + +Summary: Routing daemon +Name: quagga +Version: %{rpmversion} +Release: 20180204%{release_rev}%{?dist} +License: GPLv2+ +Group: System Environment/Daemons +Source0: https://download.savannah.gnu.org/releases/quagga/%{name}-%{quaggaversion}.tar.gz +URL: https://www.quagga.net +Requires: ncurses +Requires(pre): /sbin/install-info +Requires(preun): /sbin/install-info +Requires(post): /sbin/install-info +BuildRequires: autoconf patch libcap-devel groff +BuildRequires: perl-generators pkgconfig +%if %{with_texi2html} +BuildRequires: texi2html +%endif +%if %{with_snmp} +BuildRequires: net-snmp-devel +Requires: net-snmp +%endif +%if %{with_vtysh} +BuildRequires: readline readline-devel ncurses ncurses-devel +Requires: ncurses +%endif +%if %{with_pam} +BuildRequires: pam-devel +Requires: pam +%endif +%if %{with_nhrpd} +BuildRequires: c-ares-devel +Requires: c-ares +%endif +%if "%{initsystem}" == "systemd" +BuildRequires: systemd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%else +# Initscripts > 5.60 is required for IPv6 support +Requires(pre): initscripts >= 5.60 +%endif +Provides: routingdaemon = %{version}-%{release} +BuildRoot: %{_tmppath}/%{name}-%{version}-root +#Obsoletes: mrt zebra quagga-sysvinit + +%define __perl_requires %{zeb_rh_src}/quagga-filter-perl-requires.sh + +%description +Quagga is a free software routing protocol suite. + +Quagga supports BGP, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM-SSM and NHRP. + +%package contrib +Summary: contrib tools for quagga +Group: System Environment/Daemons + +%description contrib +Contributed/3rd party tools which may be of use with quagga. + +%package devel +Summary: Header and object files for quagga development +Group: System Environment/Daemons +Requires: %{name} = %{version}-%{release} + +%description devel +The quagga-devel package contains the header and object files neccessary for +developing OSPF-API and quagga applications. + +%prep +%setup -q -n quagga-%{quaggaversion} + +%build + +%configure \ + --sysconfdir=%{_sysconfdir} \ + --libdir=%{_libdir}/quagga \ + --libexecdir=%{_libexecdir} \ + --localstatedir=%{_localstatedir} \ + --disable-werror \ +%if !%{with_shared} + --disable-shared \ +%endif +%if %{with_snmp} + --enable-snmp \ +%endif +%if %{with_multipath} + --enable-multipath=%{with_multipath} \ +%endif +%if %{with_tcp_zebra} + --enable-tcp-zebra \ +%endif +%if %{with_vtysh} + --enable-vtysh \ +%endif +%if %{with_ospfclient} + --enable-ospfclient=yes \ +%else + --enable-ospfclient=no\ +%endif +%if %{with_ospfapi} + --enable-ospfapi=yes \ +%else + --enable-ospfapi=no \ +%endif +%if %{with_irdp} + --enable-irdp=yes \ +%else + --enable-irdp=no \ +%endif +%if %{with_rtadv} + --enable-rtadv=yes \ +%else + --enable-rtadv=no \ +%endif +%if %{with_isisd} + --enable-isisd \ +%else + --disable-isisd \ +%endif +%if %{with_nhrpd} + --enable-nhrpd \ +%else + --disable-nhrpd \ +%endif +%if %{with_pam} + --with-libpam \ +%endif +%if 0%{?quagga_user:1} + --enable-user=%quagga_user \ + --enable-group=%quagga_user \ +%endif +%if 0%{?vty_group:1} + --enable-vty-group=%vty_group \ +%endif +%if %{with_fpm} + --enable-fpm \ +%else + --disable-fpm \ +%endif +%if %{with_watchquagga} + --enable-watchquagga \ +%else + --disable-watchquagga \ +%endif + --enable-gcc-rdynamic + +make %{?_smp_mflags} + +%if %{with_texi2html} + pushd doc + %if %{texi2htmlversion} < 5 + texi2html --number-sections quagga.texi + %else + texi2html --number-footnotes --number-sections quagga.texi + %endif + popd +%endif + +%install +mkdir -p %{buildroot}/etc/{quagga,sysconfig,logrotate.d,pam.d} \ + %{buildroot}/var/log/quagga %{buildroot}%{_infodir} +make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install + +# Remove this file, as it is uninstalled and causes errors when building on RH9 +rm -rf %{buildroot}/usr/share/info/dir + +# install /etc sources +%if "%{initsystem}" == "systemd" +mkdir -p %{buildroot}%{_unitdir} +for daemon in %{all_daemons} ; do + if [ x"${daemon}" != x"" ] ; then + install %{zeb_rh_src}/${daemon}.service \ + %{buildroot}%{_unitdir}/${daemon}.service + fi +done +%else +mkdir -p %{buildroot}/etc/rc.d/init.d +for daemon in %{all_daemons} ; do + if [ x"${daemon}" != x"" ] ; then + install %{zeb_rh_src}/${daemon}.init \ + %{buildroot}/etc/rc.d/init.d/${daemon} + fi +done +%endif + +install -m644 %{zeb_rh_src}/quagga.pam \ + %{buildroot}/etc/pam.d/quagga +install -m644 %{zeb_rh_src}/quagga.logrotate \ + %{buildroot}/etc/logrotate.d/quagga +install -m644 %{zeb_rh_src}/quagga.sysconfig \ + %{buildroot}/etc/sysconfig/quagga +install -d -m750 %{buildroot}/var/run/quagga + + +%if 0%{?_tmpfilesdir:1} + install -d -m 755 %{buildroot}/%{_tmpfilesdir} + install -p -m 644 %{zeb_rh_src}/quagga-tmpfs.conf \ + %{buildroot}/%{_tmpfilesdir}/quagga.conf +%endif + +%pre +# add vty_group +%if 0%{?vty_group:1} +if getent group %vty_group > /dev/null ; then : ; else \ + /usr/sbin/groupadd -r -g %vty_gid %vty_group > /dev/null || : ; fi +%endif + +# add quagga user and group +%if 0%{?quagga_user:1} +# Ensure that quagga_gid gets correctly allocated +if getent group %quagga_user >/dev/null; then : ; else \ + /usr/sbin/groupadd -g %quagga_gid %quagga_user > /dev/null || : ; \ +fi +if getent passwd %quagga_user >/dev/null ; then : ; else \ + /usr/sbin/useradd -u %quagga_uid -g %quagga_gid -G %vty_group \ + -M -r -s /sbin/nologin -c "Quagga routing suite" \ + -d %_localstatedir %quagga_user 2> /dev/null || : ; \ +fi +%endif + +%post +# zebra_spec_add_service +# 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 ] && \ + ! %__sed -e 's/#.*$//' /etc/services | %__grep -wq $1 ; 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" +%if %{with_ospfapi} +zebra_spec_add_service ospfapi 2607/tcp "OSPF-API" +%endif +%if %{with_isisd} +zebra_spec_add_service isisd 2608/tcp "ISISd vty" +%endif +%if %{with_pimd} +zebra_spec_add_service pimd 2611/tcp "PIMd vty" +%endif +%if %{with_nhrpd} +zebra_spec_add_service nhrpd 2612/tcp "NHRPd vty" +%endif + +%if "%{initsystem}" == "systemd" +for daemon in %all_daemons ; do + %systemd_post ${daemon}.service +done +%else +for daemon in %all_daemons ; do + /sbin/chkconfig --add ${daemon} +done +%endif + +if [ -f %{_infodir}/%{name}.inf* ]; then + /sbin/install-info %{_infodir}/quagga.info %{_infodir}/dir +fi + +# Create dummy files if they don't exist so basic functions can be used. +if [ ! -e %{_sysconfdir}/zebra.conf ]; then + echo "hostname `hostname`" > %{_sysconfdir}/zebra.conf +%if 0%{?quagga_user:1} + chown %quagga_user:%quagga_user %{_sysconfdir}/zebra.conf* +%endif + chmod 640 %{_sysconfdir}/zebra.conf +fi +for daemon in %{all_daemons} ; do + if [ ! -e %{_sysconfdir}/${daemon}.conf ]; then + touch %{_sysconfdir}/${daemon}.conf + %if 0%{?quagga_user:1} + chown %quagga_user:%quagga_user %{_sysconfdir}/${daemon}.conf* + %endif + fi +done +%if %{with_watchquagga} + # No config for watchquagga - this is part of /etc/sysconfig/quagga + rm -f %{_sysconfdir}/watchquagga.* +%endif + +if [ ! -e %{_sysconfdir}/vtysh.conf ]; then + touch %{_sysconfdir}/vtysh.conf + chmod 640 %{_sysconfdir}/vtysh.conf +%if 0%{?vty_group:1} + chown quagga:%{vty_group} %{_sysconfdir}/vtysh.conf* +%endif +fi + +%postun +if [ "$1" -ge 1 ]; then + # Find out which daemons need to be restarted. + for daemon in %all_daemons ; do + if [ -f /var/lock/subsys/${daemon} ]; then + eval restart_${daemon}=yes + else + eval restart_${daemon}=no + fi + done + # Rename restart flags for daemons handled specially. + running_zebra="$restart_zebra" + restart_zebra=no + %if %{with_watchquagga} + running_watchquagga="$restart_watchquagga" + restart_watchquagga=no + %endif + + %if "%{initsystem}" == "systemd" + ## + ## Systemd Version + ## + # No watchquagga for systemd version + # + # Stop all daemons other than zebra. + for daemon in %all_daemons ; do + eval restart=\$restart_${daemon} + [ "$restart" = yes ] && \ + %systemd_postun_with_restart ${daemon}.service + done + # Restart zebra. + [ "$running_zebra" = yes ] && \ + %systemd_postun_with_restart $daemon.service + # Start all daemons other than zebra. + for daemon in %all_daemons ; do + eval restart=\$restart_${daemon} + [ "$restart" = yes ] && \ + %systemd_post ${daemon}.service + done + %else + ## + ## init.d Version + ## + %if %{with_watchquagga} + # Stop watchquagga first. + [ "$running_watchquagga" = yes ] && \ + /etc/rc.d/init.d/watchquagga stop >/dev/null 2>&1 + %endif + # Stop all daemons other than zebra and watchquagga. + for daemon in %all_daemons ; do + eval restart=\$restart_${daemon} + [ "$restart" = yes ] && \ + /etc/rc.d/init.d/${daemon} stop >/dev/null 2>&1 + done + # Restart zebra. + [ "$running_zebra" = yes ] && \ + /etc/rc.d/init.d/zebra restart >/dev/null 2>&1 + # Start all daemons other than zebra and watchquagga. + for daemon in %all_daemons ; do + eval restart=\$restart_${daemon} + [ "$restart" = yes ] && \ + /etc/rc.d/init.d/${daemon} start >/dev/null 2>&1 + done + %if %{with_watchquagga} + # Start watchquagga last. + # Avoid postun scriptlet error if watchquagga is not running. + [ "$running_watchquagga" = yes ] && \ + /etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 || : + %endif + %endif +fi + +if [ -f %{_infodir}/%{name}.inf* ]; then + /sbin/install-info --delete %{_infodir}/quagga.info %{_infodir}/dir +fi + +%preun +%if "%{initsystem}" == "systemd" + ## + ## Systemd Version + ## + if [ "$1" = "0" ]; then + for daemon in %all_daemons ; do + %systemd_preun ${daemon}.service + done + fi +%else + ## + ## init.d Version + ## + if [ "$1" = "0" ]; then + for daemon in %all_daemons ; do + /etc/rc.d/init.d/${daemon} stop >/dev/null 2>&1 + /sbin/chkconfig --del ${daemon} + done + fi +%endif + +%clean +%if !0%{?keep_build:1} +rm -rf %{buildroot} +%endif + +%files +%defattr(-,root,root) +%doc */*.sample* AUTHORS COPYING +%if %{with_texi2html} + %doc doc/quagga.html +%endif +%doc doc/mpls +%doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO +%if 0%{?quagga_user:1} +%dir %attr(751,%quagga_user,%quagga_user) %{_sysconfdir} +%dir %attr(750,%quagga_user,%quagga_user) /var/log/quagga +%dir %attr(751,%quagga_user,%quagga_user) /var/run/quagga +%else +%dir %attr(750,root,root) %{_sysconfdir} +%dir %attr(750,root,root) /var/log/quagga +%dir %attr(750,root,root) /var/run/quagga +%endif +%if 0%{?vty_group:1} +%attr(750,%quagga_user,%vty_group) %{_sysconfdir}/vtysh.conf.sample +%endif +%{_infodir}/quagga.info*.gz +%{_mandir}/man*/* +%if %{with_watchquagga} + %{_mandir}/man*/watchquagga.* +%endif +%{_sbindir}/zebra +%{_sbindir}/ospfd +%{_sbindir}/ripd +%{_sbindir}/bgpd +%if %{with_watchquagga} + %{_sbindir}/watchquagga +%endif +%{_sbindir}/ripngd +%{_sbindir}/ospf6d +%if %{with_pimd} +%{_sbindir}/pimd +%endif +%if %{with_isisd} +%{_sbindir}/isisd +%endif +%if %{with_nhrpd} +%{_sbindir}/nhrpd +%endif +%if %{with_shared} +%{_libdir}/quagga/lib*.so +%{_libdir}/quagga/lib*.so.? +%attr(755,root,root) %{_libdir}/quagga/lib*.so.?.?.? +%endif +%if %{with_vtysh} +%{_bindir}/* +%endif +%config /etc/quagga/[!v]* +%if "%{initsystem}" == "systemd" + %{_unitdir}/*.service +%else + %config /etc/rc.d/init.d/zebra + %if %{with_watchquagga} + %config /etc/rc.d/init.d/watchquagga + %endif + %config /etc/rc.d/init.d/ripd + %config /etc/rc.d/init.d/ospfd + %config /etc/rc.d/init.d/bgpd + %config /etc/rc.d/init.d/ripngd + %config /etc/rc.d/init.d/ospf6d + %if %{with_isisd} + %config /etc/rc.d/init.d/isisd + %endif + %if %{with_pimd} + %config /etc/rc.d/init.d/pimd + %endif + %if %{with_nhrpd} + %config /etc/rc.d/init.d/nhrpd + %endif +%endif +%config(noreplace) /etc/sysconfig/quagga +%config(noreplace) /etc/pam.d/quagga +%config(noreplace) %attr(640,root,root) /etc/logrotate.d/* +%{_tmpfilesdir}/quagga.conf + +%files contrib +%defattr(-,root,root) +%doc AUTHORS COPYING %attr(0644,root,root) tools + +%files devel +%defattr(-,root,root) +%doc AUTHORS COPYING +%if %{with_ospfclient} +%{_sbindir}/ospfclient +%endif +%dir %{_libdir}/quagga/ +%{_libdir}/quagga/*.a +%{_libdir}/quagga/*.la +%dir %attr(755,root,root) %{_includedir}/%{name} +%{_includedir}/%name/*.h +%dir %attr(755,root,root) %{_includedir}/%{name}/ospfd +%{_includedir}/%name/ospfd/*.h +%if %{with_ospfapi} +%dir %attr(755,root,root) %{_includedir}/%{name}/ospfapi +%{_includedir}/%name/ospfapi/*.h +%endif + +%changelog +* Sun Mar 5 2017 Paul Jakma +- Fix lint errors +- Make texi2html conditional, disable by default to avoid needing TeX + by default + +* Mon Feb 27 2017 Paul Jakma +- Apply 0001-systemd-various-service-file-improvements.patch from Fedora +- Review Fedora spec file and sync up with any useful differences, inc: +- Add tmpfiles.d config for Quagga from Fedora +- Add quagga-filter-perl-requires.sh from Fedora. +- Move libs to %%{_libdir}/quagga as per Fedora +- use systemd_postun_with_restart for postun + +* Tue Feb 14 2017 Timo Teräs +- add nhrpd + +* Thu Feb 11 2016 Paul Jakma +- remove with_ipv6 conditionals, always build v6 +- Fix UTF-8 char in spec changelog +- remove quagga.pam.stack, long deprecated. + +* Thu Oct 22 2015 Martin Winter +- Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa, + --enable-netlink +- Remove support for old fedora 4/5 +- Fix for package nameing +- Fix Weekdays of previous changelogs (bogus dates) +- Add conditional logic to only build tex footnotes with supported texi2html +- Added pimd to files section and fix double listing of /var/lib*/quagga +- Numerous fixes to unify upstart/systemd startup into same spec file +- Only allow use of watchquagga for non-systemd systems. no need with systemd + +* Fri Sep 4 2015 Paul Jakma +- buildreq updates +- add a default define for with_pimd + +* Mon Sep 12 2005 Paul Jakma +- Steal some changes from Fedora spec file: +- Add with_rtadv variable +- Test for groups/users with getent before group/user adding +- Readline need not be an explicit prerequisite +- install-info delete should be postun, not preun + +* Wed Jan 12 2005 Andrew J. Schorr +- on package upgrade, implement careful, phased restart logic +- use gcc -rdynamic flag when linking for better backtraces + +* Wed Dec 22 2004 Andrew J. Schorr +- daemonv6_list should contain only IPv6 daemons + +* Wed Dec 22 2004 Andrew J. Schorr +- watchquagga added +- on upgrade, all daemons should be condrestart'ed +- on removal, all daemons should be stopped + +* Mon Nov 08 2004 Paul Jakma +- Use makeinfo --html to generate quagga.html + +* Sun Nov 07 2004 Paul Jakma +- Fix with_ipv6 set to 0 build + +* Sat Oct 23 2004 Paul Jakma +- Update to 0.97.2 + +* Sat Oct 23 2004 Andrew J. Schorr +- Make directories be owned by the packages concerned +- Update logrotate scripts to use correct path to killall and use pid files + +* Fri Oct 08 2004 Paul Jakma +- Update to 0.97.0 + +* Wed Sep 15 2004 Paul Jakma +- build snmp support by default +- build irdp support +- build with shared libs +- devel subpackage for archives and headers + +* Thu Jan 08 2004 Paul Jakma +- updated sysconfig files to specify local dir +- added ospf_dump.c crash quick fix patch +- added ospfd persistent interface configuration patch + +* Tue Dec 30 2003 Paul Jakma +- sync to CVS +- integrate RH sysconfig patch to specify daemon options (RH) +- default to have vty listen only to 127.1 (RH) +- add user with fixed UID/GID (RH) +- create user with shell /sbin/nologin rather than /bin/false (RH) +- stop daemons on uninstall (RH) +- delete info file on preun, not postun to avoid deletion on upgrade. (RH) +- isisd added +- cleanup tasks carried out for every daemon + +* Sun Nov 2 2003 Paul Jakma +- Fix -devel package to include all files +- Sync to 0.96.4 + +* Tue Aug 12 2003 Paul Jakma +- Renamed to Quagga +- Sync to Quagga release 0.96 + +* Thu Mar 20 2003 Paul Jakma +- zebra privileges support + +* Tue Mar 18 2003 Paul Jakma +- Fix mem leak in 'show thread cpu' +- Ralph Keller's OSPF-API +- Amir: Fix configure.ac for net-snmp + +* Sat Mar 1 2003 Paul Jakma +- ospfd IOS prefix to interface matching for 'network' statement +- temporary fix for PtP and IPv6 +- sync to zebra.org CVS + +* Mon Jan 20 2003 Paul Jakma +- update to latest cvs +- Yon's "show thread cpu" patch - 17217 +- walk up tree - 17218 +- ospfd NSSA fixes - 16681 +- ospfd nsm fixes - 16824 +- ospfd OLSA fixes and new feature - 16823 +- KAME and ifindex fixes - 16525 +- spec file changes to allow redhat files to be in tree + +* Sat Dec 28 2002 Alexander Hoogerhuis +- Added conditionals for building with(out) IPv6, vtysh, RIP, BGP +- Fixed up some build requirements (patch) +- Added conditional build requirements for vtysh / snmp +- Added conditional to files for _bindir depending on vtysh + +* Mon Nov 11 2002 Paul Jakma +- update to latest CVS +- add Greg Troxel's md5 buffer copy/dup fix +- add RIPv1 fix +- add Frank's multicast flag fix + +* Wed Oct 09 2002 Paul Jakma +- update to latest CVS +- timestamped crypt_seqnum patch +- oi->on_write_q fix + +* Mon Sep 30 2002 Paul Jakma +- update to latest CVS +- add vtysh 'write-config (integrated|daemon)' patch +- always 'make rebuild' in vtysh/ to catch new commands + +* Fri Sep 13 2002 Paul Jakma +- update to 0.93b + +* Wed Sep 11 2002 Paul Jakma +- update to latest CVS +- add "/sbin/ip route flush proto zebra" to zebra RH init on startup + +* Sat Aug 24 2002 Paul Jakma +- update to current CVS +- add OSPF point to multipoint patch +- add OSPF bugfixes +- add BGP hash optimisation patch + +* Fri Jun 14 2002 Paul Jakma +- update to 0.93-pre1 / CVS +- add link state detection support +- add generic PtP and RFC3021 support +- various bug fixes + +* Thu Aug 09 2001 Elliot Lee 0.91a-6 +- Fix bug #51336 + +* Wed Aug 1 2001 Trond Eivind Glomsrød 0.91a-5 +- Use generic initscript strings instead of initscript specific + ( "Starting foo: " -> "Starting $prog:" ) + +* Fri Jul 27 2001 Elliot Lee 0.91a-4 +- Bump the release when rebuilding into the dist. + +* Tue Feb 6 2001 Tim Powers +- built for Powertools + +* Sun Feb 4 2001 Pekka Savola +- Hacked up from PLD Linux 0.90-1, Mandrake 0.90-1mdk and one from zebra.org. +- Update to 0.91a +- Very heavy modifications to init.d/*, .spec, pam, i18n, logrotate, etc. +- Should be quite Red Hat'isque now. diff --git a/redhat/quagga.sysconfig b/redhat/quagga.sysconfig index caa0fff..8353b13 100644 --- a/redhat/quagga.sysconfig +++ b/redhat/quagga.sysconfig @@ -11,6 +11,12 @@ RIPNGD_OPTS="-A ::1" ZEBRA_OPTS="-A 127.0.0.1" PIMD_OPTS="-A 127.0.0.1" +# Default: The compiled in default user and group(s), useful to +# system startup to chmod config files. +QUAGGA_USER=quagga +QUAGGA_GROUP=quagga +VTY_GROUP= + # Watchquagga configuration for LSB initscripts # # (Not needed with systemd: the service files are configured to automatically diff --git a/redhat/quagga.sysconfig.in b/redhat/quagga.sysconfig.in new file mode 100644 index 0000000..cef57a4 --- /dev/null +++ b/redhat/quagga.sysconfig.in @@ -0,0 +1,31 @@ +# +# Default: Bind all daemon vtys to the loopback(s) only +# +BABELD_OPTS="-A 127.0.0.1" +BGPD_OPTS="-A 127.0.0.1" +ISISD_OPTS="-A ::1" +OSPF6D_OPTS="-A ::1" +OSPFD_OPTS="-A 127.0.0.1" +RIPD_OPTS="-A 127.0.0.1" +RIPNGD_OPTS="-A ::1" +ZEBRA_OPTS="-A 127.0.0.1" +PIMD_OPTS="-A 127.0.0.1" + +# Default: The compiled in default user and group(s), useful to +# system startup to chmod config files. +QUAGGA_USER=@enable_user@ +QUAGGA_GROUP=@enable_group@ +VTY_GROUP=@enable_vty_group@ + +# Watchquagga configuration for LSB initscripts +# +# (Not needed with systemd: the service files are configured to automatically +# restart any daemon on failure. If zebra fails, all running daemons will be +# stopped; zebra will be started again; and then the previously running daemons +# will be started again.) +# +# Uncomment and edit this line to reflect the daemons you are actually using: +#WATCH_DAEMONS="zebra bgpd ospfd ospf6d ripd ripngd" +# +# Timer values can be adjusting by editing this line: +WATCH_OPTS="-Az -b_ -r/sbin/service_%s_restart -s/sbin/service_%s_start -k/sbin/service_%s_stop" diff --git a/redhat/ripd.service b/redhat/ripd.service index ed7f922..103b5a9 100644 --- a/redhat/ripd.service +++ b/redhat/ripd.service @@ -5,10 +5,13 @@ Wants=network.target After=zebra.service network-pre.target Before=network.target ConditionPathExists=/etc/quagga/ripd.conf +Documentation=man:ripd [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/ripd.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/ripd.conf ExecStart=/usr/sbin/ripd -d $RIPD_OPTS -f /etc/quagga/ripd.conf Restart=on-abort diff --git a/redhat/ripngd.service b/redhat/ripngd.service index 2519b31..6fe6ba8 100644 --- a/redhat/ripngd.service +++ b/redhat/ripngd.service @@ -5,10 +5,13 @@ Wants=network.target After=zebra.service network-pre.target Before=network.target ConditionPathExists=/etc/quagga/ripngd.conf +Documentation=man:ripngd [Service] Type=forking EnvironmentFile=/etc/sysconfig/quagga +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/ripngd.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /etc/quagga/ripngd.conf ExecStart=/usr/sbin/ripngd -d $RIPNGD_OPTS -f /etc/quagga/ripngd.conf Restart=on-abort diff --git a/redhat/zebra.service b/redhat/zebra.service index f9107f1..fa5a004 100644 --- a/redhat/zebra.service +++ b/redhat/zebra.service @@ -4,11 +4,15 @@ Wants=network.target Before=network.target After=network-pre.target ConditionPathExists=/etc/quagga/zebra.conf +Documentation=man:zebra [Service] Type=forking EnvironmentFile=-/etc/sysconfig/quagga ExecStartPre=/sbin/ip route flush proto zebra +ExecStartPre=-/bin/chmod -f 640 /etc/quagga/vtysh.conf /etc/quagga/zebra.conf +ExecStartPre=-/bin/chown -f $QUAGGA_USER:$QUAGGA_GROUP /run/quagga /etc/quagga/zebra.conf +ExecStartPre=-/bin/chown -f ${QUAGGA_USER}${VTY_GROUP:+":$VTY_GROUP"} quaggavty /etc/quagga/vtysh.conf ExecStart=/usr/sbin/zebra -d $ZEBRA_OPTS -f /etc/quagga/zebra.conf Restart=on-abort diff --git a/release.sh b/release.sh deleted file mode 100755 index d57ea98..0000000 --- a/release.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash - -if [ $# -ne 2 ] ; then - echo "usage: $0 " - exit -fi - -errmsg () { - echo "Error occurred. To rerun you may first need to delete the tag". - exit 1 -} - -trap errmsg ERR - -REL=${1:?Release version must be given as first argument!} -PREV=${2:?Previous release version must be given as second argument!} - -TMPDIR=`mktemp -d /tmp/quagga-rel-XXXXXXXXX` - -if [ ! -d $TMPDIR ] ; then - echo "Problem making temp directory ${TMPDIR}!" - exit 1; -fi - -echo "Tagging branch head as release ${REL}" - -git tag -u 0x6FE57CA8C1A4AEA6 -m "Quagga release $REL" ${REL} - -mkdir -p ${TMPDIR}/a || exit 1 -mkdir -p ${TMPDIR}/verify || exit 1 - -echo "Making git archive" - -( git archive ${REL} | tar xC ${TMPDIR}/a ) || exit 1 - -git log ${PREV}..${REL} > ${TMPDIR}/a/${REL}.changelog.txt || exit 1 -git log --pretty=%s ${PREV}..${REL} > ${TMPDIR}/a/${REL}.subjects.txt || exit 1 - -cd ${TMPDIR}/a || exit 1 - -echo "Doing test build of archive file and making dist tarball" - -(autoreconf -i && ./configure && make -j && make dist-gzip) || exit 1 - -echo "Verifying dist tarball" - -cp ${REL}.tar.gz ${TMPDIR}/verify || exit 1 - -cd ${TMPDIR}/verify || exit 1 -tar -zxf ${REL}.tar.gz || exit 1 -cd ${REL} || exit 1 -autoreconf -i && ./configure && make -j - -cd ${TMPDIR}/a || exit 1 -gpg -u 0x6FE57CA8C1A4AEA6 -a --detach-sign ${REL}.tar.gz - -cat <<- EOF - -Release tagged as: ${REL} - -Release files are in ${TMPDIR}/a: - - ${TMPDIR}/a/${REL}.tar.gz - ${TMPDIR}/a/${REL}.tar.gz.asc - ${TMPDIR}/a/${REL}.changelog.txt - -If you need to redo the release, you must delete the tag first: - - git tag -d ${REL} - -To finish the release: - -* push the tag to savannah: - - git push tag ${REL} - -* Upload the 3 files to the savannah releases area: - - scp ${TMPDIR}/a/${REL}.tar.gz \ - ${TMPDIR}/a/${REL}.tar.gz.asc \ - ${TMPDIR}/a/${REL}.changelog.txt - @dl.sv.nongnu.org:/releases/quagga - -* Update the version list in bugzilla: - - https://bugzilla.quagga.net/editversions.cgi?action=add&product=Quagga - -* Add a news entry to the Savannah front page. The short list of commit - subjects (${TMPDIR}/a/${REL}.subjects.txt) may be useful here. - -* Email the quagga-dev and quagga-users lists - -EOF diff --git a/ripd/.gitignore b/ripd/.gitignore deleted file mode 100644 index 9bcfb63..0000000 --- a/ripd/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -Makefile -Makefile.in -*.o -ripd -ripd.conf -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT -*.a diff --git a/ripd/Makefile.in b/ripd/Makefile.in new file mode 100644 index 0000000..8915c9c --- /dev/null +++ b/ripd/Makefile.in @@ -0,0 +1,791 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = ripd$(EXEEXT) +subdir = ripd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +librip_a_AR = $(AR) $(ARFLAGS) +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) +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)" +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.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(librip_a_SOURCES) $(ripd_SOURCES) +DIST_SOURCES = $(librip_a_SOURCES) $(ripd_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +INSTALL_SDATA = @INSTALL@ -m 600 +AM_CFLAGS = $(WERROR) +noinst_LIBRARIES = librip.a +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 rip_interface.h + +ripd_SOURCES = \ + rip_main.c $(librip_a_SOURCES) + +ripd_LDADD = ../lib/libzebra.la @LIBCAP@ +examplesdir = $(exampledir) +dist_examples_DATA = ripd.conf.sample +EXTRA_DIST = RIPv2-MIB.txt +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ripd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ripd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +librip.a: $(librip_a_OBJECTS) $(librip_a_DEPENDENCIES) $(EXTRA_librip_a_DEPENDENCIES) + $(AM_V_at)-rm -f librip.a + $(AM_V_AR)$(librip_a_AR) librip.a $(librip_a_OBJECTS) $(librip_a_LIBADD) + $(AM_V_at)$(RANLIB) librip.a +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +ripd$(EXEEXT): $(ripd_OBJECTS) $(ripd_DEPENDENCIES) $(EXTRA_ripd_DEPENDENCIES) + @rm -f ripd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ripd_OBJECTS) $(ripd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +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@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool clean-noinstLIBRARIES \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES clean-sbinPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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_main.c b/ripd/rip_main.c index 4ead9b0..a6eaed5 100644 --- a/ripd/rip_main.c +++ b/ripd/rip_main.c @@ -193,7 +193,6 @@ main (int argc, char **argv) int daemon_mode = 0; int dryrun = 0; char *progname; - struct thread thread; /* Set umask before anything for security */ umask (0027); @@ -313,8 +312,7 @@ main (int argc, char **argv) zlog_notice ("RIPd %s starting: vty@%d", QUAGGA_VERSION, vty_port); /* Execute each thread. */ - while (thread_fetch (master, &thread)) - thread_call (&thread); + thread_main (master); /* Not reached. */ return (0); diff --git a/ripd/ripd.c b/ripd/ripd.c index c073eca..8f7e077 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -2538,14 +2538,14 @@ rip_update_process (int route_type) ifp = if_lookup_address (p->prefix); if (! ifp) { - zlog_warn ("Neighbor %s doesnt have connected interface!", + zlog_warn ("Neighbor %s doesn't have connected interface!", inet_ntoa (p->prefix)); continue; } if ( (connected = connected_lookup_address (ifp, p->prefix)) == NULL) { - zlog_warn ("Neighbor %s doesnt have connected network", + zlog_warn ("Neighbor %s doesn't have connected network", inet_ntoa (p->prefix)); continue; } @@ -3872,7 +3872,7 @@ rip_distribute_update_all (struct prefix_list *notused) } /* ARGSUSED */ static void -rip_distribute_update_all_wrapper(struct access_list *notused) +rip_distribute_update_all_wrapper(const char *unused) { rip_distribute_update_all(NULL); } diff --git a/ripngd/.gitignore b/ripngd/.gitignore deleted file mode 100644 index e871fae..0000000 --- a/ripngd/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -Makefile -Makefile.in -*.o -ripngd -ripngd.conf -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT -*.a diff --git a/ripngd/Makefile.in b/ripngd/Makefile.in new file mode 100644 index 0000000..8d33f55 --- /dev/null +++ b/ripngd/Makefile.in @@ -0,0 +1,795 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = ripngd$(EXEEXT) +subdir = ripngd +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libripng_a_AR = $(AR) $(ARFLAGS) +libripng_a_LIBADD = +am_libripng_a_OBJECTS = ripng_interface.$(OBJEXT) ripngd.$(OBJEXT) \ + ripng_zebra.$(OBJEXT) ripng_route.$(OBJEXT) \ + ripng_debug.$(OBJEXT) ripng_routemap.$(OBJEXT) \ + ripng_offset.$(OBJEXT) ripng_peer.$(OBJEXT) \ + ripng_nexthop.$(OBJEXT) +libripng_a_OBJECTS = $(am_libripng_a_OBJECTS) +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)" +PROGRAMS = $(sbin_PROGRAMS) +am__objects_1 = ripng_interface.$(OBJEXT) ripngd.$(OBJEXT) \ + ripng_zebra.$(OBJEXT) ripng_route.$(OBJEXT) \ + ripng_debug.$(OBJEXT) ripng_routemap.$(OBJEXT) \ + ripng_offset.$(OBJEXT) ripng_peer.$(OBJEXT) \ + ripng_nexthop.$(OBJEXT) +am_ripngd_OBJECTS = ripng_main.$(OBJEXT) $(am__objects_1) +ripngd_OBJECTS = $(am_ripngd_OBJECTS) +ripngd_DEPENDENCIES = ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libripng_a_SOURCES) $(ripngd_SOURCES) +DIST_SOURCES = $(libripng_a_SOURCES) $(ripngd_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +INSTALL_SDATA = @INSTALL@ -m 600 +AM_CFLAGS = $(WERROR) +noinst_LIBRARIES = libripng.a +libripng_a_SOURCES = \ + ripng_interface.c ripngd.c ripng_zebra.c ripng_route.c ripng_debug.c \ + ripng_routemap.c ripng_offset.c ripng_peer.c ripng_nexthop.c + +noinst_HEADERS = \ + ripng_debug.h ripng_route.h ripngd.h ripng_nexthop.h + +ripngd_SOURCES = \ + ripng_main.c $(libripng_a_SOURCES) + +ripngd_LDADD = ../lib/libzebra.la @LIBCAP@ +examplesdir = $(exampledir) +dist_examples_DATA = ripngd.conf.sample +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ripngd/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu ripngd/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libripng.a: $(libripng_a_OBJECTS) $(libripng_a_DEPENDENCIES) $(EXTRA_libripng_a_DEPENDENCIES) + $(AM_V_at)-rm -f libripng.a + $(AM_V_AR)$(libripng_a_AR) libripng.a $(libripng_a_OBJECTS) $(libripng_a_LIBADD) + $(AM_V_at)$(RANLIB) libripng.a +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +ripngd$(EXEEXT): $(ripngd_OBJECTS) $(ripngd_DEPENDENCIES) $(EXTRA_ripngd_DEPENDENCIES) + @rm -f ripngd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ripngd_OBJECTS) $(ripngd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +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_nexthop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_offset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ripng_peer.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@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool clean-noinstLIBRARIES \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES clean-sbinPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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 1c184e2..39bc614 100644 --- a/ripngd/ripng_main.c +++ b/ripngd/ripng_main.c @@ -192,7 +192,6 @@ main (int argc, char **argv) int vty_port = RIPNG_VTY_PORT; int daemon_mode = 0; char *progname; - struct thread thread; int dryrun = 0; /* Set umask before anything for security */ @@ -308,8 +307,7 @@ main (int argc, char **argv) zlog_notice ("RIPNGd %s starting: vty@%d", QUAGGA_VERSION, vty_port); /* Fetch next active thread. */ - while (thread_fetch (master, &thread)) - thread_call (&thread); + thread_main (master); /* Not reached. */ return 0; diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index 824b3a4..1510b1d 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -2827,7 +2827,7 @@ ripng_distribute_update_all (struct prefix_list *notused) } static void -ripng_distribute_update_all_wrapper (struct access_list *notused) +ripng_distribute_update_all_wrapper (const char *notused) { ripng_distribute_update_all(NULL); } diff --git a/solaris/.gitignore b/solaris/.gitignore deleted file mode 100644 index 63afe3f..0000000 --- a/solaris/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -Makefile -Makefile.in -?.manifest -*.xml -pkginfo.*.full -pkginfo.tmpl -prototype.daemons -prototype.dev -prototype.doc -prototype.libs -prototype.smf -depend.daemons -depend.dev -depend.doc -depend.libs -depend.smf -quagga.init -*.pkg -*.pkg.gz -*~ -*.loT -*.a \ No newline at end of file diff --git a/solaris/Makefile.in b/solaris/Makefile.in new file mode 100644 index 0000000..d0c1809 --- /dev/null +++ b/solaris/Makefile.in @@ -0,0 +1,629 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +# Solaris packages automake file + +# XXX This file uses GNU make extensions. +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = solaris +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# the names of the various subpackages, and some convenient +# derived variables. +pkg_names = daemons dev doc libs smf +pkg_quagga_daemons = zebra bgpd ospfd ospf6d ripd ripngd +pkg_name_rev = @PACKAGE_VERSION@-@CONFDATE@-@target_os@-@target_cpu@ +pkg_depends = $(pkg_names:%=depend.%) +pkg_packages = $(pkg_names:%=@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg) +pkg_pkginfos = $(pkg_names:%=pkginfo.%.full) +pkg_prototypes = $(pkg_names:%=prototype.%) +pkg_manifests = quagga.xml + +# pkgmk variable substitutions wont grok ${variable} in prototype +# file, so we cant let autoconf generate the file sadly +# wish automake would just provide a template for this +edit = $(SED) \ + -e 's,@prefix\@,$(prefix),g' \ + -e 's,@exec_prefix,$(exec_prefix),g' \ + -e 's,@bindir\@,$(bindir),g' \ + -e 's,@sbindir\@,$(sbindir),g' \ + -e 's,@libexecdir\@,$(libexecdir),g' \ + -e 's,@datadir\@,$(datadir),g' \ + -e 's,@sysconfdir\@,$(sysconfdir),g' \ + -e 's,@sharedstatedir\@,$(sharedstatedir),g' \ + -e 's,@localstatedir\@,$(localstatedir),g' \ + -e 's,@libdir\@,$(libdir),g' \ + -e 's,@includedir\@,$(includedir),g' \ + -e 's,@infodir\@,$(infodir),g' \ + -e 's,@mandir\@,$(mandir),g' \ + -e 's,@enable_user\@,$(enable_user),g' \ + -e 's,@enable_group\@,$(enable_group),g' \ + -e 's,@enable_vty_group\@,$(enable_vty_group),g' \ + -e 's,@quagga_statedir\@,$(quagga_statedir),g' \ + -e 's,[@]PACKAGE_NAME[@],@PACKAGE_NAME@,g' \ + -e 's,[@]PACKAGE_TARNAME[@],@PACKAGE_TARNAME@,g' \ + -e 's,[@]PACKAGE_VERSION[@],@PACKAGE_VERSION@,g' \ + -e 's,[@]PACKAGE_BUGREPORT[@],@PACKAGE_BUGREPORT@,g' \ + -e 's,[@]CONFDATE[@],@CONFDATE@,g' \ + -e 's,[@]target_cpu[@],$(target_cpu),g' \ + -e 's,[@]target_host[@],$(target_host),g' \ + -e 's,[@]target_os[@],$(target_os),g' + + +# common options for pkgmk +pkg_make_vars = exec_prefix=@exec_prefix@ prefix=@prefix@ \ + builddir=@builddir@ srcdir=@srcdir@ \ + top_builddir=@top_builddir@ top_srcdir=@top_srcdir@ \ + abs_builddir=@abs_builddir@ abs_srcdir=@abs_srcdir@ \ + abs_top_builddir=@abs_top_builddir@ abs_top_srcdir=@abs_top_srcdir@ + + +# pkgmk: write the package to spool in build dir, to avoid root dependencies +pkg_make = pkgmk -o -d @abs_builddir@ \ + -f $< DESTDIR="$(DESTDIR)/" $(pkg_make_vars) + + +# pkgtrans: write a pkg file stream, shame we cant pipe directly to it from +# pkgmk.. +pkg_trans = pkgtrans -s @abs_builddir@ "@abs_builddir@/$@" + +# pkginfo.package and prototype.package are all built sources +#BUILT_SOURCES = pkginfo.daemons pkginfo.dev pkginfo.doc pkginfo.libs \ +# prototype.daemons prototype.dev prototype.doc prototype.libs +BUILT_SOURCES = $(pkg_pkginfos) pkginfo.tmpl $(pkg_prototypes) \ + $(pkg_manifests) $(pkg_depends) quagga.init + +CLEANFILES = $(BUILT_SOURCES) $(pkg_packages) +EXTRA_DIST = $(pkg_manifests:%=%.in) $(pkg_prototypes:%=%.in) \ + $(pkg_names:%=pkginfo.%.tmpl.in) $(srcdir)/pkginfo.tmpl.in \ + $(pkg_depends:%=%.in) quagga.init.in README.txt + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu solaris/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu solaris/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: all check install install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +.PHONY: packages + +# pkgmk can only cope with a single pkginfo, cant 'stack' various +# pkginfo template files and a package specific pkginfo file in the prototype +# Create the package specific template here, and create the full pkginfo +# by cating this and the common pkginfo.tmpl together. +pkginfo.tmpl: $(srcdir)/pkginfo.tmpl.in Makefile + rm -f $@ + $(edit) $< > $@ + +pkginfo.%.tmpl: $(srcdir)/pkginfo.%.tmpl.in Makefile + rm -f $@ + $(edit) $< > $@ + +pkginfo.%.full: pkginfo.%.tmpl pkginfo.tmpl Makefile + cat pkginfo.tmpl pkginfo.$*.tmpl > $@ + +# use 'edit' above to transform prototype.in to pkgmk acceptable prototype +prototype.%: $(srcdir)/prototype.%.in Makefile + rm -f $@ + $(edit) $< > $@ + +# use edit to construct the SMF manifest files +%.xml: $(srcdir)/%.xml.in Makefile + rm -f $@ + $(edit) $< > $@ +# use edit to construct the depend files +depend.%: $(srcdir)/depend.%.in Makefile + rm -f $@ + $(edit) $< > $@ + +# method file (bit like init script) +quagga.init: $(srcdir)/quagga.init.in Makefile + rm -f $@ + $(edit) $< > $@ + +# construct the pkg +@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg: prototype.% \ + depend.% quagga.init pkginfo.%.full + ($(pkg_make) && \ + $(pkg_trans) "QUAGGA$*") + +%.pkg.gz : %.pkg + (gzip -c $< > $@) + +pkg-root-install: + (cd $(top_builddir) && \ + $(MAKE) DESTDIR=$(abs_builddir)/quagga-root install) + +packages: $(pkg_packages) + +#nodist_pkgdata_DATA = $(pkg_packages) + +# 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/stamp-h.in b/stamp-h.in deleted file mode 100644 index 9788f70..0000000 --- a/stamp-h.in +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/test-driver b/test-driver new file mode 100755 index 0000000..8e575b0 --- /dev/null +++ b/test-driver @@ -0,0 +1,148 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2013-07-13.22; # UTC + +# Copyright (C) 2011-2014 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, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/tests/.gitignore b/tests/.gitignore deleted file mode 100644 index 3002b27..0000000 --- a/tests/.gitignore +++ /dev/null @@ -1,41 +0,0 @@ -Makefile -Makefile.in -*.o -tags -TAGS -.deps -.nfs* -*~ -*.loT -*.lo -*.la -*.libs -*.bak -*.log -*.sum -*.xml -.arch-inventory -.arch-ids -aspathtest -ecommtest -heavy -heavythread -heavywq -tabletest -test-timer-correctness -test-timer-performance -testbgpcap -testbgpmpath -testbgpmpattr -testbuffer -testchecksum -testcli -testmemory -testprivs -testsegv -testsig -teststream -testnexthopiter -testcommands -test-commands-defun.c -site.exp diff --git a/tests/Makefile.am b/tests/Makefile.am index b13e903..4770081 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,15 +1,5 @@ -AUTOMAKE_OPTIONS = dejagnu -DEJATOOL = libzebra - -SUBDIRS = \ - bgpd.tests \ - libzebra.tests EXTRA_DIST = \ - config/unix.exp \ - lib/bgpd.exp \ - lib/libzebra.exp \ - global-conf.exp \ testcommands.in \ testcommands.refout \ testcli.in \ @@ -20,7 +10,6 @@ DEFS = @DEFS@ $(LOCAL_OPTS) -DSYSCONFDIR=\"$(sysconfdir)/\" if BGPD TESTS_BGPD = aspathtest testbgpcap ecommtest testbgpmpattr testbgpmpath -DEJATOOL += bgpd else TESTS_BGPD = endif @@ -31,6 +20,10 @@ check_PROGRAMS = testsig testsegv testbuffer testmemory heavy heavywq heavythrea testcli \ $(TESTS_BGPD) +TESTS = $(TESTS_BGPD) teststream tabletest testmemory testnexthopiter \ + test-timer-correctness tabletest + + ../vtysh/vtysh_cmd.c: $(MAKE) -C ../vtysh vtysh_cmd.c diff --git a/tests/Makefile.in b/tests/Makefile.in new file mode 100644 index 0000000..f62b83d --- /dev/null +++ b/tests/Makefile.in @@ -0,0 +1,1348 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +check_PROGRAMS = testsig$(EXEEXT) testsegv$(EXEEXT) \ + testbuffer$(EXEEXT) testmemory$(EXEEXT) heavy$(EXEEXT) \ + heavywq$(EXEEXT) heavythread$(EXEEXT) testprivs$(EXEEXT) \ + teststream$(EXEEXT) testchecksum$(EXEEXT) tabletest$(EXEEXT) \ + testnexthopiter$(EXEEXT) testcommands$(EXEEXT) \ + test-timer-correctness$(EXEEXT) \ + test-timer-performance$(EXEEXT) testcli$(EXEEXT) \ + $(am__EXEEXT_1) +TESTS = $(am__EXEEXT_1) teststream$(EXEEXT) tabletest$(EXEEXT) \ + testmemory$(EXEEXT) testnexthopiter$(EXEEXT) \ + test-timer-correctness$(EXEEXT) tabletest$(EXEEXT) +subdir = tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +@BGPD_TRUE@am__EXEEXT_1 = aspathtest$(EXEEXT) testbgpcap$(EXEEXT) \ +@BGPD_TRUE@ ecommtest$(EXEEXT) testbgpmpattr$(EXEEXT) \ +@BGPD_TRUE@ testbgpmpath$(EXEEXT) +am_aspathtest_OBJECTS = aspath_test.$(OBJEXT) +aspathtest_OBJECTS = $(am_aspathtest_OBJECTS) +aspathtest_DEPENDENCIES = ../bgpd/libbgp.a ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_ecommtest_OBJECTS = ecommunity_test.$(OBJEXT) +ecommtest_OBJECTS = $(am_ecommtest_OBJECTS) +ecommtest_DEPENDENCIES = ../bgpd/libbgp.a ../lib/libzebra.la +am_heavy_OBJECTS = heavy.$(OBJEXT) main.$(OBJEXT) +heavy_OBJECTS = $(am_heavy_OBJECTS) +heavy_DEPENDENCIES = ../lib/libzebra.la +am_heavythread_OBJECTS = heavy-thread.$(OBJEXT) main.$(OBJEXT) +heavythread_OBJECTS = $(am_heavythread_OBJECTS) +heavythread_DEPENDENCIES = ../lib/libzebra.la +am_heavywq_OBJECTS = heavy-wq.$(OBJEXT) main.$(OBJEXT) +heavywq_OBJECTS = $(am_heavywq_OBJECTS) +heavywq_DEPENDENCIES = ../lib/libzebra.la +am_tabletest_OBJECTS = table_test.$(OBJEXT) +tabletest_OBJECTS = $(am_tabletest_OBJECTS) +tabletest_DEPENDENCIES = ../lib/libzebra.la +am_test_timer_correctness_OBJECTS = test-timer-correctness.$(OBJEXT) \ + prng.$(OBJEXT) +test_timer_correctness_OBJECTS = $(am_test_timer_correctness_OBJECTS) +test_timer_correctness_DEPENDENCIES = ../lib/libzebra.la +am_test_timer_performance_OBJECTS = test-timer-performance.$(OBJEXT) \ + prng.$(OBJEXT) +test_timer_performance_OBJECTS = $(am_test_timer_performance_OBJECTS) +test_timer_performance_DEPENDENCIES = ../lib/libzebra.la +am_testbgpcap_OBJECTS = bgp_capability_test.$(OBJEXT) +testbgpcap_OBJECTS = $(am_testbgpcap_OBJECTS) +testbgpcap_DEPENDENCIES = ../bgpd/libbgp.a ../lib/libzebra.la +am_testbgpmpath_OBJECTS = bgp_mpath_test.$(OBJEXT) +testbgpmpath_OBJECTS = $(am_testbgpmpath_OBJECTS) +testbgpmpath_DEPENDENCIES = ../bgpd/libbgp.a ../lib/libzebra.la +am_testbgpmpattr_OBJECTS = bgp_mp_attr_test.$(OBJEXT) +testbgpmpattr_OBJECTS = $(am_testbgpmpattr_OBJECTS) +testbgpmpattr_DEPENDENCIES = ../bgpd/libbgp.a ../lib/libzebra.la +am_testbuffer_OBJECTS = test-buffer.$(OBJEXT) +testbuffer_OBJECTS = $(am_testbuffer_OBJECTS) +testbuffer_DEPENDENCIES = ../lib/libzebra.la +am_testchecksum_OBJECTS = test-checksum.$(OBJEXT) +testchecksum_OBJECTS = $(am_testchecksum_OBJECTS) +testchecksum_DEPENDENCIES = ../lib/libzebra.la +am_testcli_OBJECTS = test-cli.$(OBJEXT) common-cli.$(OBJEXT) +testcli_OBJECTS = $(am_testcli_OBJECTS) +testcli_DEPENDENCIES = ../lib/libzebra.la +am_testcommands_OBJECTS = test-commands-defun.$(OBJEXT) \ + test-commands.$(OBJEXT) prng.$(OBJEXT) +testcommands_OBJECTS = $(am_testcommands_OBJECTS) +testcommands_DEPENDENCIES = ../lib/libzebra.la +am_testmemory_OBJECTS = test-memory.$(OBJEXT) +testmemory_OBJECTS = $(am_testmemory_OBJECTS) +testmemory_DEPENDENCIES = ../lib/libzebra.la +am_testnexthopiter_OBJECTS = test-nexthop-iter.$(OBJEXT) \ + prng.$(OBJEXT) +testnexthopiter_OBJECTS = $(am_testnexthopiter_OBJECTS) +testnexthopiter_DEPENDENCIES = ../lib/libzebra.la +am_testprivs_OBJECTS = test-privs.$(OBJEXT) +testprivs_OBJECTS = $(am_testprivs_OBJECTS) +testprivs_DEPENDENCIES = ../lib/libzebra.la +am_testsegv_OBJECTS = test-segv.$(OBJEXT) +testsegv_OBJECTS = $(am_testsegv_OBJECTS) +testsegv_DEPENDENCIES = ../lib/libzebra.la +am_testsig_OBJECTS = test-sig.$(OBJEXT) +testsig_OBJECTS = $(am_testsig_OBJECTS) +testsig_DEPENDENCIES = ../lib/libzebra.la +am_teststream_OBJECTS = test-stream.$(OBJEXT) +teststream_OBJECTS = $(am_teststream_OBJECTS) +teststream_DEPENDENCIES = ../lib/libzebra.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(aspathtest_SOURCES) $(ecommtest_SOURCES) $(heavy_SOURCES) \ + $(heavythread_SOURCES) $(heavywq_SOURCES) $(tabletest_SOURCES) \ + $(test_timer_correctness_SOURCES) \ + $(test_timer_performance_SOURCES) $(testbgpcap_SOURCES) \ + $(testbgpmpath_SOURCES) $(testbgpmpattr_SOURCES) \ + $(testbuffer_SOURCES) $(testchecksum_SOURCES) \ + $(testcli_SOURCES) $(testcommands_SOURCES) \ + $(testmemory_SOURCES) $(testnexthopiter_SOURCES) \ + $(testprivs_SOURCES) $(testsegv_SOURCES) $(testsig_SOURCES) \ + $(teststream_SOURCES) +DIST_SOURCES = $(aspathtest_SOURCES) $(ecommtest_SOURCES) \ + $(heavy_SOURCES) $(heavythread_SOURCES) $(heavywq_SOURCES) \ + $(tabletest_SOURCES) $(test_timer_correctness_SOURCES) \ + $(test_timer_performance_SOURCES) $(testbgpcap_SOURCES) \ + $(testbgpmpath_SOURCES) $(testbgpmpattr_SOURCES) \ + $(testbuffer_SOURCES) $(testchecksum_SOURCES) \ + $(testcli_SOURCES) $(testcommands_SOURCES) \ + $(testmemory_SOURCES) $(testnexthopiter_SOURCES) \ + $(testprivs_SOURCES) $(testsegv_SOURCES) $(testsig_SOURCES) \ + $(teststream_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ $(LOCAL_OPTS) -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + testcommands.in \ + testcommands.refout \ + testcli.in \ + testcli.refout + +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +@BGPD_FALSE@TESTS_BGPD = +@BGPD_TRUE@TESTS_BGPD = aspathtest testbgpcap ecommtest testbgpmpattr testbgpmpath +BUILT_SOURCES = test-commands-defun.c +CLEANFILES = test-commands-defun.c bgpd libzebra +noinst_HEADERS = prng.h tests.h common-cli.h +testcli_SOURCES = test-cli.c common-cli.c +testsig_SOURCES = test-sig.c +testsegv_SOURCES = test-segv.c +testbuffer_SOURCES = test-buffer.c +testmemory_SOURCES = test-memory.c +testprivs_SOURCES = test-privs.c +teststream_SOURCES = test-stream.c +heavy_SOURCES = heavy.c main.c +heavywq_SOURCES = heavy-wq.c main.c +heavythread_SOURCES = heavy-thread.c main.c +aspathtest_SOURCES = aspath_test.c +testbgpcap_SOURCES = bgp_capability_test.c +ecommtest_SOURCES = ecommunity_test.c +testbgpmpattr_SOURCES = bgp_mp_attr_test.c +testchecksum_SOURCES = test-checksum.c +testbgpmpath_SOURCES = bgp_mpath_test.c +tabletest_SOURCES = table_test.c +testnexthopiter_SOURCES = test-nexthop-iter.c prng.c +testcommands_SOURCES = test-commands-defun.c test-commands.c prng.c +test_timer_correctness_SOURCES = test-timer-correctness.c prng.c +test_timer_performance_SOURCES = test-timer-performance.c prng.c +testcli_LDADD = ../lib/libzebra.la @LIBCAP@ +testsig_LDADD = ../lib/libzebra.la @LIBCAP@ +testsegv_LDADD = ../lib/libzebra.la @LIBCAP@ +testbuffer_LDADD = ../lib/libzebra.la @LIBCAP@ +testmemory_LDADD = ../lib/libzebra.la @LIBCAP@ +testprivs_LDADD = ../lib/libzebra.la @LIBCAP@ +teststream_LDADD = ../lib/libzebra.la @LIBCAP@ +heavy_LDADD = ../lib/libzebra.la @LIBCAP@ -lm +heavywq_LDADD = ../lib/libzebra.la @LIBCAP@ -lm +heavythread_LDADD = ../lib/libzebra.la @LIBCAP@ -lm +aspathtest_LDADD = ../bgpd/libbgp.a ../lib/libzebra.la @LIBCAP@ -lm +testbgpcap_LDADD = ../bgpd/libbgp.a ../lib/libzebra.la @LIBCAP@ -lm +ecommtest_LDADD = ../bgpd/libbgp.a ../lib/libzebra.la @LIBCAP@ -lm +testbgpmpattr_LDADD = ../bgpd/libbgp.a ../lib/libzebra.la @LIBCAP@ -lm +testchecksum_LDADD = ../lib/libzebra.la @LIBCAP@ +testbgpmpath_LDADD = ../bgpd/libbgp.a ../lib/libzebra.la @LIBCAP@ -lm +tabletest_LDADD = ../lib/libzebra.la @LIBCAP@ -lm +testnexthopiter_LDADD = ../lib/libzebra.la @LIBCAP@ +testcommands_LDADD = ../lib/libzebra.la @LIBCAP@ +test_timer_correctness_LDADD = ../lib/libzebra.la @LIBCAP@ +test_timer_performance_LDADD = ../lib/libzebra.la @LIBCAP@ +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +aspathtest$(EXEEXT): $(aspathtest_OBJECTS) $(aspathtest_DEPENDENCIES) $(EXTRA_aspathtest_DEPENDENCIES) + @rm -f aspathtest$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(aspathtest_OBJECTS) $(aspathtest_LDADD) $(LIBS) + +ecommtest$(EXEEXT): $(ecommtest_OBJECTS) $(ecommtest_DEPENDENCIES) $(EXTRA_ecommtest_DEPENDENCIES) + @rm -f ecommtest$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ecommtest_OBJECTS) $(ecommtest_LDADD) $(LIBS) + +heavy$(EXEEXT): $(heavy_OBJECTS) $(heavy_DEPENDENCIES) $(EXTRA_heavy_DEPENDENCIES) + @rm -f heavy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(heavy_OBJECTS) $(heavy_LDADD) $(LIBS) + +heavythread$(EXEEXT): $(heavythread_OBJECTS) $(heavythread_DEPENDENCIES) $(EXTRA_heavythread_DEPENDENCIES) + @rm -f heavythread$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(heavythread_OBJECTS) $(heavythread_LDADD) $(LIBS) + +heavywq$(EXEEXT): $(heavywq_OBJECTS) $(heavywq_DEPENDENCIES) $(EXTRA_heavywq_DEPENDENCIES) + @rm -f heavywq$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(heavywq_OBJECTS) $(heavywq_LDADD) $(LIBS) + +tabletest$(EXEEXT): $(tabletest_OBJECTS) $(tabletest_DEPENDENCIES) $(EXTRA_tabletest_DEPENDENCIES) + @rm -f tabletest$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tabletest_OBJECTS) $(tabletest_LDADD) $(LIBS) + +test-timer-correctness$(EXEEXT): $(test_timer_correctness_OBJECTS) $(test_timer_correctness_DEPENDENCIES) $(EXTRA_test_timer_correctness_DEPENDENCIES) + @rm -f test-timer-correctness$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_timer_correctness_OBJECTS) $(test_timer_correctness_LDADD) $(LIBS) + +test-timer-performance$(EXEEXT): $(test_timer_performance_OBJECTS) $(test_timer_performance_DEPENDENCIES) $(EXTRA_test_timer_performance_DEPENDENCIES) + @rm -f test-timer-performance$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_timer_performance_OBJECTS) $(test_timer_performance_LDADD) $(LIBS) + +testbgpcap$(EXEEXT): $(testbgpcap_OBJECTS) $(testbgpcap_DEPENDENCIES) $(EXTRA_testbgpcap_DEPENDENCIES) + @rm -f testbgpcap$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testbgpcap_OBJECTS) $(testbgpcap_LDADD) $(LIBS) + +testbgpmpath$(EXEEXT): $(testbgpmpath_OBJECTS) $(testbgpmpath_DEPENDENCIES) $(EXTRA_testbgpmpath_DEPENDENCIES) + @rm -f testbgpmpath$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testbgpmpath_OBJECTS) $(testbgpmpath_LDADD) $(LIBS) + +testbgpmpattr$(EXEEXT): $(testbgpmpattr_OBJECTS) $(testbgpmpattr_DEPENDENCIES) $(EXTRA_testbgpmpattr_DEPENDENCIES) + @rm -f testbgpmpattr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testbgpmpattr_OBJECTS) $(testbgpmpattr_LDADD) $(LIBS) + +testbuffer$(EXEEXT): $(testbuffer_OBJECTS) $(testbuffer_DEPENDENCIES) $(EXTRA_testbuffer_DEPENDENCIES) + @rm -f testbuffer$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testbuffer_OBJECTS) $(testbuffer_LDADD) $(LIBS) + +testchecksum$(EXEEXT): $(testchecksum_OBJECTS) $(testchecksum_DEPENDENCIES) $(EXTRA_testchecksum_DEPENDENCIES) + @rm -f testchecksum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testchecksum_OBJECTS) $(testchecksum_LDADD) $(LIBS) + +testcli$(EXEEXT): $(testcli_OBJECTS) $(testcli_DEPENDENCIES) $(EXTRA_testcli_DEPENDENCIES) + @rm -f testcli$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testcli_OBJECTS) $(testcli_LDADD) $(LIBS) + +testcommands$(EXEEXT): $(testcommands_OBJECTS) $(testcommands_DEPENDENCIES) $(EXTRA_testcommands_DEPENDENCIES) + @rm -f testcommands$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testcommands_OBJECTS) $(testcommands_LDADD) $(LIBS) + +testmemory$(EXEEXT): $(testmemory_OBJECTS) $(testmemory_DEPENDENCIES) $(EXTRA_testmemory_DEPENDENCIES) + @rm -f testmemory$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testmemory_OBJECTS) $(testmemory_LDADD) $(LIBS) + +testnexthopiter$(EXEEXT): $(testnexthopiter_OBJECTS) $(testnexthopiter_DEPENDENCIES) $(EXTRA_testnexthopiter_DEPENDENCIES) + @rm -f testnexthopiter$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testnexthopiter_OBJECTS) $(testnexthopiter_LDADD) $(LIBS) + +testprivs$(EXEEXT): $(testprivs_OBJECTS) $(testprivs_DEPENDENCIES) $(EXTRA_testprivs_DEPENDENCIES) + @rm -f testprivs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testprivs_OBJECTS) $(testprivs_LDADD) $(LIBS) + +testsegv$(EXEEXT): $(testsegv_OBJECTS) $(testsegv_DEPENDENCIES) $(EXTRA_testsegv_DEPENDENCIES) + @rm -f testsegv$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testsegv_OBJECTS) $(testsegv_LDADD) $(LIBS) + +testsig$(EXEEXT): $(testsig_OBJECTS) $(testsig_DEPENDENCIES) $(EXTRA_testsig_DEPENDENCIES) + @rm -f testsig$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testsig_OBJECTS) $(testsig_LDADD) $(LIBS) + +teststream$(EXEEXT): $(teststream_OBJECTS) $(teststream_DEPENDENCIES) $(EXTRA_teststream_DEPENDENCIES) + @rm -f teststream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(teststream_OBJECTS) $(teststream_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aspath_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_capability_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_mp_attr_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bgp_mpath_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common-cli.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecommunity_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/heavy-thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/heavy-wq.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/heavy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prng.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table_test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-buffer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-checksum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-cli.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-commands-defun.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-commands.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-memory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nexthop-iter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-privs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-segv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-sig.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-timer-correctness.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-timer-performance.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +aspathtest.log: aspathtest$(EXEEXT) + @p='aspathtest$(EXEEXT)'; \ + b='aspathtest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +testbgpcap.log: testbgpcap$(EXEEXT) + @p='testbgpcap$(EXEEXT)'; \ + b='testbgpcap'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +ecommtest.log: ecommtest$(EXEEXT) + @p='ecommtest$(EXEEXT)'; \ + b='ecommtest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +testbgpmpattr.log: testbgpmpattr$(EXEEXT) + @p='testbgpmpattr$(EXEEXT)'; \ + b='testbgpmpattr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +testbgpmpath.log: testbgpmpath$(EXEEXT) + @p='testbgpmpath$(EXEEXT)'; \ + b='testbgpmpath'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +teststream.log: teststream$(EXEEXT) + @p='teststream$(EXEEXT)'; \ + b='teststream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +tabletest.log: tabletest$(EXEEXT) + @p='tabletest$(EXEEXT)'; \ + b='tabletest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +testmemory.log: testmemory$(EXEEXT) + @p='testmemory$(EXEEXT)'; \ + b='testmemory'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +testnexthopiter.log: testnexthopiter$(EXEEXT) + @p='testnexthopiter$(EXEEXT)'; \ + b='testnexthopiter'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-timer-correctness.log: test-timer-correctness$(EXEEXT) + @p='test-timer-correctness$(EXEEXT)'; \ + b='test-timer-correctness'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(HEADERS) +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +../vtysh/vtysh_cmd.c: + $(MAKE) -C ../vtysh vtysh_cmd.c + +test-commands-defun.c: ../vtysh/vtysh_cmd.c + sed \ + -e 's/"vtysh\.h"/"tests.h"/' \ + -e 's/vtysh_init_cmd/test_init_cmd/' \ + -e 's/VTYSH_[A-Z][A-Z_0-9]*/0/g' \ + < ../vtysh/vtysh_cmd.c \ + > test-commands-defun.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/tests/aspath_test.c b/tests/aspath_test.c index 5a0899e..d970211 100644 --- a/tests/aspath_test.c +++ b/tests/aspath_test.c @@ -1037,7 +1037,7 @@ validate (struct aspath *as, const struct test_spec *sp) fails++; printf ("firstas: %d, got %d\n", sp->first, aspath_firstas_check (as,sp->first)); - printf ("loop does: %d %d, doesnt: %d %d\n", + printf ("loop does: %d %d, doesn't: %d %d\n", sp->does_loop, aspath_loop_check (as, sp->does_loop), sp->doesnt_loop, aspath_loop_check (as, sp->doesnt_loop)); printf ("private check: %d %d\n", sp->private_as, diff --git a/tests/bgpd.tests/Makefile.am b/tests/bgpd.tests/Makefile.am deleted file mode 100644 index 5900186..0000000 --- a/tests/bgpd.tests/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -EXTRA_DIST = \ - aspathtest.exp \ - ecommtest.exp \ - testbgpcap.exp \ - testbgpmpath.exp \ - testbgpmpattr.exp - diff --git a/tests/bgpd.tests/aspathtest.exp b/tests/bgpd.tests/aspathtest.exp deleted file mode 100644 index dfecec7..0000000 --- a/tests/bgpd.tests/aspathtest.exp +++ /dev/null @@ -1,76 +0,0 @@ -set timeout 10 -set testprefix "aspathtest " -set aborted 0 -set color 1 - -spawn "./aspathtest" - -# proc onetest { test_name note start } { -# proc headerline { line } { - -set parserno 0 -proc parsertest { test_name } { - global parserno - headerline "test $parserno" - onetest "parse $test_name" " ($parserno)" "$test_name:" - onetest "parse $test_name +empty_prepend" " (#$parserno)" "empty prepend $test_name:" - incr parserno 1 -} -set attrno 0 -proc attrtest { test_name } { - global attrno - headerline "aspath_attr test $attrno" - onetest "attr $test_name" " (#$attrno)" "$test_name" - incr attrno 1 -} - - -parsertest "seq1" -parsertest "seq2" -parsertest "seq3" -parsertest "seqset" -parsertest "seqset2" -parsertest "multi" -parsertest "confed" -parsertest "confed2" -parsertest "confset" -parsertest "confmulti" -parsertest "seq4" -parsertest "tripleseq1" -parsertest "someprivate" -parsertest "allprivate" -parsertest "long" -parsertest "seq1extra" -parsertest "empty" -parsertest "redundantset" -parsertest "reconcile_lead_asp" -parsertest "reconcile_new_asp" -parsertest "reconcile_confed" -parsertest "reconcile_start_trans" -parsertest "reconcile_start_trans4" -parsertest "reconcile_start_trans_error" -parsertest "redundantset2" -parsertest "zero-size overflow" -parsertest "zero-size overflow + valid segment" -parsertest "invalid segment type" - -for {set i 0} {$i < 10} {incr i 1} { onetest "prepend $i" "" "prepend test $i"; } -for {set i 0} {$i < 5} {incr i 1} { onetest "aggregate $i" "" "aggregate test $i"; } -for {set i 0} {$i < 5} {incr i 1} { onetest "reconcile $i" "" "reconcile test $i"; } -for {set i 0} {$i < 22} {incr i 1} { onetest "compare $i" "" "left cmp "; } - -onetest "empty_get" "" "empty_get_test" -attrtest "basic test" -attrtest "length too short" -attrtest "length too long" -attrtest "incorrect flag" -attrtest "as4_path, with as2 format data" -attrtest "as4, with incorrect attr length" -attrtest "basic 4-byte as-path" -attrtest "4b AS_PATH: too short" -attrtest "4b AS_PATH: too long" -attrtest "4b AS_PATH: too long2" -attrtest "4b AS_PATH: bad flags" -attrtest "4b AS4_PATH w/o AS_PATH" -attrtest "4b AS4_PATH: confed" - diff --git a/tests/bgpd.tests/ecommtest.exp b/tests/bgpd.tests/ecommtest.exp deleted file mode 100644 index 074952f..0000000 --- a/tests/bgpd.tests/ecommtest.exp +++ /dev/null @@ -1,13 +0,0 @@ -set timeout 10 -set testprefix "ecommtest " -set aborted 0 -set color 0 - -spawn "./ecommtest" - -# proc simpletest { start } { - -simpletest "ipaddr" -simpletest "ipaddr-so" -simpletest "asn" -simpletest "asn4" diff --git a/tests/bgpd.tests/testbgpcap.exp b/tests/bgpd.tests/testbgpcap.exp deleted file mode 100644 index 2572623..0000000 --- a/tests/bgpd.tests/testbgpcap.exp +++ /dev/null @@ -1,51 +0,0 @@ -set timeout 10 -set testprefix "testbgpcap " -set aborted 0 -set color 1 - -spawn "./testbgpcap" - -# proc simpletest { start } { - -simpletest "MP4: MP IP/Uni" -simpletest "MPv6: MP IPv6/Uni" -simpletest "MP2: MP IP/Multicast" -simpletest "MP3: MP IP6/MPLS-labeled VPN" -simpletest "MP5: MP IP6/MPLS-VPN" -simpletest "MP6: MP IP4/MPLS-laveled VPN" -simpletest "MP8: MP unknown AFI/SAFI" -simpletest "MP-short: MP IP4/Unicast, length too short (< minimum)" -simpletest "MP-overflow: MP IP4/Unicast, length too long" -simpletest "caphdr: capability header, and no more" -simpletest "nodata: header, no data but length says there is" -simpletest "padded: valid, with padding" -simpletest "minsize: violates minsize requirement" -simpletest "ORF: ORF, simple, single entry, single tuple" -simpletest "ORF-many: ORF, multi entry/tuple" -simpletest "ORFlo: ORF, multi entry/tuple, hdr length too short" -simpletest "ORFlu: ORF, multi entry/tuple, length too long" -simpletest "ORFnu: ORF, multi entry/tuple, entry number too long" -simpletest "ORFno: ORF, multi entry/tuple, entry number too short" -simpletest "ORFpad: ORF, multi entry/tuple, padded to align" -simpletest "AS4: AS4 capability" -simpletest "GR: GR capability" -simpletest "GR-short: GR capability, but header length too short" -simpletest "GR-long: GR capability, but header length too long" -simpletest "GR-trunc: GR capability, but truncated" -simpletest "GR-empty: GR capability, but empty." -simpletest "MP-empty: MP capability, but empty." -simpletest "ORF-empty: ORF capability, but empty." -simpletest "AS4-empty: AS4 capability, but empty." -simpletest "dyn-empty: Dynamic capability, but empty." -simpletest "dyn-old: Dynamic capability (deprecated version)" -simpletest "Cap-singlets: One capability per Optional-Param" -simpletest "Cap-series: Series of capability, one Optional-Param" -simpletest "AS4more: AS4 capability after other caps (singlets)" -simpletest "AS4series: AS4 capability, in series of capabilities" -simpletest "AS4real: AS4 capability, in series of capabilities" -simpletest "AS4real2: AS4 capability, in series of capabilities" -simpletest "DynCap: Dynamic Capability Message, IP/Multicast" -simpletest "DynCapLong: Dynamic Capability Message, IP/Multicast, truncated" -simpletest "DynCapPadded: Dynamic Capability Message, IP/Multicast, padded" -simpletest "DynCapMPCpadded: Dynamic Capability Message, IP/Multicast, cap data padded" -simpletest "DynCapMPCoverflow: Dynamic Capability Message, IP/Multicast, cap data != length" diff --git a/tests/bgpd.tests/testbgpmpath.exp b/tests/bgpd.tests/testbgpmpath.exp deleted file mode 100644 index 96a51e3..0000000 --- a/tests/bgpd.tests/testbgpmpath.exp +++ /dev/null @@ -1,12 +0,0 @@ -set timeout 10 -set testprefix "testbgpmpath " -set aborted 0 -set color 1 - -spawn "./testbgpmpath" - -# proc simpletest { start } { - -simpletest "bgp maximum-paths config" -simpletest "bgp_mp_list" -simpletest "bgp_info_mpath_update" diff --git a/tests/bgpd.tests/testbgpmpattr.exp b/tests/bgpd.tests/testbgpmpattr.exp deleted file mode 100644 index e6d7305..0000000 --- a/tests/bgpd.tests/testbgpmpattr.exp +++ /dev/null @@ -1,38 +0,0 @@ -set timeout 10 -set testprefix "testbgpmpattr " -set aborted 0 -set color 1 - -spawn "./testbgpmpattr" - -# proc simpletest { start } { - -simpletest "IPv6: IPV6 MP Reach, global nexthop, 1 NLRI" -simpletest "IPv6-2: IPV6 MP Reach, global nexthop, 2 NLRIs" -simpletest "IPv6-default: IPV6 MP Reach, global nexthop, 2 NLRIs + default" -simpletest "IPv6-lnh: IPV6 MP Reach, global+local nexthops, 2 NLRIs + default" -simpletest "IPv6-nhlen: IPV6 MP Reach, inappropriate nexthop length" -simpletest "IPv6-nhlen2: IPV6 MP Reach, invalid nexthop length" -simpletest "IPv6-nhlen3: IPV6 MP Reach, nexthop length overflow" -simpletest "IPv6-nhlen4: IPV6 MP Reach, nexthop length short" -simpletest "IPv6-nlri: IPV6 MP Reach, NLRI bitlen overflow" -simpletest "IPv4: IPv4 MP Reach, 2 NLRIs + default" -simpletest "IPv4-nhlen: IPv4 MP Reach, nexthop lenth overflow" -simpletest "IPv4-nlrilen: IPv4 MP Reach, nlri lenth overflow" -simpletest "IPv4-VPNv4: IPv4/VPNv4 MP Reach, RD, Nexthop, 2 NLRIs" -simpletest "IPv4-VPNv4-bogus-plen: IPv4/MPLS-labeled VPN MP Reach, RD, Nexthop, NLRI / bogus p'len" -simpletest "IPv4-VPNv4-plen1-short: IPv4/VPNv4 MP Reach, RD, Nexthop, 2 NLRIs, 1st plen short" -simpletest "IPv4-VPNv4-plen1-long: IPv4/VPNv4 MP Reach, RD, Nexthop, 2 NLRIs, 1st plen long" -simpletest "IPv4-VPNv4-plenn-long: IPv4/VPNv4 MP Reach, RD, Nexthop, 3 NLRIs, last plen long" -simpletest "IPv4-VPNv4-plenn-short: IPv4/VPNv4 MP Reach, RD, Nexthop, 2 NLRIs, last plen short" -simpletest "IPv4-VPNv4-bogus-rd-type: IPv4/VPNv4 MP Reach, RD, NH, 2 NLRI, unknown RD in 1st (log, but parse)" -simpletest "IPv4-VPNv4-0-nlri: IPv4/VPNv4 MP Reach, RD, Nexthop, 3 NLRI, 3rd 0 bogus" -simpletest "IPv6-bug: IPv6, global nexthop, 1 default NLRI" -simpletest "IPv6-unreach: IPV6 MP Unreach, 1 NLRI" -simpletest "IPv6-unreach2: IPV6 MP Unreach, 2 NLRIs" -simpletest "IPv6-unreach-default: IPV6 MP Unreach, 2 NLRIs + default" -simpletest "IPv6-unreach-nlri: IPV6 MP Unreach, NLRI bitlen overflow" -simpletest "IPv4-unreach: IPv4 MP Unreach, 2 NLRIs + default" -simpletest "IPv4-unreach-nlrilen: IPv4 MP Unreach, nlri length overflow" -simpletest "IPv4-unreach-VPNv4: IPv4/MPLS-labeled VPN MP Unreach, RD, 3 NLRIs" - diff --git a/tests/common-cli.c b/tests/common-cli.c index 7135856..3486c37 100644 --- a/tests/common-cli.c +++ b/tests/common-cli.c @@ -55,8 +55,6 @@ static void vty_do_exit(void) int main (int argc, char **argv) { - struct thread thread; - /* Set umask before anything for security */ umask (0027); @@ -81,8 +79,7 @@ main (int argc, char **argv) vty_stdio (vty_do_exit); /* Fetch next active thread. */ - while (thread_fetch (master, &thread)) - thread_call (&thread); + thread_main (master); /* Not reached. */ exit (0); diff --git a/tests/config/unix.exp b/tests/config/unix.exp deleted file mode 100644 index 2f6bcea..0000000 --- a/tests/config/unix.exp +++ /dev/null @@ -1,102 +0,0 @@ - -# every test should always be run and always return some status. -# so, if we lose sync with a multi-test program, aborted will be used -# to flag the remainder of the tests as untested. -#set aborted 0 - -# only match with color codes since "failed" / "OK" might otherwise -# be part of the output... -#set color 1 - -set xfail 0 - -proc onesimple { test_name match } { - global verbose - global aborted - global testprefix - if { $aborted > 0 } { - untested "$testprefix$test_name" - return - } - if { $verbose > 0 } { - send_user "$testprefix$test_name$note\n" - } - expect { - "$match" { pass "$testprefix$test_name"; } - eof { fail "$testprefix$test_name"; set aborted 1; } - timeout { unresolved "$testprefix$test_name"; set aborted 1; } - } -} - -proc onetest { test_name note start } { - global aborted - global testprefix - global verbose - global color - global xfail - - if { $aborted > 0 } { - untested "$testprefix$test_name" - return - } - - if { $verbose > 0 } { - send_user "$testprefix$test_name$note\n" - } - expect { - "$start" { } - - eof { unresolved "$testprefix$test_name"; set aborted 1; } - timeout { unresolved "$testprefix$test_name"; set aborted 1; } - } - - if { $aborted > 0 } { - send_user "sync failed: $testprefix$test_name$note -- $testprefix aborted!\n" - return - } - - if { $color } { - set pat "(32mOK|31mfailed)" - } else { - set pat "(OK|failed)" - } - expect { - # need this because otherwise expect will skip over a "failed" and - # grab the next "OK" (or the other way around) - -re "$pat" { - if { "$expect_out(0,string)" == "32mOK" || "$expect_out(0,string)" == "OK" } { - pass "$testprefix$test_name" - } else { - if { $xfail } { - xfail "$testprefix$test_name" - } else { - fail "$testprefix$test_name" - } - } - return - } - - eof { unresolved "$testprefix$test_name"; set aborted 1; } - timeout { unresolved "$testprefix$test_name"; set aborted 1; } - } - - if { $aborted > 0 } { - send_user "failed: $testprefix$test_name$note -- $testprefix aborted!\n" - return - } -} - -proc headerline { line } { - global aborted - if { $aborted > 0 } { return; } - expect { - $line { return; } - eof { send_user "numbering mismatch!\n"; set aborted 1; } - timeout { send_user "numbering mismatch!\n"; set aborted 1; } - } -} - -proc simpletest { start } { - onetest "$start" "" "$start" -} - diff --git a/tests/global-conf.exp b/tests/global-conf.exp deleted file mode 100644 index e69de29..0000000 diff --git a/tests/lib/bgpd.exp b/tests/lib/bgpd.exp deleted file mode 100644 index e69de29..0000000 diff --git a/tests/lib/libzebra.exp b/tests/lib/libzebra.exp deleted file mode 100644 index e69de29..0000000 diff --git a/tests/libzebra.tests/Makefile.am b/tests/libzebra.tests/Makefile.am deleted file mode 100644 index 4b74e2d..0000000 --- a/tests/libzebra.tests/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -EXTRA_DIST = \ - tabletest.exp \ - test-timer-correctness.exp \ - testcommands.exp \ - testcli.exp \ - testnexthopiter.exp diff --git a/tests/libzebra.tests/tabletest.exp b/tests/libzebra.tests/tabletest.exp deleted file mode 100644 index 5838d4f..0000000 --- a/tests/libzebra.tests/tabletest.exp +++ /dev/null @@ -1,9 +0,0 @@ -set timeout 10 -set testprefix "tabletest " -set aborted 0 - -spawn "./tabletest" - -for {set i 0} {$i < 6} {incr i 1} { onesimple "cmp $i" "Verifying cmp"; } -for {set i 0} {$i < 11} {incr i 1} { onesimple "succ $i" "Verifying successor"; } -onesimple "pause" "Verified pausing" diff --git a/tests/libzebra.tests/test-timer-correctness.exp b/tests/libzebra.tests/test-timer-correctness.exp deleted file mode 100644 index 83531c7..0000000 --- a/tests/libzebra.tests/test-timer-correctness.exp +++ /dev/null @@ -1,7 +0,0 @@ -set timeout 10 -set testprefix "test-timer-correctness" -set aborted 0 - -spawn "./test-timer-correctness" - -onesimple "" "Expected output and actual output match." diff --git a/tests/libzebra.tests/testcli.exp b/tests/libzebra.tests/testcli.exp deleted file mode 100644 index 778bd0c..0000000 --- a/tests/libzebra.tests/testcli.exp +++ /dev/null @@ -1,23 +0,0 @@ -set timeout 30 -set test_name "testcli" - -spawn sh -c "./testcli < $env(srcdir)/testcli.in | diff -au $env(srcdir)/testcli.refout -" - -expect { - eof { - } - timeout { - exp_close - fail "$test_name: timeout" - } -} - -catch wait result -set os_error [lindex $result 2] -set exit_status [lindex $result 3] - -if { $os_error == 0 && $exit_status == 0 } { - pass "$test_name" -} else { - fail "$test_name" -} diff --git a/tests/libzebra.tests/testcommands.exp b/tests/libzebra.tests/testcommands.exp deleted file mode 100644 index d4bfc82..0000000 --- a/tests/libzebra.tests/testcommands.exp +++ /dev/null @@ -1,31 +0,0 @@ -set timeout 30 -set test_name "testcommands" - -if {![info exists env(QUAGGA_TEST_COMMANDS)]} { - # sadly, the test randomly fails when configure parameters differ from - # what was used to create testcommands.refout. this can be fixed by - # shipping a matching vtysh_cmd.c, which we'll add after 0.99.23 - unresolved "$test_name" - exit 0 -} - -spawn sh -c "./testcommands -e 0 < $env(srcdir)/testcommands.in | diff -au - $env(srcdir)/testcommands.refout" - -expect { - eof { - } - timeout { - exp_close - fail "$test_name: timeout" - } -} - -catch wait result -set os_error [lindex $result 2] -set exit_status [lindex $result 3] - -if { $os_error == 0 && $exit_status == 0 } { - pass "$test_name" -} else { - fail "$test_name" -} diff --git a/tests/libzebra.tests/testnexthopiter.exp b/tests/libzebra.tests/testnexthopiter.exp deleted file mode 100644 index be35a0a..0000000 --- a/tests/libzebra.tests/testnexthopiter.exp +++ /dev/null @@ -1,8 +0,0 @@ -set timeout 10 -set testprefix "testnexthopiter " -set aborted 0 - -spawn "./testnexthopiter" - -onesimple "simple" "Simple test passed." -onesimple "prng" "PRNG test passed." diff --git a/tests/libzebra.tests/teststream.exp b/tests/libzebra.tests/teststream.exp deleted file mode 100644 index ca602e3..0000000 --- a/tests/libzebra.tests/teststream.exp +++ /dev/null @@ -1,28 +0,0 @@ -set timeout 10 -spawn "./teststream" - -expect { - "endp: 15, readable: 15, writeable: 1009" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -expect { - "0xef 0xbe 0xef 0xde 0xad 0xbe 0xef 0xde 0xad 0xbe 0xef 0xde 0xad 0xbe 0xef" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -expect { - "endp: 15, readable: 15, writeable: 0" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -expect { - "0xef 0xbe 0xef 0xde 0xad 0xbe 0xef 0xde 0xad 0xbe 0xef 0xde 0xad 0xbe 0xef" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -expect { - "c: 0xef" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -expect { - "w: 0xbeef" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -expect { - "l: 0xdeadbeef" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -expect { - "q: 0xdeadbeefdeadbeef" { } - eof { fail "teststream"; exit; } timeout { fail "teststream"; exit; } } -pass "teststream" diff --git a/tests/main.c b/tests/main.c index 5396c7d..97028e3 100644 --- a/tests/main.c +++ b/tests/main.c @@ -106,7 +106,6 @@ main (int argc, char **argv) int vty_port = 4000; int daemon_mode = 0; char *progname; - struct thread thread; char *config_file = NULL; /* Set umask before anything for security */ @@ -191,8 +190,7 @@ main (int argc, char **argv) test_init(); /* Fetch next active thread. */ - while (thread_fetch (master, &thread)) - thread_call (&thread); + thread_main (master); /* Not reached. */ exit (0); diff --git a/tests/test-cli.c b/tests/test-cli.c index 6fab6d5..61f5088 100644 --- a/tests/test-cli.c +++ b/tests/test-cli.c @@ -20,6 +20,11 @@ * 02111-1307, USA. */ + /* example usage: + * + * ./testcli < testcli.in | diff -au testcli.refout - + */ + #include #include "common-cli.h" diff --git a/tests/test-commands-defun.c b/tests/test-commands-defun.c new file mode 100644 index 0000000..b876225 --- /dev/null +++ b/tests/test-commands-defun.c @@ -0,0 +1,27335 @@ +#include +#include "command.h" +#include "tests.h" + +DEFSH (0, no_bgp_graceful_restart_restart_time_val_cmd_vtysh, + "no bgp graceful-restart restart-time <1-3600>", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Graceful restart capability parameters\n" + "Set the time to wait to delete stale routes before a BGP open message is received\n" + "Delay value (seconds)\n") + +DEFSH (0, ip_route_mask_flags_tag_distance_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_encap_rd_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv4 encap rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\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 (0, no_ospf_priority_cmd_vtysh, + "no ospf priority", + "Negate a command or set its defaults\n" + "OSPF interface commands\n" + "Router priority\n") + +DEFSH (0, show_ip_as_path_access_list_all_cmd_vtysh, + "show ip as-path-access-list", + "Show running system information\n" + "IP information\n" + "List AS path access lists\n") + +DEFSH (0, no_ospf_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 (0, show_ipv6_ospf6_border_routers_detail_cmd_vtysh, + "show ipv6 ospf6 border-routers (A.B.C.D|detail)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display routing table for ABR and ASBR\n" + "Specify Router-ID\n" + "Display Detail\n" + ) + +DEFSH (0, no_ip_route_flags_tag_distance_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, 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 (0, no_ip_ospf_dead_interval_seconds_cmd_vtysh, + "no ip ospf dead-interval <1-65535>", + "Negate a command or set its defaults\n" + "IP Information\n" + "OSPF interface commands\n" + "Interval after which a neighbor is declared dead\n" + "Seconds\n") + +DEFSH (0, ospf_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 (0, show_bgp_ipv4_community3_exact_cmd_vtysh, + "show bgp ipv4 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" + "IP 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 (0, no_debug_isis_err_cmd_vtysh, + "no debug isis protocol-errors", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS LSP protocol errors\n") + +DEFSH (0, ipv6_nd_prefix_val_rev_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite) (no-autoconfig|) (off-link|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n" + "Do not use prefix for autoconfiguration\n" + "Do not use prefix for onlink determination\n") + +DEFSH (0, ip_route_flags_vrf_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ripng_offset_list_cmd_vtysh, + "offset-list WORD (in|out) <0-16>", + "Modify RIPng metric\n" + "Access-list name\n" + "For incoming updates\n" + "For outgoing updates\n" + "Metric value\n") + +DEFSH (0, no_debug_pim_zebra_cmd_vtysh, + "no debug pim zebra", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "ZEBRA protocol activity\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, ospf_max_metric_router_lsa_shutdown_cmd_vtysh, + "max-metric router-lsa on-shutdown <5-86400>", + "OSPF maximum / infinite-distance metric\n" + "Advertise own Router-LSA with infinite distance (stub router)\n" + "Advertise stub-router prior to full shutdown of OSPF\n" + "Time (seconds) to wait till full shutdown\n") + +DEFSH (0, interface_ip_pim_hello_cmd_vtysh, + "ip pim hello <1-180>", + "IP information\n" + "PIM information\n" + "Hello Interval\n" + "Time in seconds for Hello Interval\n") + +DEFSH (0, link_params_maxbw_cmd_vtysh, + "max-bw BANDWIDTH", + "Maximum bandwidth that can be used\n" + "Bytes/second (IEEE floating point format)\n") + +DEFSH (0, no_match_peer_cmd_vtysh, + "no match peer", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match peer address\n") + +DEFSH (0, show_bgp_instance_neighbors_peer_cmd_vtysh, + "show bgp view WORD neighbors (A.B.C.D|X:X::X:X)", + "Show running system 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 (0, ip_ospf_dead_interval_minimal_cmd_vtysh, + "ip ospf dead-interval minimal hello-multiplier <1-10>", + "IP Information\n" + "OSPF interface commands\n" + "Interval after which a neighbor is declared dead\n" + "Minimal 1s dead-interval with fast sub-second hellos\n" + "Hello multiplier factor\n" + "Number of Hellos to send each second\n") + +DEFSH (0, ipv6_nd_suppress_ra_cmd_vtysh, + "ipv6 nd suppress-ra", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Suppress Router Advertisement\n") + +DEFSH (0, show_debugging_isis_cmd_vtysh, + "show debugging isis", + "Show running system information\n" + "State of each debugging option\n") + +DEFSH (0, show_ipv6_route_summary_cmd_vtysh, + "show ipv6 route summary", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Summary of all IPv6 routes\n") + +DEFSH (0, isis_passive_cmd_vtysh, + "isis passive", + "IS-IS commands\n" + "Configure the passive mode for interface\n") + +DEFSH (0, 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 (0, ipv6_route_flags_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_safi_prefix_list_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) prefix-list WORD", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0, 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 (0, 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 (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, ospf_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 (0, undebug_bgp_filter_cmd_vtysh, + "undebug bgp filters", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP filters\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, show_isis_summary_cmd_vtysh, + "show isis summary", + "Show running system information\n" "IS-IS information\n" "IS-IS summary\n") + +DEFSH (0, 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 (0, no_set_aspath_exclude_val_cmd_vtysh, + "no set as-path exclude ." "<1-4294967295>", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "Transform BGP AS_PATH attribute\n" + "Exclude from the as-path\n" + "AS number\n") + +DEFSH (0, show_bgp_ipv4_safi_community2_exact_cmd_vtysh, + "show 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" + "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 (0, 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 (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, rip_version_cmd_vtysh, + "version <1-2>", + "Set routing protocol version\n" + "version\n") + +DEFSH (0, no_debug_isis_lupd_cmd_vtysh, + "no debug isis local-updates", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS local update packets\n") + +DEFSH (0, show_bgp_ipv6_neighbor_damp_cmd_vtysh, + "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) dampened-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 dampened routes received from neighbor\n") + +DEFSH (0, show_bgp_view_cmd_vtysh, + "show bgp view WORD", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n") + +DEFSH (0, 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 (0, show_bgp_view_route_cmd_vtysh, + "show bgp view WORD X:X::X:X", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, no_rip_redistribute_type_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, interface_no_ip_igmp_cmd_vtysh, + "no ip igmp", + "Negate a command or set its defaults\n" + "IP information\n" + "Enable IGMP operation\n") + +DEFSH (0, no_ipv6_nd_other_config_flag_cmd_vtysh, + "no ipv6 nd other-config-flag", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Other statefull configuration flag\n") + +DEFSH (0, ospf6_distance_ospf6_intra_external_cmd_vtysh, + "distance ospf6 intra-area <1-255> external <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "Intra-area routes\n" + "Distance for intra-area routes\n" + "External routes\n" + "Distance for external routes\n") + +DEFSH (0, ip_route_mask_flags_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, no_router_ospf6_cmd_vtysh, + "no router ospf6", + "Negate a command or set its defaults\n" + "Enable a routing process\n") + +DEFSH (0, no_ospf6_log_adjacency_changes_detail_cmd_vtysh, + "no log-adjacency-changes detail", + "Negate a command or set its defaults\n" + "Log changes in adjacency state\n" + "Log all state changes\n") + +DEFSH (0, 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 /, e.g., 3ffe::/16\n" + "Display route and more specific routes\n") + +DEFSH (0|0|0|0|0, 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 (0, show_ip_bgp_view_rsclient_prefix_cmd_vtysh, + "show ip bgp view WORD rsclient (A.B.C.D|X:X::X:X) A.B.C.D/M", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, show_bgp_ipv4_safi_neighbor_advertised_route_cmd_vtysh, + "show bgp ipv4 (multicast|unicast) neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\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 (0, clear_ip_bgp_as_encap_soft_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " encap 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 (0, neighbor_route_map_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "route-map WORD (in|out|import|export)", + "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" + "Apply map to routes going into a Route-Server client's table\n" + "Apply map to routes coming from a Route-Server client") + +DEFSH (0, show_bgp_ipv6_safi_damp_flap_prefix_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening flap-statistics X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, clear_bgp_ipv6_as_in_cmd_vtysh, + "clear bgp ipv6 " "<1-4294967295>" " in", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear peers with the AS number\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_zebra_fpm_stats_cmd_vtysh, + "show zebra fpm stats", + "Show running system information\n" + "Zebra information\n" + "Forwarding Path Manager information\n" + "Statistics\n") + +DEFSH (0, 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 (0, ip_route_vrf_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, ipv6_route_flags_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ip_route_mask_flags_distance2_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole) <1-255> " "vrf <0-65535>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ospf_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 (0, show_bgp_ipv4_safi_damp_flap_prefix_list_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics prefix-list WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, ipv6_nd_managed_config_flag_cmd_vtysh, + "ipv6 nd managed-config-flag", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Managed address configuration flag\n") + +DEFSH (0, show_ip_pim_upstream_rpf_cmd_vtysh, + "show ip pim upstream-rpf", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM upstream source rpf\n") + +DEFSH (0, show_bgp_ipv4_safi_community_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export)", + "Show running system 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 (0, 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 (0, no_ipv6_ripng_split_horizon_poisoned_reverse_cmd_vtysh, + "no ipv6 ripng split-horizon poisoned-reverse", + "Negate a command or set its defaults\n" + "IPv6 information\n" + "Routing Information Protocol\n" + "Perform split horizon\n" + "With poisoned-reverse\n") + +DEFSH (0, isis_hello_multiplier_l2_cmd_vtysh, + "isis hello-multiplier <2-100> level-2", + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Hello multiplier value\n" + "Specify hello multiplier for level-2 IIHs\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, link_params_ava_bw_cmd_vtysh, + "ava-bw BANDWIDTH", + "Unidirectional Available Bandwidth\n" + "Bytes/second (IEEE floating point format)\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, undebug_bgp_update_cmd_vtysh, + "undebug bgp updates", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP updates\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_encap_route_cmd_vtysh, + "show bgp ipv4 encap A.B.C.D", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display ENCAP NLRI specific information\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, ipv6_nd_prefix_val_noauto_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite) (no-autoconfig|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n" + "Do not use prefix for autoconfiguration") + +DEFSH (0, no_ip_route_flags_tag_distance2_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv4_safi_summary_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) summary", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, ospf_mpls_te_inter_as_area_cmd_vtysh, + "mpls-te inter-as area (A.B.C.D|<0-4294967295>)", + "MPLS-TE specific commands\n" + "Configure MPLS-TE Inter-AS support\n" + "AREA native mode self originate INTER_AS LSA with Type 10 (area flooding scope)\n" + "OSPF area ID in IP format\n" + "OSPF area ID as decimal value\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, clear_bgp_ipv6_as_cmd_vtysh, + "clear bgp ipv6 " "<1-4294967295>", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear peers with the AS number\n") + +DEFSH (0, 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 (0, ipv6_nd_prefix_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite) (off-link|) (no-autoconfig|) (router-address|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n" + "Do not use prefix for onlink determination\n" + "Do not use prefix for autoconfiguration\n" + "Set Router Address flag\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_memory_cmd_vtysh, + "show bgp memory", + "Show running system information\n" + "BGP information\n" + "Global BGP memory statistics\n") + +DEFSH (0, 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 (0, show_ip_route_addr_vrf_cmd_vtysh, + "show ip route A.B.C.D " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Network in the IP routing table to display\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv4_encap_summary_cmd_vtysh, + "show bgp ipv4 encap summary", + "Show running system information\n" + "BGP information\n" + "IPv4\n" + "Display ENCAP NLRI specific information\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, 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 (0, 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 (0, ipv6_nd_prefix_val_rtaddr_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite) (router-address|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n" + "Set Router Address flag\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, show_bgp_ipv4_encap_rd_neighbor_routes_cmd_vtysh, + "show bgp ipv4 encap rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\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 (0, no_isis_priority_l2_cmd_vtysh, + "no isis priority level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Specify priority for level-2 routing\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, match_ecommunity_cmd_vtysh, + "match extcommunity (<1-99>|<100-500>|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 (0, ospf6_distance_ospf6_intra_external_inter_cmd_vtysh, + "distance ospf6 intra-area <1-255> external <1-255> inter-area <1-255>", + "Define an administrative distance\n" + "OSPF6 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 (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, show_bgp_ipv4_safi_lcommunity3_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, show_ip_route_vrf_cmd_vtysh, + "show ip route " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_ipv6_nd_adv_interval_config_option_cmd_vtysh, + "no ipv6 nd adv-interval-option", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Advertisement Interval Option\n") + +DEFSH (0, no_ip_ssmpingd_cmd_vtysh, + "no ip ssmpingd [A.B.C.D]", + "Negate a command or set its defaults\n" + "IP information\n" + "Enable ssmpingd operation\n" + "Source address\n") + +DEFSH (0, show_ip_bgp_damp_flap_prefix_list_cmd_vtysh, + "show ip bgp dampening flap-statistics prefix-list WORD", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0, show_bgp_ipv4_safi_neighbor_received_routes_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) received-routes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\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 (0, debug_pim_packets_filter_cmd_vtysh, + "debug pim packets (hello|joins)", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM protocol packets\n" + "PIM Hello protocol packets\n" + "PIM Join/Prune protocol packets\n") + +DEFSH (0, linkdetect_cmd_vtysh, + "link-detect [default]", + "Enable link detection on interface\n" + "Leave link-detect to the default\n") + +DEFSH (0, no_debug_ospf_nssa_cmd_vtysh, + "no debug ospf nssa", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF nssa information\n") + +DEFSH (0, 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 (0, 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 (0, no_vty_login_cmd_vtysh, + "no login", + "Negate a command or set its defaults\n" + "Enable password checking\n") + +DEFSH (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, bgp_network_backdoor_cmd_vtysh, + "network A.B.C.D/M backdoor", + "Specify a network to announce via BGP\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Specify a BGP backdoor route\n") + +DEFSH (0, no_ipv6_ripng_split_horizon_cmd_vtysh, + "no ipv6 ripng split-horizon", + "Negate a command or set its defaults\n" + "IPv6 information\n" + "Routing Information Protocol\n" + "Perform split horizon\n") + +DEFSH (0, isis_redistribute_cmd_vtysh, + "redistribute (ipv4|ipv6) " "(kernel|connected|static|rip|ripng|ospf|ospf6|bgp|pim|babel|nhrp)" + " (level-1|level-2) {metric <0-16777215>|route-map WORD}", + "Redistribute information from another routing protocol\n" + "Redistribute IPv4 routes\n" + "Redistribute IPv6 routes\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (OSPFv2)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Redistribute into level-1\n" + "Redistribute into level-2\n" + "Metric for redistributed routes\n" + "ISIS default metric\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, show_bgp_view_afi_safi_lcommunity_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) large-community (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, ipv6_route_ifname_pref_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_view_ipv6_safi_rsclient_cmd_vtysh, + "show bgp view WORD ipv6 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, show_ip_pim_assert_cmd_vtysh, + "show ip pim assert", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface assert\n") + +DEFSH (0, 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 (0, 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 (0|0|0|0, 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 (0, show_ip_pim_assert_internal_cmd_vtysh, + "show ip pim assert-internal", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface internal assert state\n") + +DEFSH (0, show_ip_bgp_view_neighbor_received_routes_cmd_vtysh, + "show ip bgp view WORD neighbors (A.B.C.D|X:X::X:X) received-routes", + "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" + "Display the received routes from neighbor\n") + +DEFSH (0, bgp_redistribute_ipv4_rmap_metric_cmd_vtysh, + "redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " route-map WORD metric <0-4294967295>", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0, 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 (0, 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 (0, ospf_redistribute_source_cmd_vtysh, + "redistribute " "(kernel|connected|static|rip|isis|bgp|pim|babel|nhrp)" + " {metric <0-16777214>|metric-type (1|2)|route-map WORD}", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\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 (0, ospf6_distance_ospf6_inter_intra_cmd_vtysh, + "distance ospf6 inter-area <1-255> intra-area <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "Inter-area routes\n" + "Distance for inter-area routes\n" + "Intra-area routes\n" + "Distance for intra-area routes\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, csnp_interval_l2_cmd_vtysh, + "isis csnp-interval <1-600> level-2", + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "CSNP interval value\n" + "Specify interval for level-2 CSNPs\n") + +DEFSH (0, 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 (0, ospf_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 (0, 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 (0, 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 (0, neighbor_maximum_prefix_threshold_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> <1-100>", + "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" + "Threshold value (%) at which to generate a warning msg\n") + +DEFSH (0, 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 (0, ospf_neighbor_cmd_vtysh, + "neighbor A.B.C.D", + "Specify neighbor router\n" + "Neighbor IP address\n") + +DEFSH (0|0|0, ospf6_routemap_match_address_prefixlist_cmd_vtysh, + "match ipv6 address prefix-list WORD", + "Match values\n" + "IPv6 information\n" + "Match address of route\n" + "Match entries of prefix-lists\n" + "IPv6 prefix-list name\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_debug_ssmpingd_cmd_vtysh, + "no debug ssmpingd", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "ssmpingd activity\n") + +DEFSH (0, ip_irdp_shutdown_cmd_vtysh, + "ip irdp shutdown", + "IP information\n" + "ICMP Router discovery shutdown on this interface\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, isis_hello_interval_cmd_vtysh, + "isis hello-interval <1-600>", + "IS-IS commands\n" + "Set Hello interval\n" + "Hello interval value\n" + "Holdtime 1 seconds, interval depends on multiplier\n") + +DEFSH (0, rip_redistribute_type_metric_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)" " metric <0-16>", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric\n" + "Metric value\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, show_bgp_instance_ipv6_safi_summary_cmd_vtysh, + "show bgp view WORD ipv6 (unicast|multicast) summary", + "Show running system 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 (0, link_params_inter_as_cmd_vtysh, + "neighbor A.B.C.D as <1-4294967295>", + "Configure remote ASBR information (Neighbor IP address and AS number)\n" + "Remote IP address in dot decimal A.B.C.D\n" + "Remote AS number\n" + "AS number in the range <1-4294967295>\n") + +DEFSH (0, show_bgp_view_afi_safi_neighbor_adv_recd_routes_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) (advertised-routes|received-routes)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\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 advertised routes to neighbor\n" + "Display the received routes from neighbor\n") + +DEFSH (0, show_ipv6_ospf6_database_type_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + ) + +DEFSH (0, show_bgp_ipv4_safi_rd_prefix_cmd_vtysh, + "show bgp ipv4 (encap|vpn) rd ASN:nn_or_IP-address:nn A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, show_bgp_ipv4_vpn_tags_cmd_vtysh, + "show bgp ipv4 vpn tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, show_ipv6_ospf6_database_linkstate_id_cmd_vtysh, + "show ipv6 ospf6 database linkstate-id A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, no_debug_pim_trace_cmd_vtysh, + "no debug pim trace", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM internal daemon activity\n") + +DEFSH (0, 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 /\n" + "Route-map to modify the attributes\n" + "Name of the route map\n") + +DEFSH (0|0|0|0|0, 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 (0, show_bgp_ipv6_safi_dampened_paths_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampened-paths", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display paths suppressed due to dampening\n") + +DEFSH (0, ospf_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 (0, no_ip_ospf_mtu_ignore_cmd_vtysh, + "no ip ospf mtu-ignore", + "IP Information\n" + "OSPF interface commands\n" + "Disable mtu mismatch detection\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0|0|0, 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 (0, show_bgp_ipv6_safi_flap_prefix_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, set_community_none_cmd_vtysh, + "set community none", + "Set values in destination routing protocol\n" + "BGP community attribute\n" + "No community attribute\n") + +DEFSH (0, 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 (0, set_atomic_aggregate_cmd_vtysh, + "set atomic-aggregate", + "Set values in destination routing protocol\n" + "BGP atomic aggregate attribute\n" ) + +DEFSH (0, show_bgp_community_list_cmd_vtysh, + "show bgp community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n") + +DEFSH (0, 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 (0, 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 inbound and outbound updates\n") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0, 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 (0, 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 (0, no_terminal_monitor_cmd_vtysh, + "no terminal monitor", + "Negate a command or set its defaults\n" + "Set terminal line parameters\n" + "Copy debug output to the current terminal line\n") + +DEFSH (0, debug_zebra_rib_cmd_vtysh, + "debug zebra rib", + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug RIB events\n") + +DEFSH (0, log_commands_cmd_vtysh, + "log commands", + "Logging control\n" + "Log all commands (can't be unset without restart)\n") + +DEFSH (0, show_ip_forwarding_cmd_vtysh, + "show ip forwarding", + "Show running system information\n" + "IP information\n" + "IP forwarding status\n") + +DEFSH (0, show_bgp_ipv4_safi_neighbor_routes_cmd_vtysh, + "show bgp ipv4 (multicast|unicast) neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system 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 (0, 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 (0|0|0|0, 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 (0, show_ip_route_cmd_vtysh, + "show ip route", + "Show running system information\n" + "IP information\n" + "IP routing table\n") + +DEFSH (0, 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 (0, ipv6_nd_prefix_val_nortaddr_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite) (off-link|) (no-autoconfig|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n" + "Do not use prefix for onlink determination\n" + "Do not use prefix for autoconfiguration\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_encap_route_cmd_vtysh, + "show bgp ipv6 encap X:X::X:X", + "Show running system information\n" + "BGP information\n" + "IPv6 Information\n" + "Display ENCAP NLRI specific information\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, show_bgp_ipv4_safi_rsclient_prefix_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, 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 (0, rip_redistribute_type_routemap_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)" " route-map WORD", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, match_community_cmd_vtysh, + "match community (<1-99>|<100-500>|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 (0, no_bgp_graceful_restart_restart_time_cmd_vtysh, + "no bgp graceful-restart restart-time", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Graceful restart capability parameters\n" + "Set the time to wait to delete stale routes before a BGP open message is received\n") + +DEFSH (0, isis_circuit_type_cmd_vtysh, + "isis circuit-type (level-1|level-1-2|level-2-only)", + "IS-IS commands\n" + "Configure circuit type for interface\n" + "Level-1 only adjacencies are formed\n" + "Level-1-2 adjacencies are formed\n" + "Level-2 only adjacencies are formed\n") + +DEFSH (0, show_ipv6_mbgp_lcommunity2_cmd_vtysh, + "show ipv6 mbgp large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "MBGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, debug_isis_upd_cmd_vtysh, + "debug isis update-packets", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS Update related packets\n") + +DEFSH (0, 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 (0, no_ip_community_list_expanded_cmd_vtysh, + "no ip community-list <100-500> (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 (0, ospf_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 (0, interface_no_ip_igmp_query_max_response_time_dsec_cmd_vtysh, + "no" " " "ip igmp query-max-response-time-dsec", + "Negate a command or set its defaults\n" + "IP information\n" + "Enable IGMP operation\n" + "IGMP max query response value (deciseconds)\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_isis_interface_arg_cmd_vtysh, + "show isis interface WORD", + "Show running system information\n" + "ISIS network information\n" + "ISIS interface\n" + "ISIS interface name\n") + +DEFSH (0, if_nhrp_reg_flags_cmd_vtysh, + "(ip|ipv6)" " nhrp registration (no-unique)", + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Registration configuration\n" + "Don't set unique flag\n") + +DEFSH (0, show_ip_bgp_view_rsclient_route_cmd_vtysh, + "show ip bgp view WORD rsclient (A.B.C.D|X:X::X:X) A.B.C.D", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, show_bgp_ipv4_safi_damp_flap_prefix_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, ospf6_distance_ospf6_external_cmd_vtysh, + "distance ospf6 external <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "External routes\n" + "Distance for external routes\n") + +DEFSH (0, no_debug_bgp_nht_cmd_vtysh, + "no debug bgp nht", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP nexthop tracking events\n") + +DEFSH (0, no_set_ipv6_nexthop_peer_cmd_vtysh, + "no set ipv6 next-hop peer-address", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "IPv6 information\n" + "IPv6 next-hop address\n" + ) + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, show_bgp_ipv4_safi_neighbor_received_prefix_filter_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) received prefix-filter", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family modifier\n" + "Address Family modifier\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 (0, debug_pim_packetdump_recv_cmd_vtysh, + "debug pim packet-dump receive", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM packet dump\n" + "Dump received packets\n") + +DEFSH (0, ipv6_route_ifname_flags_pref_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv6_rsclient_route_cmd_vtysh, + "show bgp ipv6 rsclient (A.B.C.D|X:X::X:X) X:X::X:X", + "Show running system information\n" + "BGP information\n" + "IPv6 Information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, bandwidth_if_cmd_vtysh, + "bandwidth <1-10000000>", + "Set bandwidth informational parameter\n" + "Bandwidth in kilobits\n") + +DEFSH (0, 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 (0, no_isis_metric_l2_arg_cmd_vtysh, + "no isis metric <0-16777215> level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set default metric for circuit\n" + "Default metric value\n" + "Specify metric for level-2 routing\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, no_debug_igmp_cmd_vtysh, + "no debug igmp", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n") + +DEFSH (0, no_psnp_interval_l2_arg_cmd_vtysh, + "no isis psnp-interval <1-120> level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "PSNP interval value\n" + "Specify interval for level-2 PSNPs\n") + +DEFSH (0, no_spf_interval_l1_arg_cmd_vtysh, + "no spf-interval level-1 <1-120>", + "Negate a command or set its defaults\n" + "Minimum interval between SPF calculations\n" + "Set interval for level 1 only\n" + "Minimum interval between consecutive SPFs in seconds\n") + +DEFSH (0, show_ip_bgp_lcommunity_cmd_vtysh, + "show ip bgp large-community (AA:BB:CC)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, neighbor_maximum_prefix_threshold_warning_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> <1-100> 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" + "Threshold value (%) at which to generate a warning msg\n" + "Only give warning message when limit is exceeded\n") + +DEFSH (0, show_bgp_ipv6_encap_cmd_vtysh, + "show bgp ipv6 encap", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n") + +DEFSH (0, ripng_network_cmd_vtysh, + "network IF_OR_ADDR", + "RIPng enable on specified interface or network.\n" + "Interface or address") + +DEFSH (0, 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 (0, 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 (0, no_isis_circuit_type_cmd_vtysh, + "no isis circuit-type (level-1|level-1-2|level-2-only)", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Configure circuit type for interface\n" + "Level-1 only adjacencies are formed\n" + "Level-1-2 adjacencies are formed\n" + "Level-2 only adjacencies are formed\n") + +DEFSH (0, clear_bgp_ipv6_as_soft_in_cmd_vtysh, + "clear bgp ipv6 " "<1-4294967295>" " soft in", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0|0|0|0|0, match_tag_cmd_vtysh, + "match tag <1-4294967295>", + "Match values from routing table\n" + "Match tag of route\n" + "Metric value\n") + +DEFSH (0, show_ipv6_ospf6_database_type_adv_router_linkstate_id_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) " + "adv-router A.B.C.D linkstate-id A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, show_bgp_ipv6_vpn_rd_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv6 vpn rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN 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" + "Neighbor to display information about\n" + "Display the routes advertised to a BGP neighbor\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, 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 (0, show_ip_bgp_damp_flap_prefix_longer_cmd_vtysh, + "show ip bgp dampening flap-statistics A.B.C.D/M longer-prefixes", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, no_area_export_list_cmd_vtysh, + "no area A.B.C.D export-list NAME", + "OSPFv6 area parameters\n" + "OSPFv6 area ID in IP address format\n" + "Unset the filter for networks announced to other areas\n" + "Name of the access-list\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_encap_rd_cmd_vtysh, + "show bgp ipv4 encap rd ASN:nn_or_IP-address:nn", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n") + +DEFSH (0, debug_ospf6_lsa_hex_detail_cmd_vtysh, + "debug ospf6 lsa (router|network|inter-prefix|inter-router|as-ext|grp-mbr|type7|link|intra-prefix|unknown) (originate|examine|flooding)", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug Link State Advertisements (LSAs)\n" + "Specify LS type as Hexadecimal\n" + ) + +DEFSH (0|0|0|0, clear_ipv6_prefix_list_cmd_vtysh, + "clear ipv6 prefix-list", + "Reset functions\n" + "IPv6 information\n" + "Build a prefix list\n") + +DEFSH (0, 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 (0, isis_hello_padding_cmd_vtysh, + "isis hello padding", + "IS-IS commands\n" + "Add padding to IS-IS hello packets\n" + "Pad hello packets\n" + "\n") + +DEFSH (0, ipv6_nd_homeagent_preference_cmd_vtysh, + "ipv6 nd home-agent-preference <0-65535>", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent preference\n" + "preference value (default is 0, least preferred)\n") + +DEFSH (0, interface_no_ip_igmp_join_cmd_vtysh, + "no ip igmp join A.B.C.D A.B.C.D", + "Negate a command or set its defaults\n" + "IP information\n" + "Enable IGMP operation\n" + "IGMP join multicast group\n" + "Multicast group address\n" + "Source address\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, 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 (0, no_ipv6_route_pref_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ipv6_bgp_distance_source_cmd_vtysh, + "distance <1-255> X:X::X:X/M", + "Define an administrative distance\n" + "Administrative distance\n" + "IP source prefix\n") + +DEFSH (0, ipv6_route_flags_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_max_lsp_lifetime_l2_arg_cmd_vtysh, + "no max-lsp-lifetime level-2 <350-65535>", + "Negate a command or set its defaults\n" + "Maximum LSP lifetime for Level 2 only\n" + "LSP lifetime for Level 2 only in seconds\n") + +DEFSH (0, show_bgp_view_ipv6_neighbor_advertised_route_cmd_vtysh, + "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\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 (0, debug_bgp_allow_martians_cmd_vtysh, + "debug bgp allow-martians", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP allow martian next hops\n") + +DEFSH (0, neighbor_local_as_no_prepend_replace_as_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as " "<1-4294967295>" " no-prepend replace-as", + "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" + "Do not prepend local-as to updates from ibgp peers\n") + +DEFSH (0, show_bgp_ipv6_safi_community3_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) 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" + "Address family modifier\n" + "Address family modifier\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 (0, clear_ip_bgp_as_cmd_vtysh, + "clear ip bgp " "<1-4294967295>", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear peers with the AS number\n") + +DEFSH (0, 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 (0, no_ipv6_bgp_distance_source_cmd_vtysh, + "no distance <1-255> X:X::X:X/M", + "Negate a command or set its defaults\n" + "Define an administrative distance\n" + "Administrative distance\n" + "IP source prefix\n") + +DEFSH (0, undebug_bgp_keepalive_cmd_vtysh, + "undebug bgp keepalives", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP keepalives\n") + +DEFSH (0, clear_isis_neighbor_cmd_vtysh, + "clear isis neighbor", + "Reset functions\n" + "Reset ISIS network information\n" + "Reset ISIS neighbor adjacencies\n") + +DEFSH (0, no_lsp_refresh_interval_arg_cmd_vtysh, + "no lsp-refresh-interval <1-65235>", + "Negate a command or set its defaults\n" + "LSP refresh interval\n" + "LSP refresh interval in seconds\n") + +DEFSH (0, 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 (0, no_ospf_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 (0, 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 (0, show_bgp_view_ipv4_safi_rsclient_cmd_vtysh, + "show bgp view WORD ipv4 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, 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 (0, no_area_lsp_mtu_cmd_vtysh, + "no lsp-mtu", + "Negate a command or set its defaults\n" + "Configure the maximum size of generated LSPs\n") + +DEFSH (0, lsp_refresh_interval_l1_cmd_vtysh, + "lsp-refresh-interval level-1 <1-65235>", + "LSP refresh interval for Level 1 only\n" + "LSP refresh interval for Level 1 only in seconds\n") + +DEFSH (0, show_bgp_ipv4_safi_damp_flap_regexp_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics regexp .LINE", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display detailed information about dampening\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 (0, 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 (0, ipv6_route_flags_pref_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0, no_debug_bgp_allow_martians_cmd_vtysh, + "no debug bgp allow-martians", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP allow martian next hops\n") + +DEFSH (0, no_link_params_enable_cmd_vtysh, + "no enable", + "Negate a command or set its defaults\n" + "Disable link parameters on this interface\n") + +DEFSH (0, show_bgp_ipv4_community_list_cmd_vtysh, + "show bgp ipv4 community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n") + +DEFSH (0, show_bgp_view_neighbor_advertised_route_cmd_vtysh, + "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system 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" + "Display the routes advertised to a BGP neighbor\n") + +DEFSH (0, show_bgp_ipv6_safi_community_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) community (AA:NN|local-AS|no-advertise|no-export)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\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 (0, ip_route_mask_flags2_tag_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295>" "vrf <0-65535>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, clear_ip_bgp_as_ipv4_soft_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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 inbound and outbound updates\n") + +DEFSH (0, no_ip_route_tag_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) tag <1-4294967295>", + "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" + "Tag of this route\n" + "Tag value\n") + +DEFSH (0, ip_lcommunity_list_name_standard2_cmd_vtysh, + "ip large-community-list standard WORD (deny|permit)", + "IP information\n" + "Add a large community list entry\n" + "Specify standard large-community-list\n" + "Large Community list name\n" + "Specify large community to reject\n" + "Specify large community to accept\n") + +DEFSH (0, psnp_interval_l1_cmd_vtysh, + "isis psnp-interval <1-120> level-1", + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "PSNP interval value\n" + "Specify interval for level-1 PSNPs\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_bgp_ipv4_safi_damp_flap_address_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics A.B.C.D", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, show_isis_topology_l2_cmd_vtysh, + "show isis topology level-2", + "Show running system information\n" + "IS-IS information\n" + "IS-IS paths to Intermediate Systems\n" + "Paths to all level-2 routers in the domain\n") + +DEFSH (0, clear_ip_bgp_prefix_cmd_vtysh, + "clear ip bgp prefix A.B.C.D/M", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear bestpath and re-advertise\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, no_ospf_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 (0, no_debug_ospf_te_cmd_vtysh, + "no debug ospf te", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF-TE information\n") + +DEFSH (0, neighbor_update_source_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "update-source " "(A.B.C.D|X:X::X:X|WORD)", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Source of routing updates\n" + "IPv4 address\n" "IPv6 address\n" "Interface name (requires zebra to be running)\n") + +DEFSH (0, ospf_area_nssa_cmd_vtysh, + "area (A.B.C.D|<0-4294967295>) nssa", + "OSPF area parameters\n" + "OSPF area ID in IP address format\n" + "OSPF area ID as a decimal value\n" + "Configure OSPF area as nssa\n") + +DEFSH (0, 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 (0, ip_ospf_authentication_cmd_vtysh, + "ip ospf authentication", + "IP Information\n" + "OSPF interface commands\n" + "Enable authentication on this interface\n") + +DEFSH (0, 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 /, e.g., 3ffe::/16\n" + "Display route and more specific routes\n") + +DEFSH (0, 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 (0, ospf_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 (0, 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 (0, 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 (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_ospf6_distance_source_cmd_vtysh, + "no distance <1-255> X:X::X:X/M", + "Negate a command or set its defaults\n" + "Administrative distance\n" + "Distance value\n" + "IP source prefix\n") + +DEFSH (0, if_no_nhrp_holdtime_cmd_vtysh, + "no " "(ip|ipv6)" " nhrp holdtime [1-65000]", + "Negate a command or set its defaults\n" + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Specify NBMA address validity time\n" + "Time in seconds that NBMA addresses are advertised valid\n") + +DEFSH (0, no_ospf_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 (0, 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 (0, 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 (0, 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 (0, show_isis_topology_l1_cmd_vtysh, + "show isis topology level-1", + "Show running system information\n" + "IS-IS information\n" + "IS-IS paths to Intermediate Systems\n" + "Paths to all level-1 routers in the area\n") + +DEFSH (0, show_ip_ssmpingd_cmd_vtysh, + "show ip ssmpingd", + "Show running system information\n" + "IP information\n" + "ssmpingd operation\n") + +DEFSH (0, clear_ip_bgp_peer_encap_out_cmd_vtysh, + "clear ip bgp A.B.C.D encap 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 (0, ip_route_mask_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, spf_interval_l2_cmd_vtysh, + "spf-interval level-2 <1-120>", + "Minimum interval between SPF calculations\n" + "Set interval for level 2 only\n" + "Minimum interval between consecutive SPFs in seconds\n") + +DEFSH (0, show_ip_rpf_addr_vrf_cmd_vtysh, + "show ip rpf A.B.C.D " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "Display RPF information for multicast source\n" + "IP multicast source address (e.g. 10.0.0.0)\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_encap_summary_cmd_vtysh, + "show bgp ipv6 encap summary", + "Show running system information\n" + "BGP information\n" + "IPv6\n" + "Display ENCAP NLRI specific information\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_safi_flap_route_map_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics route-map WORD", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display flap statistics of routes\n" + "Display routes matching the route-map\n" + "A route-map to match on\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_vpn_route_cmd_vtysh, + "show bgp ipv4 vpn A.B.C.D", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, 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 interface\n" + ) + +DEFSH (0, 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 (0, 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 (0, show_ip_pim_interface_cmd_vtysh, + "show ip pim interface", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface information\n") + +DEFSH (0, no_ripng_redistribute_type_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)", + "Negate a command or set its defaults\n" + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, debug_pim_trace_cmd_vtysh, + "debug pim trace", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM internal daemon activity\n") + +DEFSH (0, no_ip_route_tag_distance_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) tag <1-4294967295> <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" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, no_ospf_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 (0, show_ip_route_summary_vrf_cmd_vtysh, + "show ip route summary " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Summary of all routes\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, debug_bgp_as4_segment_cmd_vtysh, + "debug bgp as4 segment", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP AS4 actions\n" + "BGP AS4 aspath segment handling\n") + +DEFSH (0, show_bgp_ipv6_encap_tags_cmd_vtysh, + "show bgp ipv6 encap tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Route-map to modify the attributes\n" + "Name of the route map\n") + +DEFSH (0, 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 (0, set_ip_nexthop_peer_cmd_vtysh, + "set ip next-hop peer-address", + "Set values in destination routing protocol\n" + "IP information\n" + "Next hop address\n" + "Use peer address (for BGP only)\n") + +DEFSH (0, show_ip_rib_cmd_vtysh, + "show ip rib A.B.C.D", + "Show running system information\n" + "IP information\n" + "IP unicast routing table\n" + "Unicast address\n") + +DEFSH (0, ipv6_nd_reachable_time_cmd_vtysh, + "ipv6 nd reachable-time <1-3600000>", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Reachable time\n" + "Reachable time in milliseconds\n") + +DEFSH (0, debug_ospf_ism_cmd_vtysh, + "debug ospf ism", + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF Interface State Machine\n") + +DEFSH (0, show_bgp_ipv6_safi_neighbor_routes_cmd_vtysh, + "show bgp ipv6 (multicast|unicast) neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system 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 address\nIPv6 address\n" + "Neighbor address\nIPv6 address\n" + "Display routes learned from neighbor\n") + +DEFSH (0, show_bgp_ipv4_safi_damp_flap_prefix_longer_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics A.B.C.D/M longer-prefixes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_bgp_route_pathtype_cmd_vtysh, + "show bgp X:X::X:X (bestpath|multipath)", + "Show running system information\n" + "BGP information\n" + "Network in the BGP routing table to display\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, set_ipv6_nexthop_peer_cmd_vtysh, + "set ipv6 next-hop peer-address", + "Set values in destination routing protocol\n" + "IPv6 information\n" + "Next hop address\n" + "Use peer address (for BGP only)\n") + +DEFSH (0, show_database_detail_cmd_vtysh, + "show isis database detail", + "Show running system information\n" + "IS-IS information\n" + "IS-IS link state database\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_vpn_rd_cmd_vtysh, + "show bgp ipv4 vpn rd ASN:nn_or_IP-address:nn", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Display information for a route distinguisher\n" + "VPN Route Distinguisher\n") + +DEFSH (0, 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 (0, no_ospf_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 (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, 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" + "Transform BGP AS_PATH attribute\n" + "Prepend to the as-path\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_safi_damp_flap_filter_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening flap-statistics filter-list WORD", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, no_neighbor_advertise_interval_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "advertisement-interval", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Minimum interval between sending BGP routing updates\n") + +DEFSH (0, debug_bgp_nht_cmd_vtysh, + "debug bgp nht", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP nexthop tracking events\n") + +DEFSH (0, no_ospf_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 (0, isis_metric_l2_cmd_vtysh, + "isis metric <0-16777215> level-2", + "IS-IS commands\n" + "Set default metric for circuit\n" + "Default metric value\n" + "Specify metric for level-2 routing\n") + +DEFSH (0, no_bgp_confederation_identifier_arg_cmd_vtysh, + "no bgp confederation identifier " "<1-4294967295>", + "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 (0, show_bgp_instance_ipv6_neighbors_peer_cmd_vtysh, + "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\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 (0, show_bgp_ipv6_safi_damp_flap_statistics_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening flap-statistics", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n") + +DEFSH (0, clear_bgp_ipv6_as_soft_cmd_vtysh, + "clear bgp ipv6 " "<1-4294967295>" " soft", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n") + +DEFSH (0, isis_mpls_te_router_addr_cmd_vtysh, + "mpls-te router-address A.B.C.D", + "MPLS-TE specific commands\n" + "Stable IP address of the advertising router\n" + "MPLS-TE router address in IPv4 address format\n") + +DEFSH (0, no_ripng_timers_cmd_vtysh, + "no timers basic", + "Negate a command or set its defaults\n" + "RIPng timers setup\n" + "Basic timer\n") + +DEFSH (0, ipv6_nd_prefix_noval_rtaddr_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (router-address|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Set Router Address flag\n") + +DEFSH (0, 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 (0, clear_ip_bgp_peer_encap_soft_out_cmd_vtysh, + "clear ip bgp A.B.C.D encap 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 (0, no_psnp_interval_l2_cmd_vtysh, + "no isis psnp-interval level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "Specify interval for level-2 PSNPs\n") + +DEFSH (0|0|0|0, 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 (0, undebug_bgp_nht_cmd_vtysh, + "undebug bgp nht", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP next-hop tracking updates\n") + +DEFSH (0, debug_ospf6_spf_database_cmd_vtysh, + "debug ospf6 spf database", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug SPF Calculation\n" + "Log number of LSAs at SPF Calculation time\n" + ) + +DEFSH (0, no_ipv6_ospf6_network_cmd_vtysh, + "no ipv6 ospf6 network", + "Negate a command or set its defaults\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Network Type\n" + "Default to whatever interface type system specifies" + ) + +DEFSH (0, 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 (0, show_ipv6_ospf6_database_id_router_cmd_vtysh, + "show ipv6 ospf6 database * A.B.C.D A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Any Link state Type\n" + "Specify Link state ID as IPv4 address notation\n" + "Specify Advertising Router as IPv4 address notation\n" + ) + +DEFSH (0, 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 (0, neighbor_disable_connected_check_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "disable-connected-check", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "one-hop away EBGP peer using loopback address\n") + +DEFSH (0, 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 (0, ospf_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 (0, show_ip_route_prefix_vrf_all_cmd_vtysh, + "show ip route A.B.C.D/M " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, debug_isis_rtevents_cmd_vtysh, + "debug isis route-events", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS Route related events\n") + +DEFSH (0, no_debug_ospf6_neighbor_cmd_vtysh, + "no debug ospf6 neighbor", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 Neighbor\n" + ) + +DEFSH (0, debug_ospf_event_cmd_vtysh, + "debug ospf event", + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF event information\n") + +DEFSH (0, 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 (0, ip_route_mask_tag_distance_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ospf_max_metric_router_lsa_startup_cmd_vtysh, + "max-metric router-lsa on-startup <5-86400>", + "OSPF maximum / infinite-distance metric\n" + "Advertise own Router-LSA with infinite distance (stub router)\n" + "Automatically advertise stub Router-LSA on startup of OSPF\n" + "Time (seconds) to advertise self as stub-router\n") + +DEFSH (0, no_ip_route_mask_flags2_tag_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295>", + "Negate a command or set its defaults\n" + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n") + +DEFSH (0|0|0, 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 (0, show_bgp_ipv4_safi_damp_flap_route_map_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics route-map WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes matching the route-map\n" + "A route-map to match on\n") + +DEFSH (0, no_ip_rip_split_horizon_cmd_vtysh, + "no ip rip split-horizon", + "Negate a command or set its defaults\n" + "IP information\n" + "Routing Information Protocol\n" + "Perform split horizon\n") + +DEFSH (0, interface_ip_igmp_query_interval_cmd_vtysh, + "ip igmp query-interval" " <1-1800>", + "IP information\n" + "Enable IGMP operation\n" + "IGMP host query interval\n" + "Query interval in seconds\n") + +DEFSH (0, 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 (0, 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 inbound and outbound updates\n") + +DEFSH (0|0, 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 (0, show_ipv6_ospf6_database_type_self_originated_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) self-originated", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Display Self-originated LSAs\n" + ) + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0, bgp_confederation_identifier_cmd_vtysh, + "bgp confederation identifier " "<1-4294967295>", + "BGP specific commands\n" + "AS confederation parameters\n" + "AS number\n" + "Set routing domain confederation AS\n") + +DEFSH (0, show_ip_bgp_lcommunity_all_cmd_vtysh, + "show ip bgp large-community", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the large-communities\n") + +DEFSH (0, show_ip_bgp_ipv4_lcommunity3_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "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 large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, show_ipv6_ospf6_neighbor_detail_cmd_vtysh, + "show ipv6 ospf6 neighbor (detail|drchoice)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Neighbor list\n" + "Display details\n" + "Display DR choices\n" + ) + +DEFSH (0, 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 (0|0|0|0|0, no_set_tag_cmd_vtysh, + "no set tag", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "Tag value for routing protocol\n") + +DEFSH (0, show_ip_bgp_instance_ipv4_rsclient_summary_cmd_vtysh, + "show ip bgp view WORD ipv4 (unicast|multicast) rsclient 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" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0|0|0|0|0|0, no_rmap_description_cmd_vtysh, + "no description", + "Negate a command or set its defaults\n" + "Route-map comment\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, ospf_cost_u32_cmd_vtysh, + "ospf cost <1-65535>", + "OSPF interface commands\n" + "Interface cost\n" + "Cost") + +DEFSH (0, show_ipv6_route_protocol_vrf_all_cmd_vtysh, + "show ipv6 route " "(kernel|connected|static|ripng|ospf6|isis|bgp|babel|nhrp)" " " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, ip_irdp_debug_misc_cmd_vtysh, + "ip irdp debug misc", + "IP information\n" + "ICMP Router discovery debug Averts. and Solicits (short)\n") + +DEFSH (0, match_community_exact_cmd_vtysh, + "match community (<1-99>|<100-500>|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 (0, no_match_ip_route_source_val_cmd_vtysh, + "no match ip route-source (<1-199>|<1300-2699>|WORD)", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "IP information\n" + "Match advertising source address of route\n" + "IP access-list number\n" + "IP access-list number (expanded range)\n" + "IP standard access-list name\n") + +DEFSH (0|0|0|0|0, 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 (0, ospf_distance_ospf_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 (0, show_bgp_statistics_view_vpnv4_cmd_vtysh, + "show bgp view WORD (ipv4) (vpnv4) statistics", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "Address family\n" + "Address Family modifier\n" + "BGP RIB advertisement statistics\n") + +DEFSH (0, no_spf_interval_l1_cmd_vtysh, + "no spf-interval level-1", + "Negate a command or set its defaults\n" + "Minimum interval between SPF calculations\n" + "Set interval for level 1 only\n") + +DEFSH (0, no_psnp_interval_l1_cmd_vtysh, + "no isis psnp-interval level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "Specify interval for level-1 PSNPs\n") + +DEFSH (0, show_bgp_ipv4_safi_route_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) A.B.C.D", + "Show running system 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 (0, no_ip_multicast_routing_cmd_vtysh, + "no" " " "ip multicast-routing", + "Negate a command or set its defaults\n" + "IP information\n" + "Global IP configuration subcommands\n" + "Enable IP multicast forwarding\n") + +DEFSH (0, interface_ip_igmp_cmd_vtysh, + "ip igmp", + "IP information\n" + "Enable IGMP operation\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_set_overload_bit_cmd_vtysh, + "no set-overload-bit", + "Reset overload bit to accept transit traffic\n" + "Reset overload bit\n") + +DEFSH (0, ip_protocol_cmd_vtysh, + "ip protocol PROTO route-map ROUTE-MAP", + "Negate a command or set its defaults\n" + "Apply route map to PROTO\n" + "Protocol name\n" + "Route map name\n") + +DEFSH (0, 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 (0, show_ip_route_vrf_all_cmd_vtysh, + "show ip route " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, no_debug_ospf6_zebra_sendrecv_cmd_vtysh, + "no debug ospf6 zebra (send|recv)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug connection between zebra\n" + "Debug Sending zebra\n" + "Debug Receiving zebra\n" + ) + +DEFSH (0, isis_priority_l1_cmd_vtysh, + "isis priority <0-127> level-1", + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Priority value\n" + "Specify priority for level-1 routing\n") + +DEFSH (0, no_ospf6_distance_source_access_list_cmd_vtysh, + "no distance <1-255> X:X::X:X/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 (0, no_spf_interval_l2_arg_cmd_vtysh, + "no spf-interval level-2 <1-120>", + "Negate a command or set its defaults\n" + "Minimum interval between SPF calculations\n" + "Set interval for level 2 only\n" + "Minimum interval between consecutive SPFs in seconds\n") + +DEFSH (0, 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 (0, bgp_graceful_restart_cmd_vtysh, + "bgp graceful-restart", + "BGP specific commands\n" + "Graceful restart capability parameters\n") + +DEFSH (0, no_metric_style_cmd_vtysh, + "no metric-style", + "Negate a command or set its defaults\n" + "Use old-style (ISO 10589) or new-style packet formats\n") + +DEFSH (0, 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 (0, ospf6_log_adjacency_changes_cmd_vtysh, + "log-adjacency-changes", + "Log changes in adjacency state\n") + +DEFSH (0, set_overload_bit_cmd_vtysh, + "set-overload-bit", + "Set overload bit to avoid any transit traffic\n" + "Set overload bit\n") + +DEFSH (0, 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 (0, no_isis_metric_cmd_vtysh, + "no isis metric", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set default metric for circuit\n") + +DEFSH (0, link_params_delay_mm_cmd_vtysh, + "delay <0-16777215> min <0-16777215> max <0-16777215>", + "Unidirectional Average Link Delay (optionally Minimum and Maximum delays)\n" + "Average delay in micro-second as decimal (0...16777215)\n" + "Minimum delay\n" + "Minimum delay in micro-second as decimal (0...16777215)\n" + "Maximum delay\n" + "Maximum delay in micro-second as decimal (0...16777215)\n") + +DEFSH (0, 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 (0, 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 (0, ospf6_redistribute_routemap_cmd_vtysh, + "redistribute " "(kernel|connected|static|ripng|isis|bgp|babel|nhrp)" " route-map WORD", + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Route map name\n" + ) + +DEFSH (0, no_set_metric_addsub_cmd_vtysh, + "no set metric <+/-metric>", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "Metric value for destination routing protocol\n" + "Add or subtract metric\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, no_isis_metric_l1_arg_cmd_vtysh, + "no isis metric <0-16777215> level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set default metric for circuit\n" + "Default metric value\n" + "Specify metric for level-1 routing\n") + +DEFSH (0, show_bgp_ipv6_safi_community_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n") + +DEFSH (0, 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 (0, show_ip_ospf_cmd_vtysh, + "show ip ospf", + "Show running system information\n" + "IP information\n" + "OSPF information\n") + +DEFSH (0, no_ospf_abr_type_cmd_vtysh, + "no ospf abr-type (cisco|ibm|shortcut|standard)", + "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 (0, 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 (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, show_ip_pim_secondary_cmd_vtysh, + "show ip pim secondary", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM neighbor addresses\n") + +DEFSH (0, no_bgp_rr_allow_outbound_policy_cmd_vtysh, + "no bgp route-reflector allow-outbound-policy", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Allow modifications made by out route-map\n" + "on ibgp neighbors\n") + +DEFSH (0, show_ipv6_ospf6_database_adv_router_linkstate_id_cmd_vtysh, + "show ipv6 ospf6 database adv-router A.B.C.D linkstate-id A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, 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 (0, ip_irdp_holdtime_cmd_vtysh, + "ip irdp holdtime <0-9000>", + "IP information\n" + "ICMP Router discovery on this interface\n" + "Set holdtime value\n" + "Holdtime value in seconds. Default is 1800 seconds\n") + +DEFSH (0, clear_ip_bgp_as_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " in", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, 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 (0, ip_route_flags_tag_vrf_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, no_isis_default_originate_cmd_vtysh, + "no default-information originate (ipv4|ipv6) (level-1|level-2)", + "Negate a command or set its defaults\n" + "Control distribution of default information\n" + "Distribute a default route\n" + "Distribute default route for IPv4\n" + "Distribute default route for IPv6\n" + "Distribute default route into level-1\n" + "Distribute default route into level-2\n") + +DEFSH (0, show_ip_bgp_route_pathtype_cmd_vtysh, + "show ip bgp A.B.C.D (bestpath|multipath)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, show_ipv6_ospf6_database_type_router_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) * A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Any Link state ID\n" + "Specify Advertising Router as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, show_ip_ospf_border_routers_cmd_vtysh, + "show ip ospf border-routers", + "Show running system information\n" + "IP information\n" + "show all the ABR's and ASBR's\n" + "for this area\n") + +DEFSH (0, 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 (0, ipv6_nd_prefix_noval_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (no-autoconfig|) (off-link|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Do not use prefix for autoconfiguration\n" + "Do not use prefix for onlink determination\n") + +DEFSH (0, ripng_offset_list_ifname_cmd_vtysh, + "offset-list WORD (in|out) <0-16> IFNAME", + "Modify RIPng metric\n" + "Access-list name\n" + "For incoming updates\n" + "For outgoing updates\n" + "Metric value\n" + "Interface to match\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out the existing ORF prefix-list\n") + +DEFSH (0, clear_ip_bgp_as_vpnv4_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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" + "Resend all outbound updates\n") + +DEFSH (0, area_lsp_mtu_cmd_vtysh, + "lsp-mtu <128-4352>", + "Configure the maximum size of generated LSPs\n" + "Maximum size of generated LSPs\n") + +DEFSH (0, debug_nhrp_cmd_vtysh, + "debug nhrp " "(all|common|event|interface|kernel|route|vici)", + "Enable debug messages for specific or all parts.\n" + "NHRP information\n" + "All messages\n" "Common messages (default)\n" "Event manager messages\n" "Interface messages\n" "Kernel messages\n" "Route messages\n" "VICI messages\n") + +DEFSH (0, 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 (0, undebug_igmp_packets_cmd_vtysh, + "undebug igmp packets", + "Disable debugging functions (see also 'debug')\n" + "IGMP protocol activity\n" + "IGMP protocol packets\n") + +DEFSH (0, no_dump_bgp_all_cmd_vtysh, + "no dump bgp (all|updates|routes-mrt) [PATH] [INTERVAL]", + "Negate a command or set its defaults\n" + "Stop dump packet\n" + "Stop BGP packet dump\n" + "Stop dump process all/all-et\n" + "Stop dump process updates/updates-et\n" + "Stop dump process route-mrt\n") + +DEFSH (0, 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 (0, no_debug_static_cmd_vtysh, + "no debug static", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM Static Multicast Route activity\n") + +DEFSH (0, no_ip_route_mask_flags_distance2_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, no_match_ecommunity_val_cmd_vtysh, + "no match extcommunity (<1-99>|<100-500>|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 (0, show_bgp_ipv4_encap_prefix_cmd_vtysh, + "show bgp ipv4 encap A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display ENCAP NLRI specific information\n" + "Display information about ENCAP NLRIs\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, no_debug_ospf6_neighbor_detail_cmd_vtysh, + "no debug ospf6 neighbor (state|event)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 Neighbor\n" + "Debug OSPFv3 Neighbor State Change\n" + "Debug OSPFv3 Neighbor Event\n" + ) + +DEFSH (0, ospf_area_nssa_no_summary_cmd_vtysh, + "area (A.B.C.D|<0-4294967295>) nssa no-summary", + "OSPF area parameters\n" + "OSPF area ID in IP address format\n" + "OSPF area ID as a decimal value\n" + "Configure OSPF area as nssa\n" + "Do not inject inter-area routes into nssa\n") + +DEFSH (0, 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 (0, ipv6_route_pref_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ip_pim_dr_cmd_vtysh, + "show ip pim designated-router", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface designated router\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0|0|0|0, 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 (0, show_bgp_ipv4_safi_flap_regexp_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics regexp .LINE", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\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 (0, no_log_adj_changes_cmd_vtysh, + "no log-adjacency-changes", + "Stop logging changes in adjacency state\n") + +DEFSH (0, show_ip_community_list_arg_cmd_vtysh, + "show ip community-list (<1-500>|WORD)", + "Show running system information\n" + "IP information\n" + "List community-list\n" + "Community-list number\n" + "Community-list name\n") + +DEFSH (0, no_neighbor_advertise_interval_val_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "advertisement-interval <0-600>", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Minimum interval between sending BGP routing updates\n" + "time in seconds\n") + +DEFSH (0, show_ip_pim_upstream_join_desired_cmd_vtysh, + "show ip pim upstream-join-desired", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM upstream join-desired\n") + +DEFSH (0, show_bgp_ipv4_vpn_rd_tags_cmd_vtysh, + "show bgp ipv4 vpn rd ASN:nn_or_IP-address:nn tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Display information for a route distinguisher\n" + "VPN Route Distinguisher\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, no_ip_rip_split_horizon_poisoned_reverse_cmd_vtysh, + "no ip rip split-horizon poisoned-reverse", + "Negate a command or set its defaults\n" + "IP information\n" + "Routing Information Protocol\n" + "Perform split horizon\n" + "With poisoned-reverse\n") + +DEFSH (0, show_ip_bgp_lcommunity_info_cmd_vtysh, + "show ip bgp large-community-info", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "List all bgp large-community information\n") + +DEFSH (0, bgp_redistribute_ipv6_metric_cmd_vtysh, + "redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " metric <0-4294967295>", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0, 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 (0, debug_ospf6_zebra_sendrecv_cmd_vtysh, + "debug ospf6 zebra (send|recv)", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug connection between zebra\n" + "Debug Sending zebra\n" + "Debug Receiving zebra\n" + ) + +DEFSH (0, ospf6_timers_throttle_spf_cmd_vtysh, + "timers throttle spf <0-600000> <0-600000> <0-600000>", + "Adjust routing timers\n" + "Throttling adaptive timer\n" + "OSPF6 SPF timers\n" + "Delay (msec) from first change received till SPF calculation\n" + "Initial hold time (msec) between consecutive SPF calculations\n" + "Maximum hold time (msec)\n") + +DEFSH (0, 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 (0, 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 (0, debug_bgp_filter_cmd_vtysh, + "debug bgp filters", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP filters\n") + +DEFSH (0, ipv6_route_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, ipv6_nd_homeagent_lifetime_cmd_vtysh, + "ipv6 nd home-agent-lifetime <0-65520>", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent lifetime\n" + "Home Agent lifetime in seconds (0 to track ra-lifetime)\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_version_ospf6_cmd_vtysh, + "show version ospf6", + "Show running system information\n" + "Displays ospf6d version\n" + ) + +DEFSH (0, no_ipv6_route_ifname_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295>", + "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" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, ip_lcommunity_list_name_standard_cmd_vtysh, + "ip large-community-list standard WORD (deny|permit) .AA:BB.CC", + "IP information\n" + "Add a large community list entry\n" + "Specify standard large-community-list\n" + "Large Community list name\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "large community in 'aa:bb:cc' format\n") + +DEFSH (0, no_ospf_log_adjacency_changes_detail_cmd_vtysh, + "no log-adjacency-changes detail", + "Negate a command or set its defaults\n" + "Log changes in adjacency state\n" + "Log all state changes\n") + +DEFSH (0, no_neighbor_peer_group_remote_as_cmd_vtysh, + "no neighbor WORD remote-as " "<1-4294967295>", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor tag\n" + "Specify a BGP neighbor\n" + "AS number\n") + +DEFSH (0, ipv6_nd_prefix_prefix_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n") + +DEFSH (0, 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 (0, ipv6_ospf6_retransmitinterval_cmd_vtysh, + "ipv6 ospf6 retransmit-interval <1-65535>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Time between retransmitting lost link state advertisements\n" + "<1-65535> Seconds\n" + ) + +DEFSH (0, ip_lcommunity_list_standard_cmd_vtysh, + "ip large-community-list <1-99> (deny|permit) .AA:BB:CC", + "IP information\n" + "Add a large community list entry\n" + "Large Community list number (standard)\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "large community in 'aa:bb:cc' format\n") + +DEFSH (0, show_ipv6_ospf6_interface_ifname_prefix_cmd_vtysh, + "show ipv6 ospf6 interface IFNAME prefix", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface information\n" + "Interface name(e.g. ep0)\n" + "Display connected prefixes to advertise\n" + ) + +DEFSH (0, ospf_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 (0, 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 (0, link_params_max_rsv_bw_cmd_vtysh, + "max-rsv-bw BANDWIDTH", + "Maximum bandwidth that may be reserved\n" + "Bytes/second (IEEE floating point format)\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, clear_ip_igmp_interfaces_cmd_vtysh, + "clear ip igmp interfaces", + "Reset functions\n" + "IP information\n" + "IGMP clear commands\n" + "Reset IGMP interfaces\n") + +DEFSH (0, 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 (0, show_ipv6_route_prefix_longer_vrf_cmd_vtysh, + "show ipv6 route X:X::X:X/M longer-prefixes " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_ospf_max_metric_router_lsa_shutdown_cmd_vtysh, + "no max-metric router-lsa on-shutdown", + "Negate a command or set its defaults\n" + "OSPF maximum / infinite-distance metric\n" + "Advertise own Router-LSA with infinite distance (stub router)\n" + "Advertise stub-router prior to full shutdown of OSPF\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, show_bgp_view_afi_safi_community_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\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 (0, 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 (0, debug_pim_events_cmd_vtysh, + "debug pim events", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM protocol events\n") + +DEFSH (0, ospf_passive_interface_cmd_vtysh, + "passive-interface IFNAME", + "Suppress routing updates on an interface\n" + "Interface's name\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, show_ipv6_ospf6_border_routers_cmd_vtysh, + "show ipv6 ospf6 border-routers", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display routing table for ABR and ASBR\n" + ) + +DEFSH (0, 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 (0, 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 (0, no_debug_ospf6_brouter_router_cmd_vtysh, + "no debug ospf6 border-routers router-id", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug border router\n" + "Debug specific border router\n" + ) + +DEFSH (0, show_ipv6_ospf6_database_type_id_self_originated_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) A.B.C.D self-originated", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Specify Link state ID as IPv4 address notation\n" + "Display Self-originated LSAs\n" + ) + +DEFSH (0, 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 (0, show_bgp_view_rsclient_route_cmd_vtysh, + "show bgp view WORD rsclient (A.B.C.D|X:X::X:X) X:X::X:X", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, clear_ip_bgp_as_vpnv4_soft_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, set_aspath_exclude_cmd_vtysh, + "set as-path exclude ." "<1-4294967295>", + "Set values in destination routing protocol\n" + "Transform BGP AS-path attribute\n" + "Exclude from the as-path\n" + "AS number\n") + +DEFSH (0, show_zebra_client_cmd_vtysh, + "show zebra client", + "Show running system information\n" + "Zebra information" + "Client information") + +DEFSH (0, show_dmvpn_cmd_vtysh, + "show dmvpn", + "Show running system information\n" + "DMVPN information\n") + +DEFSH (0, 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 (0, no_match_pathlimit_as_val_cmd_vtysh, + "no match pathlimit as <1-65535>", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "BGP AS-Pathlimit attribute\n" + "Match Pathlimit ASN\n") + +DEFSH (0, show_ip_extcommunity_list_cmd_vtysh, + "show ip extcommunity-list", + "Show running system information\n" + "IP information\n" + "List extended-community list\n") + +DEFSH (0, 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 (0, show_ip_pim_lan_prune_delay_cmd_vtysh, + "show ip pim lan-prune-delay", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM neighbors LAN prune delay parameters\n") + +DEFSH (0, no_ospf_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 (0, rip_redistribute_rip_cmd_vtysh, + "redistribute rip", + "Redistribute information from another routing protocol\n" + "Routing Information Protocol (RIP)\n") + +DEFSH (0, 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 (0, debug_ospf6_message_cmd_vtysh, + "debug ospf6 message (unknown|hello|dbdesc|lsreq|lsupdate|lsack|all)", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 message\n" + "Debug Unknown message\n" + "Debug Hello message\n" + "Debug Database Description message\n" + "Debug Link State Request message\n" + "Debug Link State Update message\n" + "Debug Link State Acknowledgement message\n" + "Debug All message\n" + ) + +DEFSH (0, 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 (0, vrf_netns_cmd_vtysh, + "vrf <1-65535> netns NAME", + "Enable a VRF\n" + "Specify the VRF identifier\n" + "Associate with a NETNS\n" + "The file name in " "/var/run/netns" ", or a full pathname\n") + +DEFSH (0, show_ipv6_ospf6_spf_tree_cmd_vtysh, + "show ipv6 ospf6 spf tree", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Shortest Path First calculation\n" + "Show SPF tree\n") + +DEFSH (0, match_probability_cmd_vtysh, + "match probability <0-100>", + "Match values from routing table\n" + "Match portion of routes defined by percentage value\n" + "Percentage of routes\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, ipv6_nd_adv_interval_config_option_cmd_vtysh, + "ipv6 nd adv-interval-option", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Advertisement Interval Option\n") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") + +DEFSH (0, ip_route_flags_distance_vrf_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ip_irdp_debug_messages_cmd_vtysh, + "ip irdp debug messages", + "IP information\n" + "ICMP Router discovery debug Averts. and Solicits (short)\n") + +DEFSH (0, ospf6_routemap_set_forwarding_cmd_vtysh, + "set forwarding-address X:X::X:X", + "Set value\n" + "Forwarding Address\n" + "IPv6 Address\n") + +DEFSH (0, no_area_passwd_cmd_vtysh, + "no (area-password|domain-password)", + "Negate a command or set its defaults\n" + "Configure the authentication password for an area\n" + "Set the authentication password for a routing domain\n") + +DEFSH (0, 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 (0, show_ipv6_route_vrf_cmd_vtysh, + "show ipv6 route " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_ipv6_bgp_distance2_cmd_vtysh, + "no distance bgp", + "Negate a command or set its defaults\n" + "Define an administrative distance\n" + "BGP distance\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Any prefix match. Same as \"::0/0 le 128\"\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0, 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 (0, show_ipv6_ospf6_route_match_cmd_vtysh, + "show ipv6 ospf6 route X:X::X:X/M match", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Routing Table\n" + "Specify IPv6 prefix\n" + "Display routes which match the specified route\n" + ) + +DEFSH (0|0, 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 (0, no_rip_allow_ecmp_cmd_vtysh, + "no allow-ecmp", + "Negate a command or set its defaults\n" + "Allow Equal Cost MultiPath\n") + +DEFSH (0, 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 (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, no_rip_redistribute_type_metric_routemap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)" + " metric <0-16> route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric\n" + "Metric value\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, no_router_isis_cmd_vtysh, + "no router isis WORD", + "no\n" "Enable a routing process\n" "ISO IS-IS\n" "ISO Routing area tag") + +DEFSH (0, show_bgp_ipv6_encap_rd_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv6 encap rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\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 (0, neighbor_remote_as_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "remote-as " "<1-4294967295>", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Specify a BGP neighbor\n" + "AS number\n") + +DEFSH (0, no_set_attached_bit_cmd_vtysh, + "no set-attached-bit", + "Reset attached bit\n") + +DEFSH (0, show_ipv6_ospf6_database_type_self_originated_linkstate_id_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) self-originated " + "linkstate-id A.B.C.D (detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Display Self-originated LSAs\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, no_bgp_maxpaths_cmd_vtysh, + "no maximum-paths", + "Negate a command or set its defaults\n" + "Forward packets over multiple paths\n" + "Number of paths\n") + +DEFSH (0, clear_bgp_ipv6_all_rsclient_cmd_vtysh, + "clear bgp ipv6 * rsclient", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear all peers\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, no_net_cmd_vtysh, + "no net WORD", + "Negate a command or set its defaults\n" + "A Network Entity Title for this process (OSI only)\n" + "XX.XXXX. ... .XXX.XX Network entity title (NET)\n") + +DEFSH (0, no_debug_ospf6_spf_process_cmd_vtysh, + "no debug ospf6 spf process", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Quit Debugging SPF Calculation\n" + "Quit Debugging Detailed SPF Process\n" + ) + +DEFSH (0, show_ip_route_protocol_vrf_cmd_vtysh, + "show ip route " "(kernel|connected|static|rip|ospf|isis|bgp|pim|babel|nhrp)" " " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_lcommunity_cmd_vtysh, + "show bgp large-community (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, no_ospf_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 (0, 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 (0, debug_isis_csum_cmd_vtysh, + "debug isis checksum-errors", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS LSP checksum errors\n") + +DEFSH (0, no_ipv6_route_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295>", + "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" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, no_debug_ospf6_spf_time_cmd_vtysh, + "no debug ospf6 spf time", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Quit Debugging SPF Calculation\n" + "Quit Measuring time taken by SPF Calculation\n" + ) + +DEFSH (0, show_ip_bgp_view_rsclient_cmd_vtysh, + "show ip bgp view WORD rsclient (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" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, no_ip_community_list_expanded_all_cmd_vtysh, + "no ip community-list <100-500>", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a community list entry\n" + "Community list number (expanded)\n") + +DEFSH (0, no_csnp_interval_l2_cmd_vtysh, + "no isis csnp-interval level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "Specify interval for level-2 CSNPs\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, 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 (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, show_ipv6_route_summary_prefix_cmd_vtysh, + "show ipv6 route summary prefix", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Summary of all IPv6 routes\n" + "Prefix routes\n") + +DEFSH (0, no_area_lsp_mtu_arg_cmd_vtysh, + "no lsp-mtu <128-4352>", + "Negate a command or set its defaults\n" + "Configure the maximum size of generated LSPs\n" + "Maximum size of generated LSPs\n") + +DEFSH (0, show_bgp_view_afi_safi_lcommunity_all_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) large-community", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes matching the large-communities\n") + +DEFSH (0, debug_zebra_fpm_cmd_vtysh, + "debug zebra fpm", + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug zebra FPM events\n") + +DEFSH (0|0, no_debug_isis_lsp_sched_cmd_vtysh, + "no debug isis lsp-gen", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS scheduling of LSP generation\n") + +DEFSH (0, bgp_redistribute_ipv6_cmd_vtysh, + "redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, clear_bgp_as_soft_out_cmd_vtysh, + "clear bgp " "<1-4294967295>" " soft out", + "Reset functions\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, interface_no_ip_mroute_source_cmd_vtysh, + "no ip mroute INTERFACE A.B.C.D A.B.C.D", + "Negate a command or set its defaults\n" + "IP information\n" + "Add multicast route\n" + "Outgoing interface name\n" + "Group Address\n" + "Source Address\n") + +DEFSH (0, no_ip_route_flags2_tag_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, isis_hello_multiplier_cmd_vtysh, + "isis hello-multiplier <2-100>", + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Hello multiplier value\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0, 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 (0, no_ip_lcommunity_list_expanded_all_cmd_vtysh, + "no ip large-community-list <100-500>", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Large Community list number (expanded)\n") + +DEFSH (0, 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 (0, ipv6_aggregate_address_cmd_vtysh, + "aggregate-address X:X::X:X/M", + "Configure BGP aggregate entries\n" + "Aggregate prefix\n") + +DEFSH (0, 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 (0, 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 (0, ip_rip_split_horizon_poisoned_reverse_cmd_vtysh, + "ip rip split-horizon poisoned-reverse", + "IP information\n" + "Routing Information Protocol\n" + "Perform split horizon\n" + "With poisoned-reverse\n") + +DEFSH (0, ospf_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 (0, 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 (0, no_match_ipv6_address_prefix_list_cmd_vtysh, + "no match ipv6 address prefix-list", + "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") + +DEFSH (0, ospf_refresh_timer_cmd_vtysh, + "refresh timer <10-1800>", + "Adjust refresh parameters\n" + "Set refresh timer\n" + "Timer value in seconds\n") + +DEFSH (0, link_params_enable_cmd_vtysh, + "enable", + "Activate link parameters on this interface\n") + +DEFSH (0, bgp_graceful_restart_stalepath_time_cmd_vtysh, + "bgp graceful-restart stalepath-time <1-3600>", + "BGP specific commands\n" + "Graceful restart capability parameters\n" + "Set the max time to hold onto restarting peer's stale paths\n" + "Delay value (seconds)\n") + +DEFSH (0, show_bgp_ipv4_safi_damp_flap_filter_list_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics filter-list WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, debug_rip_packet_cmd_vtysh, + "debug rip packet", + "Debugging functions (see also 'undebug')\n" + "RIP information\n" + "RIP packet\n") + +DEFSH (0, if_no_nhrp_map_cmd_vtysh, + "no " "(ip|ipv6)" " nhrp map (A.B.C.D|X:X::X:X)", + "Negate a command or set its defaults\n" + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Nexthop Server configuration\n" + "IPv4 protocol address\n" + "IPv6 protocol address\n") + +DEFSH (0, show_ipv6_route_addr_vrf_all_cmd_vtysh, + "show ipv6 route X:X::X:X " "vrf all", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "IPv6 Address\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, show_bgp_view_neighbor_routes_cmd_vtysh, + "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system 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" + "Display routes learned from neighbor\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, show_ip_ospf_database_type_self_cmd_vtysh, + "show ip ospf database (" "asbr-summary|external|network|router|summary" "|nssa-external" "|opaque-link|opaque-area|opaque-as" ") (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" "NSSA external link state\n" "Link local Opaque-LSA\n" "Link area Opaque-LSA\n" "Link AS Opaque-LSA\n" + "Self-originated link states\n") + +DEFSH (0, 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 (0, 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 (0, no_rip_passive_interface_cmd_vtysh, + "no passive-interface (IFNAME|default)", + "Negate a command or set its defaults\n" + "Suppress routing updates on an interface\n" + "Interface name\n" + "default for all interfaces\n") + +DEFSH (0, no_ospf_opaque_capable_cmd_vtysh, + "no ospf opaque-lsa", + "Negate a command or set its defaults\n" + "OSPF specific commands\n" + "Disable the Opaque-LSA capability (rfc2370)\n") + +DEFSH (0, nhrp_event_socket_cmd_vtysh, + "nhrp event socket SOCKET", + "Next Hop Resolution Protocol functions\n" + "Event Manager commands\n" + "Event Manager unix socket path\n" + "Unix path for the socket\n") + +DEFSH (0, ipv6_forwarding_cmd_vtysh, + "ipv6 forwarding", + "IPv6 information\n" + "Turn on IPv6 forwarding") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, ospf6_distance_cmd_vtysh, + "distance <1-255>", + "Negate a command or set its defaults\n" + "Define an administrative distance\n" + "OSPF6 Administrative distance\n") + +DEFSH (0, no_ip_route_flags2_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, 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 (0, 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 (0, undebug_bgp_zebra_cmd_vtysh, + "undebug bgp zebra", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP Zebra messages\n") + +DEFSH (0, show_bgp_ipv6_safi_flap_filter_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics filter-list WORD", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, csnp_interval_cmd_vtysh, + "isis csnp-interval <1-600>", + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "CSNP interval value\n") + +DEFSH (0, 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 (0, show_ip_ospf_router_info_cmd_vtysh, + "show ip ospf router-info", + "Show running system information\n" + "IP information\n" + "OSPF information\n" + "Router Information\n") + +DEFSH (0, 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 (0, show_debugging_ripng_cmd_vtysh, + "show debugging ripng", + "Show running system information\n" + "Debugging functions (see also 'undebug')\n" + "RIPng configuration\n") + +DEFSH (0, 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 (0, ospf_passive_interface_default_cmd_vtysh, + "passive-interface default", + "Suppress routing updates on an interface\n" + "Suppress routing updates on interfaces by default\n") + +DEFSH (0, 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 (0, no_match_lcommunity_cmd_vtysh, + "no match large-community (<1-99>|<100-500>|WORD)", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match BGP large community list\n" + "Large Community-list number (standard)\n" + "Large Community-list number (expanded)\n" + "Large Community-list name\n") + +DEFSH (0, ip_route_mask_tag_distance_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-4294967295> <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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, 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 (0, 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 (0, show_ipv6_ospf6_database_type_id_self_originated_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) A.B.C.D self-originated " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Display Self-originated LSAs\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 (0, 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 (0, show_bgp_view_afi_safi_prefix_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (encap|multicast|unicast|vpn) A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address Family\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, ipv6_route_flags_pref_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, show_ipv6_ospf6_database_type_id_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Specify Link state ID as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, show_bgp_ipv6_lcommunity4_cmd_vtysh, + "show bgp ipv6 large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, ospf_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 (0, 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 (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0, ip_route_mask_flags_tag_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ip_bgp_community_list_exact_cmd_vtysh, + "show ip bgp community-list (<1-500>|WORD) exact-match", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n" + "Exact match of the communities\n") + +DEFSH (0, show_bgp_neighbor_damp_cmd_vtysh, + "show bgp neighbors (A.B.C.D|X:X::X:X) dampened-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 dampened routes received from neighbor\n") + +DEFSH (0, 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 (0, 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 (0, bgp_bestpath_aspath_confed_cmd_vtysh, + "bgp bestpath as-path confed", + "BGP specific commands\n" + "Change the default bestpath selection\n" + "AS-path attribute\n" + "Compare path lengths including confederation sets & sequences in selecting a route\n") + +DEFSH (0, 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 (0, clear_bgp_all_out_cmd_vtysh, + "clear bgp * out", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n" + "Resend all outbound updates\n") + +DEFSH (0, interface_ip_pim_drprio_cmd_vtysh, + "ip pim drpriority <1-4294967295>", + "IP information\n" + "PIM information\n" + "Set the Designated Router Election Priority\n" + "Value of the new DR Priority\n") + +DEFSH (0, show_ipv6_route_protocol_vrf_cmd_vtysh, + "show ipv6 route " "(kernel|connected|static|ripng|ospf6|isis|bgp|babel|nhrp)" " " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0|0|0|0, 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 /, 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 (0, no_tunnel_source_cmd_vtysh, + "no tunnel source", + "NHRP/GRE integration\n" + "Tunnel device binding tracking\n" + "Interface name\n") + +DEFSH (0, debug_pim_packetdump_send_cmd_vtysh, + "debug pim packet-dump send", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM packet dump\n" + "Dump sent packets\n") + +DEFSH (0, 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 (0, 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 (0, bgp_rr_allow_outbound_policy_cmd_vtysh, + "bgp route-reflector allow-outbound-policy", + "BGP specific commands\n" + "Allow modifications made by out route-map\n" + "on ibgp neighbors\n") + +DEFSH (0, set_lcommunity_cmd_vtysh, + "set large-community .AA:BB:CC", + "Set values in destination routing protocol\n" + "BGP large community attribute\n" + "Large Community number in aa:bb:cc format or additive\n") + +DEFSH (0, undebug_bgp_normal_cmd_vtysh, + "undebug bgp", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n") + +DEFSH (0, 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 (0, bgp_maxpaths_cmd_vtysh, + "maximum-paths " "<" "1" "-" "1" ">", + "Forward packets over multiple paths\n" + "Number of paths\n") + +DEFSH (0, no_ospf_passive_interface_cmd_vtysh, + "no passive-interface IFNAME", + "Negate a command or set its defaults\n" + "Allow routing updates on an interface\n" + "Interface's name\n") + +DEFSH (0, no_ip_route_mask_tag_distance_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-4294967295> <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" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, no_set_lcommunity_none_cmd_vtysh, + "no set large-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 (0, no_ipv6_route_ifname_flags_pref_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, no_isis_hello_multiplier_l2_arg_cmd_vtysh, + "no isis hello-multiplier <2-100> level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Hello multiplier value\n" + "Specify hello multiplier for level-2 IIHs\n") + +DEFSH (0, show_ipv6_mbgp_lcommunity_cmd_vtysh, + "show ipv6 mbgp large-community (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "MBGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, no_ospf_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 (0, no_ipv6_nd_homeagent_preference_cmd_vtysh, + "no ipv6 nd home-agent-preference", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent preference\n") + +DEFSH (0, no_ospf_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 (0, show_ip_rip_cmd_vtysh, + "show ip rip", + "Show running system information\n" + "IP information\n" + "Show RIP routes\n") + +DEFSH (0, 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 (0, show_ip_route_summary_vrf_all_cmd_vtysh, + "show ip route summary " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Summary of all routes\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, no_ospf_mpls_te_inter_as_cmd_vtysh, + "no mpls-te inter-as", + "Negate a command or set its defaults\n" + "MPLS-TE specific commands\n" + "Disable MPLS-TE Inter-AS support\n") + +DEFSH (0, 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 (0, show_isis_neighbor_detail_cmd_vtysh, + "show isis neighbor detail", + "Show running system information\n" + "ISIS network information\n" + "ISIS neighbor adjacencies\n" + "show detailed information\n") + +DEFSH (0, debug_ospf6_route_cmd_vtysh, + "debug ospf6 route (table|intra-area|inter-area|memory)", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug route table calculation\n" + "Debug detail\n" + "Debug intra-area route calculation\n" + "Debug inter-area route calculation\n" + "Debug route memory use\n" + ) + +DEFSH (0, show_bgp_ipv4_safi_rsclient_route_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) A.B.C.D", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, show_ip_multicast_cmd_vtysh, + "show ip multicast", + "Show running system information\n" + "IP information\n" + "Multicast global information\n") + +DEFSH (0, no_csnp_interval_l1_cmd_vtysh, + "no isis csnp-interval level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "Specify interval for level-1 CSNPs\n") + +DEFSH (0, show_bgp_ipv4_community_cmd_vtysh, + "show bgp ipv4 community (AA:NN|local-AS|no-advertise|no-export)", + "Show running system information\n" + "BGP information\n" + "IP 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 (0, no_lsp_refresh_interval_l1_arg_cmd_vtysh, + "no lsp-refresh-interval level-1 <1-65235>", + "Negate a command or set its defaults\n" + "LSP refresh interval for Level 1 only\n" + "LSP refresh interval for Level 1 only in seconds\n") + +DEFSH (0, no_ip_extcommunity_list_name_standard_all_cmd_vtysh, + "no ip extcommunity-list standard WORD", + "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") + +DEFSH (0, ip_route_mask_flags_tag_distance2_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295> <1-255>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, 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 (0, no_ip_ospf_mtu_ignore_addr_cmd_vtysh, + "no ip ospf mtu-ignore A.B.C.D", + "IP Information\n" + "OSPF interface commands\n" + "Disable mtu mismatch detection\n" + "Address of interface") + +DEFSH (0, no_match_ipv6_address_cmd_vtysh, + "no match ipv6 address", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "IPv6 information\n" + "Match IPv6 address of route\n" +) + +DEFSH (0, show_ip_bgp_ipv4_lcommunity_all_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) large-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 large-communities\n") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0, 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 (0, 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 (0, no_isis_priority_arg_cmd_vtysh, + "no isis priority <0-127>", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Priority value\n") + +DEFSH (0, no_ip_route_mask_flags_distance_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, show_ip_route_prefix_longer_vrf_cmd_vtysh, + "show ip route A.B.C.D/M longer-prefixes " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Show route matching the specified Network/Mask pair only\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, ipv6_nd_prefix_noval_rev_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (off-link|) (no-autoconfig|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Do not use prefix for onlink determination\n" + "Do not use prefix for autoconfiguration\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_rsclient_cmd_vtysh, + "show bgp ipv4 rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Information about Route Server Client\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n") + +DEFSH (0, no_ospf_max_metric_router_lsa_admin_cmd_vtysh, + "no max-metric router-lsa administrative", + "Negate a command or set its defaults\n" + "OSPF maximum / infinite-distance metric\n" + "Advertise own Router-LSA with infinite distance (stub router)\n" + "Administratively applied, for an indefinite period\n") + +DEFSH (0, ip_multicast_mode_cmd_vtysh, + "ip multicast rpf-lookup-mode (urib-only|mrib-only|mrib-then-urib|lower-distance|longer-prefix)", + "IP information\n" + "Multicast options\n" + "RPF lookup behavior\n" + "Lookup in unicast RIB only\n" + "Lookup in multicast RIB only\n" + "Try multicast RIB first, fall back to unicast RIB\n" + "Lookup both, use entry with lower distance\n" + "Lookup both, use entry with longer prefix\n") + +DEFSH (0, 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 (0, no_ip_ospf_dead_interval_addr_cmd_vtysh, + "no ip ospf dead-interval <1-65535> 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" + "Seconds\n" + "Address of interface") + +DEFSH (0, show_bgp_ipv4_safi_flap_address_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics A.B.C.D", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, show_bgp_ipv6_safi_route_pathtype_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) X:X::X:X (bestpath|multipath)", + "Show running system 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" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, isis_mpls_te_inter_as_cmd_vtysh, + "mpls-te inter-as (level-1|level-1-2|level-2-only)", + "MPLS-TE specific commands\n" + "Configure MPLS-TE Inter-AS support\n" + "AREA native mode self originate INTER-AS LSP with L1 only flooding scope)\n" + "AREA native mode self originate INTER-AS LSP with L1 and L2 flooding scope)\n" + "AS native mode self originate INTER-AS LSP with L2 only flooding scope\n") + +DEFSH (0, show_ip_ospf_mpls_te_link_cmd_vtysh, + "show ip ospf mpls-te interface [INTERFACE]", + "Show running system information\n" + "IP information\n" + "OSPF information\n" + "MPLS-TE information\n" + "Interface information\n" + "Interface name\n") + +DEFSH (0, no_max_lsp_lifetime_l1_cmd_vtysh, + "no max-lsp-lifetime level-1", + "Negate a command or set its defaults\n" + "LSP lifetime for Level 1 only in seconds\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, show_bgp_ipv6_safi_neighbor_damp_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) dampened-routes", + "Show running system information\n" + "BGP information\n" + "Address Family Modifier\n" + "Address Family Modifier\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 dampened routes received from neighbor\n") + +DEFSH (0, 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 (0, ipv6_route_ifname_flags_pref_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0, no_ospf_distance_ospf_cmd_vtysh, + "no distance ospf {intra-area|inter-area|external}", + "Negate a command or set its defaults\n" + "Define an administrative distance\n" + "OSPF Administrative distance\n" + "OSPF Distance\n" + "Intra-area routes\n" + "Inter-area routes\n" + "External routes\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0, area_filter_list_cmd_vtysh, + "area A.B.C.D filter-list prefix WORD (in|out)", + "OSPFv6 area parameters\n" + "OSPFv6 area ID in IP address format\n" + "Filter networks between OSPFv6 areas\n" + "Filter prefixes between OSPFv6 areas\n" + "Name of an IPv6 prefix-list\n" + "Filter networks sent to this area\n" + "Filter networks sent from this area\n") + +DEFSH (0, no_ip_forwarding_cmd_vtysh, + "no ip forwarding", + "Negate a command or set its defaults\n" + "IP information\n" + "Turn off IP forwarding") + +DEFSH (0, test_pim_receive_join_cmd_vtysh, + "test pim receive join INTERFACE <0-65535> A.B.C.D A.B.C.D A.B.C.D A.B.C.D", + "Test\n" + "Test PIM protocol\n" + "Test PIM message reception\n" + "Test PIM join reception from neighbor\n" + "Interface\n" + "Neighbor holdtime\n" + "Upstream neighbor unicast destination address\n" + "Downstream neighbor unicast source address\n" + "Multicast group address\n" + "Unicast source address\n") + +DEFSH (0, debug_ospf_te_cmd_vtysh, + "debug ospf te", + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF-TE information\n") + +DEFSH (0, show_bgp_view_ipv4_safi_rsclient_prefix_cmd_vtysh, + "show bgp view WORD ipv4 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, 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 (0, no_bgp_redistribute_ipv6_rmap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, no_debug_pim_packetdump_recv_cmd_vtysh, + "no debug pim packet-dump receive", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM packet dump\n" + "Dump received packets\n") + +DEFSH (0, 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 (0, show_ip_ospf_neighbor_int_cmd_vtysh, + "show ip ospf neighbor IFNAME", + "Show running system information\n" + "IP information\n" + "OSPF information\n" + "Neighbor list\n" + "Interface name\n") + +DEFSH (0, 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 (0, undebug_bgp_allow_martians_cmd_vtysh, + "undebug bgp allow-martians", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP allow martian next hops\n") + +DEFSH (0, no_lsp_gen_interval_l2_cmd_vtysh, + "no lsp-gen-interval level-2", + "Negate a command or set its defaults\n" + "Minimum interval between regenerating same LSP\n" + "Set interval for level 2 only\n") + +DEFSH (0, ipv6_bgp_network_cmd_vtysh, + "network X:X::X:X/M", + "Specify a network to announce via BGP\n" + "IPv6 prefix /\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0|0, no_neighbor_maximum_prefix_warning_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 (0, interface_no_ip_pim_ssm_cmd_vtysh, + "no ip pim ssm", + "Negate a command or set its defaults\n" + "IP information\n" + "PIM information\n" + "Enable PIM SSM operation\n") + +DEFSH (0, debug_zebra_packet_direct_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") + +DEFSH (0, ip_route_mask_flags2_tag_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, match_peer_local_cmd_vtysh, + "match peer local", + "Match values from routing table\n" + "Match peer address\n" + "Static or Redistributed routes\n") + +DEFSH (0, ospf6_distance_ospf6_external_intra_inter_cmd_vtysh, + "distance ospf6 external <1-255> intra-area <1-255> inter-area <1-255>", + "Define an administrative distance\n" + "OSPF6 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 (0, no_ipv6_route_flags_pref_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, debug_ospf_nsm_cmd_vtysh, + "debug ospf nsm", + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF Neighbor State Machine\n") + +DEFSH (0, no_bgp_bestpath_aspath_multipath_relax_cmd_vtysh, + "no bgp bestpath as-path multipath-relax", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Change the default bestpath selection\n" + "AS-path attribute\n" + "Allow load sharing across routes that have different AS paths (but same length)\n") + +DEFSH (0, no_match_ip_route_source_cmd_vtysh, + "no match ip route-source", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "IP information\n" + "Match advertising source address of route\n") + +DEFSH (0, show_bgp_ipv4_safi_community4_cmd_vtysh, + "show 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" + "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 (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") + +DEFSH (0, ip_ospf_area_cmd_vtysh, + "ip ospf area (A.B.C.D|<0-4294967295>) [A.B.C.D]", + "IP Information\n" + "OSPF interface commands\n" + "Enable OSPF on this interface\n" + "OSPF area ID in IP address format\n" + "OSPF area ID as a decimal value\n" + "Address of interface\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_safi_community3_cmd_vtysh, + "show 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" + "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 (0, ripng_allow_ecmp_cmd_vtysh, + "allow-ecmp", + "Allow Equal Cost MultiPath\n") + +DEFSH (0, 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 (0, no_ip_multicast_mode_cmd_vtysh, + "no ip multicast rpf-lookup-mode (urib-only|mrib-only|mrib-then-urib|lower-distance|longer-prefix)", + "Negate a command or set its defaults\n" + "IP information\n" + "Multicast options\n" + "RPF lookup behavior\n" + "Lookup in unicast RIB only\n" + "Lookup in multicast RIB only\n" + "Try multicast RIB first, fall back to unicast RIB\n" + "Lookup both, use entry with lower distance\n" + "Lookup both, use entry with longer prefix\n") + +DEFSH (0, debug_ospf6_brouter_cmd_vtysh, + "debug ospf6 border-routers", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug border router\n" + ) + +DEFSH (0, show_bgp_ipv4_route_map_cmd_vtysh, + "show bgp ipv4 route-map WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the route-map\n" + "A route-map to match on\n") + +DEFSH (0, 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 (0, show_ip_bgp_ipv4_dampening_flap_stats_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) dampening flap-statistics", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n") + +DEFSH (0|0, 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 (0, no_ipv6_nd_homeagent_lifetime_cmd_vtysh, + "no ipv6 nd home-agent-lifetime", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent lifetime\n") + +DEFSH (0, no_neighbor_disable_connected_check_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "disable-connected-check", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "one-hop away EBGP peer using loopback address\n") + +DEFSH (0, no_isis_hello_interval_l1_cmd_vtysh, + "no isis hello-interval level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set Hello interval\n" + "Specify hello-interval for level-1 IIHs\n") + +DEFSH (0, net_cmd_vtysh, + "net WORD", + "A Network Entity Title for this process (OSI only)\n" + "XX.XXXX. ... .XXX.XX Network entity title (NET)\n") + +DEFSH (0, 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" + "View name\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, no_ipv6_nd_ra_interval_cmd_vtysh, + "no ipv6 nd ra-interval", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router Advertisement interval\n") + +DEFSH (0, 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 (0, no_ospf_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 (0, neighbor_nexthop_local_unchanged_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "nexthop-local unchanged", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Configure treatment of outgoing link-local nexthop attribute\n" + "Leave link-local nexthop unchanged for this peer\n") + +DEFSH (0, 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 (0, show_ipv6_route_protocol_cmd_vtysh, + "show ipv6 route " "(kernel|connected|static|ripng|ospf6|isis|bgp|babel|nhrp)", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, 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 (0, show_ip_bgp_ipv4_lcommunity_list_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) large-community-list (<1-500>|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 large-community-list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0, 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 (0, debug_isis_adj_cmd_vtysh, + "debug isis adj-packets", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS Adjacency related packets\n") + +DEFSH (0, no_ip_extcommunity_list_standard_all_cmd_vtysh, + "no ip extcommunity-list <1-99>", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a extended community list entry\n" + "Extended Community list number (standard)\n") + +DEFSH (0, show_bgp_prefix_cmd_vtysh, + "show bgp X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "IPv6 prefix /\n") + +DEFSH (0, no_isis_mpls_te_on_cmd_vtysh, + "no mpls-te", + "Negate a command or set its defaults\n" + "Disable the MPLS-TE functionality\n") + +DEFSH (0, show_bgp_ipv6_safi_prefix_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, ospf_timers_min_ls_interval_cmd_vtysh, + "timers throttle lsa all <0-5000>", + "Adjust routing timers\n" + "Throttling adaptive timer\n" + "LSA delay between transmissions\n" + "Negate a command or set its defaults\n" + "Delay (msec) between sending LSAs\n") + +DEFSH (0, no_debug_isis_spfstats_cmd_vtysh, + "no debug isis spf-statistics", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS SPF Timing and Statistic Data\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Specify Route Distinguisher\n" + "VPN Route Distinguisher\n" + "BGP tag\n" + "tag value\n") + +DEFSH (0, 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 (0, no_debug_isis_adj_cmd_vtysh, + "no debug isis adj-packets", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS Adjacency related packets\n") + +DEFSH (0, no_ip_lcommunity_list_name_standard_cmd_vtysh, + "no ip large-community-list standard WORD (deny|permit) .AA:.AA:NN", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Specify standard large-community-list\n" + "Large Community list name\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "large community in 'aa:bb:cc' format\n") + +DEFSH (0, no_ospf_distribute_list_out_cmd_vtysh, + "no distribute-list WORD out " "(kernel|connected|static|rip|isis|bgp|pim|babel|nhrp)", + "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 (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0|0, 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 (0, 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 (0, 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 (0, clear_ip_bgp_peer_encap_soft_cmd_vtysh, + "clear ip bgp A.B.C.D encap 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 (0, clear_ip_bgp_all_out_cmd_vtysh, + "clear ip bgp * out", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear all peers\n" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, 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 (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, no_isis_passwd_arg_cmd_vtysh, + "no isis password (md5|clear) WORD", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Configure the authentication password for a circuit\n" + "HMAC-MD5 authentication\n" + "Cleartext password\n" + "Circuit password\n") + +DEFSH (0, ip_lcommunity_list_name_expanded_cmd_vtysh, + "ip large-community-list expanded WORD (deny|permit) .LINE", + "IP information\n" + "Add a large community list entry\n" + "Specify expanded large-community-list\n" + "Large Community list name\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "An ordered list as a regular-expression\n") + +DEFSH (0, 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 (0, debug_isis_lsp_gen_cmd_vtysh, + "debug isis lsp-gen", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS generation of own LSPs\n") + +DEFSH (0, isis_mpls_te_on_cmd_vtysh, + "mpls-te on", + "MPLS-TE specific commands\n" + "Enable MPLS-TE functionality\n") + +DEFSH (0, interface_ip_pim_hello_hold_cmd_vtysh, + "ip pim hello <1-180> <1-180>", + "IP information\n" + "PIM information\n" + "Hello Interval\n" + "Time in seconds for Hello Interval\n" + "Time in seconds for Hold Interval\n") + +DEFSH (0, show_bgp_ipv4_safi_prefix_longer_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) A.B.C.D/M longer-prefixes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, 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 (0, 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 /, e.g., 3ffe::/16\n") + +DEFSH (0, 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 (0, no_synchronization_cmd_vtysh, + "no synchronization", + "Negate a command or set its defaults\n" + "Perform IGP synchronization\n") + +DEFSH (0, area_import_list_cmd_vtysh, + "area A.B.C.D import-list NAME", + "OSPFv6 area parameters\n" + "OSPFv6 area ID in IP address format\n" + "Set the filter for networks from other areas announced to the specified one\n" + "Name of the acess-list\n") + +DEFSH (0, show_bgp_ipv4_safi_flap_route_map_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics route-map WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display flap statistics of routes\n" + "Display routes matching the route-map\n" + "A route-map to match on\n") + +DEFSH (0, show_ipv6_route_prefix_vrf_cmd_vtysh, + "show ipv6 route X:X::X:X/M " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "IPv6 prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0|0|0|0|0, no_match_ip_address_val_cmd_vtysh, + "no match ip address (<1-199>|<1300-2699>|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 number\n" + "IP access-list number (expanded range)\n" + "IP Access-list name\n") + +DEFSH (0, no_set_community_delete_val_cmd_vtysh, + "no set comm-list (<1-99>|<100-500>|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" + "Community-list number (expanded)\n" + "Community-list name\n" + "Delete matching communities\n") + +DEFSH (0, neighbor_ttl_security_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "ttl-security hops <1-254>", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Specify the maximum number of hops to the BGP peer\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "First matched prefix\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv6_encap_rd_neighbor_routes_cmd_vtysh, + "show bgp ipv6 encap rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\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 (0, show_bgp_ipv6_safi_community3_exact_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) 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" + "Address family modifier\n" + "Address family modifier\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 (0, clear_bgp_all_in_cmd_vtysh, + "clear bgp * in", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_ip_mroute_dist_vrf_cmd_vtysh, + "no ip mroute A.B.C.D/M (A.B.C.D|INTERFACE) <1-255> " "vrf <0-65535>", + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n" + "Distance\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_ip_route_flags2_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, no_ospf_neighbor_cmd_vtysh, + "no neighbor A.B.C.D", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor IP address\n") + +DEFSH (0, clear_bgp_all_soft_cmd_vtysh, + "clear bgp * soft", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n" + "Soft reconfig inbound and outbound updates\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, show_ipv6_ospf6_redistribute_cmd_vtysh, + "show ipv6 ospf6 redistribute", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "redistributing External information\n" + ) + +DEFSH (0, link_params_metric_cmd_vtysh, + "metric <0-4294967295>", + "Link metric for MPLS-TE purpose\n" + "Metric value in decimal\n") + +DEFSH (0, clear_ip_bgp_as_ipv4_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_bgp_ipv6_community_list_cmd_vtysh, + "show bgp ipv6 community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n") + +DEFSH (0, interface_no_ip_igmp_query_max_response_time_cmd_vtysh, + "no" " " "ip igmp query-max-response-time", + "Negate a command or set its defaults\n" + "IP information\n" + "Enable IGMP operation\n" + "IGMP max query response value (seconds)\n") + +DEFSH (0, show_ip_route_tag_cmd_vtysh, + "show ip route tag <1-4294967295>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Show only routes with tag\n" + "Tag value\n") + +DEFSH (0, no_bgp_maxpaths_ibgp_cmd_vtysh, + "no maximum-paths ibgp", + "Negate a command or set its defaults\n" + "Forward packets over multiple paths\n" + "iBGP-multipath\n" + "Number of paths\n") + +DEFSH (0, rip_route_cmd_vtysh, + "route A.B.C.D/M", + "RIP static route configuration\n" + "IP prefix /\n") + +DEFSH (0, 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 (0|0|0|0|0|0, rmap_continue_index_cmd_vtysh, + "continue <1-65536>", + "Exit policy on matches\n" + "Goto Clause number\n") + +DEFSH (0, show_ip_ospf_router_info_pce_cmd_vtysh, + "show ip ospf router-info pce", + "Show running system information\n" + "IP information\n" + "OSPF information\n" + "Router Information\n" + "PCE information\n") + +DEFSH (0, no_set_lcommunity_delete_val_cmd_vtysh, + "no set large-comm-list (<1-99>|<100-500>|WORD) delete", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "set BGP large community list (for deletion)\n" + "Large Community-list number (standard)\n" + "Large Communitly-list number (expanded)\n" + "Large Community-list name\n" + "Delete matching large communities\n") + +DEFSH (0, no_ipv6_route_pref_tag_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, clear_ip_bgp_as_encap_soft_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " encap 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 (0, undebug_pim_events_cmd_vtysh, + "undebug pim events", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n" + "PIM protocol events\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_safi_lcommunity_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) large-community (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, no_match_ip_route_source_prefix_list_cmd_vtysh, + "no match ip route-source prefix-list", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "IP information\n" + "Match advertising source address of route\n" + "Match entries of prefix-lists\n") + +DEFSH (0, ip_ospf_cost_u32_inet4_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 (0, pce_address_cmd_vtysh, + "pce address A.B.C.D", + "PCE Router Information specific commands\n" + "Stable IP address of the PCE\n" + "PCE address in IPv4 address format\n") + +DEFSH (0, 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 (0, show_bgp_view_afi_safi_lcommunity4_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, debug_bgp_update_cmd_vtysh, + "debug bgp updates", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP updates\n") + +DEFSH (0, show_ipv6_ospf6_database_type_id_router_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) A.B.C.D A.B.C.D " + "(dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Specify Link state ID as IPv4 address notation\n" + "Specify Advertising Router as IPv4 address notation\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, no_set_aggregator_as_val_cmd_vtysh, + "no set aggregator as " "<1-4294967295>" " 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 (0, ip_route_mask_tag_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-4294967295>", + "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" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, ipv6_route_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_debug_ospf6_asbr_cmd_vtysh, + "no debug ospf6 asbr", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 ASBR function\n" + ) + +DEFSH (0, show_bgp_view_ipv6_prefix_cmd_vtysh, + "show bgp view WORD ipv6 X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "IPv6 prefix /\n") + +DEFSH (0, debug_bgp_normal_cmd_vtysh, + "debug bgp", + "Debugging functions (see also 'undebug')\n" + "BGP information\n") + +DEFSH (0, 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 (0, 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 (0, no_neighbor_local_as_val_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as " "<1-4294967295>", + "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 (0, no_debug_pim_cmd_vtysh, + "no debug pim", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n") + +DEFSH (0, 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 (0, ipv6_nd_prefix_noval_offlink_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (off-link|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Do not use prefix for onlink determination\n") + +DEFSH (0, show_ipv6_forwarding_cmd_vtysh, + "show ipv6 forwarding", + "Show running system information\n" + "IPv6 information\n" + "Forwarding status\n") + +DEFSH (0, ipv6_address_cmd_vtysh, + "ipv6 address X:X::X:X/M", + "Interface IPv6 config commands\n" + "Set the IP address of an interface\n" + "IPv6 address (e.g. 3ffe:506::1/48)\n") + +DEFSH (0, clear_ip_bgp_all_cmd_vtysh, + "clear ip bgp *", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear all peers\n") + +DEFSH (0, max_lsp_lifetime_l2_cmd_vtysh, + "max-lsp-lifetime level-2 <350-65535>", + "Maximum LSP lifetime for Level 2 only\n" + "LSP lifetime for Level 2 only in seconds\n") + +DEFSH (0, no_isis_hello_multiplier_l2_cmd_vtysh, + "no isis hello-multiplier level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Specify hello multiplier for level-2 IIHs\n") + +DEFSH (0, clear_bgp_ipv6_as_soft_out_cmd_vtysh, + "clear bgp ipv6 " "<1-4294967295>" " soft out", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, set_metric_rtt_cmd_vtysh, + "set metric (rtt|+rtt|-rtt)", + "Set values in destination routing protocol\n" + "Metric value for destination routing protocol\n" + "Assign round trip time\n" + "Add round trip time\n" + "Subtract round trip time\n") + +DEFSH (0, no_isis_hello_padding_cmd_vtysh, + "no isis hello padding", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Add padding to IS-IS hello packets\n" + "Pad hello packets\n" + "\n") + +DEFSH (0, debug_pim_packets_cmd_vtysh, + "debug pim packets", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM protocol packets\n") + +DEFSH (0, no_ip_lcommunity_list_name_standard_all_cmd_vtysh, + "no ip large-community-list standard WORD", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Specify standard large-community-list\n" + "Large Community list name\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, 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 (0, ipv6_bgp_distance_source_access_list_cmd_vtysh, + "distance <1-255> X:X::X:X/M WORD", + "Define an administrative distance\n" + "Administrative distance\n" + "IP source prefix\n" + "Access list name\n") + +DEFSH (0, ospf_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 (0, show_bgp_ipv4_safi_flap_filter_list_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics filter-list WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, 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 (0, no_is_type_cmd_vtysh, + "no is-type (level-1|level-1-2|level-2-only)", + "Negate a command or set its defaults\n" + "IS Level for this routing process (OSI only)\n" + "Act as a station router only\n" + "Act as both a station router and an area router\n" + "Act as an area router only\n") + +DEFSH (0, show_bgp_ipv6_safi_neighbor_received_routes_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) received-routes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\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 (0, neighbor_maximum_prefix_restart_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> restart <1-65535>", + "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" + "Restart bgp connection after limit is exceeded\n" + "Restart interval in minutes") + +DEFSH (0, service_advanced_vty_cmd_vtysh, + "service advanced-vty", + "Set up miscellaneous service\n" + "Enable advanced mode vty interface\n") + +DEFSH (0|0|0|0, 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 (0, clear_ip_bgp_as_vpnv4_soft_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_ip_rpf_vrf_all_cmd_vtysh, + "show ip rpf " "vrf all", + "Show running system information\n" + "IP information\n" + "Display RPF information for multicast source\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, ripng_default_information_originate_cmd_vtysh, + "default-information originate", + "Default route information\n" + "Distribute default route\n") + +DEFSH (0, ospf6_distance_source_access_list_cmd_vtysh, + "distance <1-255> X:X::X:X/M WORD", + "Administrative distance\n" + "Distance value\n" + "IP source prefix\n" + "Access list name\n") + +DEFSH (0, no_ip_route_mask_flags_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, show_ipv6_ospf6_interface_prefix_cmd_vtysh, + "show ipv6 ospf6 interface prefix", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface information\n" + "Display connected prefixes to advertise\n" + ) + +DEFSH (0|0|0|0, 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 (0, pce_cap_flag_cmd_vtysh, + "pce flag BITPATTERN", + "PCE Router Information specific commands\n" + "Capabilities of the PCE for path computation\n" + "32-bit Hexadecimal value\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, no_ospf_cost_u32_inet4_cmd_vtysh, + "no ospf cost <1-65535> A.B.C.D", + "Negate a command or set its defaults\n" + "OSPF interface commands\n" + "Interface cost\n" + "Cost\n" + "Address of interface") + +DEFSH (0, 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 (0, show_ip_bgp_rsclient_summary_cmd_vtysh, + "show ip bgp rsclient summary", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_ip_extcommunity_list_expanded_all_cmd_vtysh, + "no ip extcommunity-list <100-500>", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a extended community list entry\n" + "Extended Community list number (expanded)\n") + +DEFSH (0, log_adj_changes_cmd_vtysh, + "log-adjacency-changes", + "Log changes in adjacency state\n") + +DEFSH (0, show_bgp_ipv6_safi_prefix_longer_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) X:X::X:X/M longer-prefixes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, 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 (0, show_ip_route_supernets_vrf_cmd_vtysh, + "show ip route supernets-only " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Show supernet entries only\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ipv6_ospf6_linkstate_cmd_vtysh, + "show ipv6 ospf6 linkstate", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display linkstate routing table\n" + ) + +DEFSH (0, no_set_aspath_exclude_cmd_vtysh, + "no set as-path exclude", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "Transform BGP AS_PATH attribute\n" + "Exclude from the as-path\n") + +DEFSH (0, debug_bgp_fsm_cmd_vtysh, + "debug bgp fsm", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP Finite State Machine\n") + +DEFSH (0, no_ripng_offset_list_cmd_vtysh, + "no offset-list WORD (in|out) <0-16>", + "Negate a command or set its defaults\n" + "Modify RIPng metric\n" + "Access-list name\n" + "For incoming updates\n" + "For outgoing updates\n" + "Metric value\n") + +DEFSH (0, show_bgp_ipv6_safi_damp_flap_prefix_longer_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening flap-statistics X:X::X:X/M longer-prefixes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, lsp_refresh_interval_l2_cmd_vtysh, + "lsp-refresh-interval level-2 <1-65235>", + "LSP refresh interval for Level 2 only\n" + "LSP refresh interval for Level 2 only in seconds\n") + +DEFSH (0, ip_rip_split_horizon_cmd_vtysh, + "ip rip split-horizon", + "IP information\n" + "Routing Information Protocol\n" + "Perform split horizon\n") + +DEFSH (0, if_no_nhrp_flags_cmd_vtysh, + "no " "(ip|ipv6)" " nhrp (shortcut|redirect)", + "Negate a command or set its defaults\n" + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Allow shortcut establishment\n" + "Send redirect notifications\n") + +DEFSH (0, ospf6_distance_ospf6_external_inter_intra_cmd_vtysh, + "distance ospf6 external <1-255> inter-area <1-255> intra-area <1-255>", + "Define an administrative distance\n" + "OSPF6 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 (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, redistribute_ospf6_cmd_vtysh, + "redistribute ospf6", + "Redistribute control\n" + "OSPF6 route\n") + +DEFSH (0, ipv6_nd_prefix_val_offlink_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite) (off-link|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n" + "Do not use prefix for onlink determination\n") + +DEFSH (0, show_isis_mpls_te_interface_cmd_vtysh, + "show isis mpls-te interface [INTERFACE]", + "Show running system information\n" + "IS-IS information\n" + "MPLS-TE specific commands\n" + "Interface information\n" + "Interface name\n") + +DEFSH (0, ospf_distance_cmd_vtysh, + "distance <1-255>", + "Define an administrative distance\n" + "OSPF Administrative distance\n") + +DEFSH (0|0|0|0|0|0, 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 (0, show_ip_bgp_dampening_params_cmd_vtysh, + "show ip bgp dampening parameters", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display detail of configured dampening parameters\n") + +DEFSH (0, show_ip_mroute_count_cmd_vtysh, + "show ip mroute count", + "Show running system information\n" + "IP information\n" + "IP multicast routing table\n" + "Route and packet count data\n") + +DEFSH (0, no_ripng_redistribute_type_metric_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)" " metric <0-16>", + "Negate a command or set its defaults\n" + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric\n" + "Metric value\n") + +DEFSH (0, no_ospf6_redistribute_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ripng|isis|bgp|babel|nhrp)", + "Negate a command or set its defaults\n" + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + ) + +DEFSH (0|0|0|0, 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 (0, show_ip_nht_cmd_vtysh, + "show ip nht", + "Show running system information\n" + "IP information\n" + "IP nexthop tracking table\n") + +DEFSH (0, 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 (0, no_rip_redistribute_type_metric_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)" " metric <0-16>", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric\n" + "Metric value\n") + +DEFSH (0, 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 (0, nhrp_nflog_group_cmd_vtysh, + "nhrp nflog-group <1-65535>", + "Next Hop Resolution Protocol functions\n" + "Specify NFLOG group number\n" + "NFLOG group number\n") + +DEFSH (0, ip_route_distance_vrf_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, area_range_advertise_cmd_vtysh, + "area A.B.C.D range X:X::X:X/M (advertise|not-advertise)", + "OSPF area parameters\n" + "Area ID (as an IPv4 notation)\n" + "Configured address range\n" + "Specify IPv6 prefix\n" + ) + +DEFSH (0, 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 (0, show_ip_community_list_cmd_vtysh, + "show ip community-list", + "Show running system information\n" + "IP information\n" + "List community-list\n") + +DEFSH (0, show_bgp_ipv4_lcommunity2_cmd_vtysh, + "show bgp ipv4 large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, no_ip_ospf_cost_inet4_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 (0, 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 (0, 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 (0, 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 (0, bgp_redistribute_ipv6_rmap_metric_cmd_vtysh, + "redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " route-map WORD metric <0-4294967295>", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0, show_ip_bgp_instance_rsclient_summary_cmd_vtysh, + "show ip bgp view WORD rsclient summary", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, no_ip_route_flags_tag_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0|0|0|0|0|0, 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 (0, 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 (0, show_bgp_ipv4_safi_community_list_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) community-list (<1-500>|WORD)", + "Show running system 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 number\n" + "community-list name\n") + +DEFSH (0, show_ip_bgp_vpnv4_neighbor_prefix_counts_cmd_vtysh, + "show ip bgp vpnv4 all neighbors (A.B.C.D|X:X::X:X) prefix-counts", + "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 detailed prefix count information\n") + +DEFSH (0, link_params_res_bw_cmd_vtysh, + "res-bw BANDWIDTH", + "Unidirectional Residual Bandwidth\n" + "Bytes/second (IEEE floating point format)\n") + +DEFSH (0, no_ipv6_route_flags_pref_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n") + +DEFSH (0, 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 occurrences of AS number\n") + +DEFSH (0, show_bgp_ipv6_safi_community2_exact_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) 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" + "Address family modifier\n" + "Address family modifier\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 (0, 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 (0, 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") + +DEFSH (0, 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 (0, debug_bgp_zebra_cmd_vtysh, + "debug bgp zebra", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP Zebra messages\n") + +DEFSH (0, test_pim_receive_prune_cmd_vtysh, + "test pim receive prune INTERFACE <0-65535> A.B.C.D A.B.C.D A.B.C.D A.B.C.D", + "Test\n" + "Test PIM protocol\n" + "Test PIM message reception\n" + "Test PIM prune reception from neighbor\n" + "Interface\n" + "Neighbor holdtime\n" + "Upstream neighbor unicast destination address\n" + "Downstream neighbor unicast source address\n" + "Multicast group address\n" + "Unicast source address\n") + +DEFSH (0, ospf_log_adjacency_changes_detail_cmd_vtysh, + "log-adjacency-changes detail", + "Log changes in adjacency state\n" + "Log all state changes\n") + +DEFSH (0, clear_ip_bgp_peer_encap_soft_in_cmd_vtysh, + "clear ip bgp A.B.C.D encap 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 (0, no_isis_hello_interval_cmd_vtysh, + "no isis hello-interval", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set Hello interval\n") + +DEFSH (0, match_ip_route_source_cmd_vtysh, + "match ip route-source (<1-199>|<1300-2699>|WORD)", + "Match values from routing table\n" + "IP information\n" + "Match advertising source address of route\n" + "IP access-list number\n" + "IP access-list number (expanded range)\n" + "IP standard access-list name\n") + +DEFSH (0, debug_isis_spfstats_cmd_vtysh, + "debug isis spf-statistics ", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS SPF Timing and Statistic Data\n") + +DEFSH (0, show_ip_ospf_database_type_id_adv_router_cmd_vtysh, + "show ip ospf database (" "asbr-summary|external|network|router|summary" "|nssa-external" "|opaque-link|opaque-area|opaque-as" ") 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" "NSSA external link state\n" "Link local Opaque-LSA\n" "Link area Opaque-LSA\n" "Link AS Opaque-LSA\n" + "Link State ID (as an IP address)\n" + "Advertising Router link states\n" + "Advertising Router (as an IP address)\n") + +DEFSH (0, show_bgp_ipv4_lcommunity4_cmd_vtysh, + "show bgp ipv4 large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, debug_ospf6_brouter_area_cmd_vtysh, + "debug ospf6 border-routers area-id A.B.C.D", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug border router\n" + "Debug border routers in specific Area\n" + "Specify Area-ID\n" + ) + +DEFSH (0, undebug_bgp_events_cmd_vtysh, + "undebug bgp events", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP events\n") + +DEFSH (0, 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 (0, show_ip_rpf_addr_vrf_all_cmd_vtysh, + "show ip rpf A.B.C.D " "vrf all", + "Show running system information\n" + "IP information\n" + "Display RPF information for multicast source\n" + "IP multicast source address (e.g. 10.0.0.0)\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, ip_route_flags_distance_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_safi_flap_prefix_longer_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics A.B.C.D/M longer-prefixes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, show_zebra_cmd_vtysh, + "show zebra", + "Show running system information\n" + "Zebra information\n") + +DEFSH (0, no_isis_hello_multiplier_l1_arg_cmd_vtysh, + "no isis hello-multiplier <2-100> level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Hello multiplier value\n" + "Specify hello multiplier for level-1 IIHs\n") + +DEFSH (0, debug_rip_zebra_cmd_vtysh, + "debug rip zebra", + "Debugging functions (see also 'undebug')\n" + "RIP information\n" + "RIP and ZEBRA communication\n") + +DEFSH (0, show_bgp_view_ipv4_safi_rsclient_route_cmd_vtysh, + "show bgp view WORD ipv4 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) A.B.C.D", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, 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 (0, show_bgp_view_afi_safi_community4_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (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" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\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 (0, fpm_remote_ip_cmd_vtysh, + "fpm connection ip A.B.C.D port <1-65535>", + "fpm connection remote ip and port\n" + "Remote fpm server ip A.B.C.D\n" + "Enter ip ") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0, no_ip_route_flags_tag_distance_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, no_ipv6_bgp_distance_source_access_list_cmd_vtysh, + "no distance <1-255> X:X::X:X/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 (0, isis_default_originate_cmd_vtysh, + "default-information originate (ipv4|ipv6) (level-1|level-2) " + "{always|metric <0-16777215>|route-map WORD}", + "Control distribution of default information\n" + "Distribute a default route\n" + "Distribute default route for IPv4\n" + "Distribute default route for IPv6\n" + "Distribute default route into level-1\n" + "Distribute default route into level-2\n" + "Always advertise default route\n" + "Metric for default route\n" + "ISIS default metric\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, 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 (0, no_debug_pim_events_cmd_vtysh, + "no debug pim events", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM protocol events\n") + +DEFSH (0|0|0|0, clear_ip_prefix_list_cmd_vtysh, + "clear ip prefix-list", + "Reset functions\n" + "IP information\n" + "Build a prefix list\n") + +DEFSH (0, 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 (0, interface_no_ip_pim_drprio_cmd_vtysh, + "no ip pim drpriority {<1-4294967295>}", + "IP information\n" + "PIM information\n" + "Revert the Designated Router Priority to default\n" + "Old Value of the Priority\n") + +DEFSH (0, debug_igmp_events_cmd_vtysh, + "debug igmp events", + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n" + "IGMP protocol events\n") + +DEFSH (0, bgp_log_neighbor_changes_cmd_vtysh, + "bgp log-neighbor-changes", + "BGP specific commands\n" + "Log neighbor up/down and reset reason\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Lookup longer prefix\n") + +DEFSH (0, 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 (0, no_debug_igmp_trace_cmd_vtysh, + "no debug igmp trace", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n" + "IGMP internal daemon activity\n") + +DEFSH (0, show_ip_route_protocol_vrf_all_cmd_vtysh, + "show ip route " "(kernel|connected|static|rip|ospf|isis|bgp|pim|babel|nhrp)" " " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, 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 (0, no_ip_route_mask_flags_tag_distance_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ipv6_ospf6_linkstate_detail_cmd_vtysh, + "show ipv6 ospf6 linkstate detail", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display linkstate routing table\n" + ) + +DEFSH (0, no_ip_route_mask_tag_distance_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, ospf_mpls_te_on_cmd_vtysh, + "mpls-te on", + "MPLS-TE specific commands\n" + "Enable the MPLS-TE functionality\n") + +DEFSH (0, bgp_timers_cmd_vtysh, + "timers bgp <0-65535> <0-65535>", + "Adjust routing timers\n" + "BGP timers\n" + "Keepalive interval\n" + "Holdtime\n") + +DEFSH (0, show_ip_access_list_cmd_vtysh, + "show ip access-list", + "Show running system information\n" + "IP information\n" + "List IP access lists\n") + +DEFSH (0, 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 (0, ip_route_mask_flags_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, show_ipv6_ospf6_database_type_self_originated_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) self-originated " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Display Self-originated LSAs\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 (0, show_bgp_ipv4_safi_cmd_vtysh, + "show bgp ipv4 (unicast|multicast)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n") + +DEFSH (0, 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 (0, bgp_redistribute_ipv4_metric_rmap_cmd_vtysh, + "redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " metric <0-4294967295> route-map WORD", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, router_id_vrf_cmd_vtysh, + "router-id A.B.C.D " "vrf <0-65535>", + "Manually set the router-id\n" + "IP address to use for router-id\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, undebug_bgp_fsm_cmd_vtysh, + "undebug bgp fsm", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "Finite State Machine\n") + +DEFSH (0, show_bgp_neighbor_flap_cmd_vtysh, + "show bgp neighbors (A.B.C.D|X:X::X:X) flap-statistics", + "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 flap statistics of the routes learned from neighbor\n") + +DEFSH (0, show_ipv6_bgp_lcommunity_all_cmd_vtysh, + "show ipv6 bgp large-community", + "Show running system information\n" + "IPv6 information\n" + "BGP information\n" + "Display routes matching the large-communities\n") + +DEFSH (0|0|0|0, 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 (0, no_ospf_default_metric_cmd_vtysh, + "no default-metric", + "Negate a command or set its defaults\n" + "Set metric of redistributed routes\n") + +DEFSH (0, 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 (0, 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 (0, ripng_redistribute_type_metric_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)" " metric <0-16>", + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric\n" + "Metric value\n") + +DEFSH (0, ip_route_flags_tag_distance_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, show_bgp_ipv4_encap_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv4 encap neighbors A.B.C.D advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\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 (0, show_isis_neighbor_arg_cmd_vtysh, + "show isis neighbor WORD", + "Show running system information\n" + "ISIS network information\n" + "ISIS neighbor adjacencies\n" + "System id\n") + +DEFSH (0, ospf_timers_throttle_spf_cmd_vtysh, + "timers throttle spf <0-600000> <0-600000> <0-600000>", + "Adjust routing timers\n" + "Throttling adaptive timer\n" + "OSPF SPF timers\n" + "Delay (msec) from first change received till SPF calculation\n" + "Initial hold time (msec) between consecutive SPF calculations\n" + "Maximum hold time (msec)\n") + +DEFSH (0, show_bgp_ipv6_lcommunity_all_cmd_vtysh, + "show bgp ipv6 large-community", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the large-communities\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, 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 (0, ospf6_stub_router_admin_cmd_vtysh, + "stub-router administrative", + "Make router a stub router\n" + "Advertise inability to be a transit router\n" + "Administratively applied, for an indefinite period\n") + +DEFSH (0, no_router_bgp_cmd_vtysh, + "no router bgp " "<1-4294967295>", + "Negate a command or set its defaults\n" + "Enable a routing process\n" + "BGP information\n" + "AS number\n") + +DEFSH (0, no_debug_pim_packetdump_send_cmd_vtysh, + "no debug pim packet-dump send", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM packet dump\n" + "Dump sent packets\n") + +DEFSH (0, show_bgp_ipv6_encap_prefix_cmd_vtysh, + "show bgp ipv6 encap X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display ENCAP NLRI specific information\n" + "Display information about ENCAP NLRIs\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, 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 (0, no_match_community_val_cmd_vtysh, + "no match community (<1-99>|<100-500>|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 (0|0, ip_route_flags2_tag_vrf_cmd_vtysh, + "ip route A.B.C.D/M (reject|blackhole) tag <1-4294967295>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv6_vpn_rd_tags_cmd_vtysh, + "show bgp ipv6 vpn rd ASN:nn_or_IP-address:nn tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Display information for a route distinguisher\n" + "VPN Route Distinguisher\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, vty_restricted_mode_cmd_vtysh, + "anonymous restricted", + "Restrict view commands available in anonymous, unauthenticated vty\n") + +DEFSH (0, no_ipv6_nd_ra_interval_val_cmd_vtysh, + "no ipv6 nd ra-interval <1-1800>", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router Advertisement interval\n") + +DEFSH (0, 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 (0, no_ipv6_route_flags_pref_tag_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, undebug_pim_packets_cmd_vtysh, + "undebug pim packets", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n" + "PIM protocol packets\n") + +DEFSH (0, show_ipv6_ospf6_route_longer_cmd_vtysh, + "show ipv6 ospf6 route X:X::X:X/M longer", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Routing Table\n" + "Specify IPv6 prefix\n" + "Display routes longer than the specified route\n" + ) + +DEFSH (0, interface_ip_pim_ssm_cmd_vtysh, + "ip pim ssm", + "IP information\n" + "PIM information\n" + "Enable PIM SSM operation\n") + +DEFSH (0, no_bgp_redistribute_ipv4_rmap_metric_cmd_vtysh, + "no redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " route-map WORD metric <0-4294967295>", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0|0|0|0|0|0, rmap_onmatch_goto_cmd_vtysh, + "on-match goto <1-65535>", + "Exit policy on matches\n" + "Goto Clause number\n" + "Number\n") + +DEFSH (0, show_bgp_ipv6_safi_neighbor_flap_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) flap-statistics", + "Show running system information\n" + "BGP information\n" + "Address Family Modifier\n" + "Address Family Modifier\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 flap statistics of the routes learned from neighbor\n") + +DEFSH (0, show_bgp_ipv6_vpn_tags_cmd_vtysh, + "show bgp ipv6 vpn tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Interface name\n") + +DEFSH (0, ipv6_route_ifname_flags_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv4_community_list_exact_cmd_vtysh, + "show bgp ipv4 community-list (<1-500>|WORD) exact-match", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n" + "Exact match of the communities\n") + +DEFSH (0, show_bgp_ipv6_safi_community4_exact_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) 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" + "Address family modifier\n" + "Address family modifier\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 (0, 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 (0, ip_mroute_vrf_cmd_vtysh, + "ip mroute A.B.C.D/M (A.B.C.D|INTERFACE) ""vrf <0-65535>", + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ip_bgp_view_neighbor_advertised_route_cmd_vtysh, + "show ip bgp view WORD neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "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" + "Display the routes advertised to a BGP neighbor\n") + +DEFSH (0, 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 (0, no_pce_domain_cmd_vtysh, + "no pce domain as <0-65535>", + "Negate a command or set its defaults\n" + "PCE Router Information specific commands\n" + "Disable PCE domain AS number\n" + "AS number where the PCE as visibilities for path computation\n" + "AS number in decimal <0-65535>\n") + +DEFSH (0, if_ipv6_rmap_cmd_vtysh, + "route-map RMAP_NAME (in|out) IFNAME", + "Route map set\n" + "Route map name\n" + "Route map set for input filtering\n" + "Route map set for output filtering\n" + "Route map interface name\n") + +DEFSH (0, undebug_pim_cmd_vtysh, + "undebug pim", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n") + +DEFSH (0, show_ipv6_mbgp_lcommunity4_cmd_vtysh, + "show ipv6 mbgp laarge-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "MBGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, no_ospf_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 (0, no_set_src_cmd_vtysh, + "no set src", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "Source address for route\n") + +DEFSH (0, 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 (0, 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 (0, capability_opaque_cmd_vtysh, + "capability opaque", + "Enable specific OSPF feature\n" + "Opaque LSA\n") + +DEFSH (0, clear_bgp_ipv6_all_out_cmd_vtysh, + "clear bgp ipv6 * out", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear all peers\n" + "Resend all outbound updates\n") + +DEFSH (0, show_bgp_ipv6_safi_flap_prefix_longer_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics X:X::X:X/M longer-prefixes", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, show_ipv6_ripng_status_cmd_vtysh, + "show ipv6 ripng status", + "Show running system information\n" + "IPv6 information\n" + "Show RIPng routes\n" + "IPv6 routing protocol process parameters and statistics\n") + +DEFSH (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, ospf6_distance_ospf6_inter_intra_external_cmd_vtysh, + "distance ospf6 inter-area <1-255> intra-area <1-255> external <1-255>", + "Define an administrative distance\n" + "OSPF6 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 (0, vty_access_class_cmd_vtysh, + "access-class WORD", + "Filter connections based on an IP access list\n" + "IP access list\n") + +DEFSH (0, no_ripng_timers_val_cmd_vtysh, + "no timers basic <0-65535> <0-65535> <0-65535>", + "Negate a command or set its defaults\n" + "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 (0, show_ipv6_ospf6_interface_prefix_match_cmd_vtysh, + "show ipv6 ospf6 interface prefix X:X::X:X/M (match|detail)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface information\n" + "Display connected prefixes to advertise\n" + "Display the route\n" + "Display the route matches the prefix\n" + "Display details of the prefixes\n" + ) + +DEFSH (0, show_interface_vrf_cmd_vtysh, + "show interface " "vrf <0-65535>", + "Show running system information\n" + "Interface status and configuration\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, ospf_opaque_capable_cmd_vtysh, + "ospf opaque-lsa", + "OSPF specific commands\n" + "Enable the Opaque-LSA capability (rfc2370)\n") + +DEFSH (0, show_bgp_view_neighbor_damp_cmd_vtysh, + "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) dampened-routes", + "Show running system 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" + "Display the dampened routes received from neighbor\n") + +DEFSH (0, no_linkdetect_cmd_vtysh, + "no link-detect", + "Negate a command or set its defaults\n" + "Disable link detection on interface\n") + +DEFSH (0, show_bgp_ipv4_safi_rsclient_summary_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) rsclient summary", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, show_ipv6_ospf6_database_type_id_router_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) A.B.C.D A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Specify Link state ID as IPv4 address notation\n" + "Specify Advertising Router as IPv4 address notation\n" + ) + +DEFSH (0, no_debug_igmp_packets_cmd_vtysh, + "no debug igmp packets", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n" + "IGMP protocol packets\n") + +DEFSH (0, show_ipv6_ospf6_database_type_adv_router_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) adv-router A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + ) + +DEFSH (0, no_set_pathlimit_ttl_val_cmd_vtysh, + "no set pathlimit ttl <1-255>", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "BGP AS-Pathlimit attribute\n" + "Set AS-Path Hop-count TTL\n") + +DEFSH (0, pce_domain_cmd_vtysh, + "pce domain as <0-65535>", + "PCE Router Information specific commands\n" + "Configure PCE domain AS number\n" + "AS number where the PCE as visibilities for path computation\n" + "AS number in decimal <0-65535>\n") + +DEFSH (0, show_bgp_ipv6_safi_prefix_pathtype_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) X:X::X:X/M (bestpath|multipath)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IPv6 prefix /, e.g., 3ffe::/16\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, 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 (0, no_bgp_graceful_restart_stalepath_time_cmd_vtysh, + "no bgp graceful-restart stalepath-time", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Graceful restart capability parameters\n" + "Set the max time to hold onto restarting peer's stale paths\n") + +DEFSH (0, 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 (0, 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 (0, show_ip_bgp_lcommunity4_cmd_vtysh, + "show ip bgp large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_instance_ipv6_neighbors_cmd_vtysh, + "show bgp view WORD ipv6 neighbors", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Detailed information on TCP and BGP neighbor connections\n") + +DEFSH (0, no_ipv6_nd_mtu_cmd_vtysh, + "no ipv6 nd mtu", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Advertised MTU\n") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0|0|0|0|0, 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 (0, show_ip_ospf_database_type_id_self_cmd_vtysh, + "show ip ospf database (" "asbr-summary|external|network|router|summary" "|nssa-external" "|opaque-link|opaque-area|opaque-as" ") 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" "NSSA external link state\n" "Link local Opaque-LSA\n" "Link area Opaque-LSA\n" "Link AS Opaque-LSA\n" + "Link State ID (as an IP address)\n" + "Self-originated link states\n" + "\n") + +DEFSH (0, show_bgp_instance_ipv4_safi_summary_cmd_vtysh, + "show bgp view WORD ipv4 (unicast|multicast) summary", + "Show running system 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 (0, 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 (0, no_debug_ospf6_brouter_area_cmd_vtysh, + "no debug ospf6 border-routers area-id", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug border router\n" + "Debug border routers in specific Area\n" + ) + +DEFSH (0, no_match_local_pref_val_cmd_vtysh, + "no match local-preference <0-4294967295>", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match local preference of route\n" + "Local preference value\n") + +DEFSH (0, no_neighbor_route_map_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "route-map WORD (in|out|import|export)", + "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" + "Apply map to routes going into a Route-Server client's table\n" + "Apply map to routes coming from a Route-Server client") + +DEFSH (0, show_bgp_ipv4_community2_exact_cmd_vtysh, + "show bgp ipv4 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" + "IP 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 (0, no_ospf6_distance_ospf6_cmd_vtysh, + "no distance ospf6", + "Negate a command or set its defaults\n" + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "OSPF6 Distance\n") + +DEFSH (0, show_ip_rpf_addr_cmd_vtysh, + "show ip rpf A.B.C.D", + "Show running system information\n" + "IP information\n" + "Display RPF information for multicast source\n" + "IP multicast source address (e.g. 10.0.0.0)\n") + +DEFSH (0, 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 (0, no_ospf_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 (0, 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 (0, show_bgp_view_ipv6_neighbor_received_routes_cmd_vtysh, + "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) received-routes", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\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 (0, show_ipv6_ospf6_database_self_originated_cmd_vtysh, + "show ipv6 ospf6 database self-originated", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Self-originated LSAs\n" + ) + +DEFSH (0, ip_irdp_preference_cmd_vtysh, + "ip irdp preference <0-2147483647>", + "IP information\n" + "ICMP Router discovery on this interface\n" + "Set default preference level for this interface\n" + "Preference level\n") + +DEFSH (0, bgp_redistribute_ipv4_cmd_vtysh, + "redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, 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 (0, no_isis_hello_multiplier_cmd_vtysh, + "no isis hello-multiplier", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set multiplier for Hello holding time\n") + +DEFSH (0, show_bgp_ipv4_safi_prefix_pathtype_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) A.B.C.D/M (bestpath|multipath)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, 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 (0, 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 /, e.g., 3ffe::/16\n") + +DEFSH (0, no_isis_passive_cmd_vtysh, + "no isis passive", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Configure the passive mode for interface\n") + +DEFSH (0, debug_igmp_packets_cmd_vtysh, + "debug igmp packets", + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n" + "IGMP protocol packets\n") + +DEFSH (0, 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 (0, show_ip_pim_assert_metric_cmd_vtysh, + "show ip pim assert-metric", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface assert metric\n") + +DEFSH (0, neighbor_nexthop_self_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "next-hop-self {all}", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Disable the next hop calculation for this neighbor\n" + "Apply also to ibgp-learned routes when acting as a route reflector\n") + +DEFSH (0, clear_bgp_ipv6_instance_all_rsclient_cmd_vtysh, + "clear bgp ipv6 view WORD * rsclient", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "BGP view\n" + "view name\n" + "Clear all peers\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, clear_ip_bgp_all_rsclient_cmd_vtysh, + "clear ip bgp * rsclient", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear all peers\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, clear_ip_interfaces_cmd_vtysh, + "clear ip interfaces", + "Reset functions\n" + "IP information\n" + "Reset interfaces\n") + +DEFSH (0, clear_ip_bgp_as_ipv4_soft_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_bgp_ipv4_lcommunity_list_cmd_vtysh, + "show bgp ipv4 large-community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the large-community-list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0, no_tunnel_protection_cmd_vtysh, + "no tunnel protection", + "Negate a command or set its defaults\n" + "NHRP/GRE integration\n" + "IPsec protection\n") + +DEFSH (0, show_database_arg_cmd_vtysh, + "show isis database WORD", + "Show running system information\n" + "IS-IS information\n" + "IS-IS link state database\n" + "LSP ID\n") + +DEFSH (0, ospf_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 (0, 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 (0, show_isis_topology_cmd_vtysh, + "show isis topology", + "Show running system information\n" + "IS-IS information\n" + "IS-IS paths to Intermediate Systems\n") + +DEFSH (0, show_bgp_ipv6_safi_filter_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) filter-list WORD", + "Show running system information\n" + "BGP information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, neighbor_password_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "password LINE", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Set a password\n" + "The password\n") + +DEFSH (0, show_bgp_ipv6_cmd_vtysh, + "show bgp ipv6", + "Show running system information\n" + "BGP information\n" + "Address family\n") + +DEFSH (0, 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 (0, show_ipv6_bgp_lcommunity3_cmd_vtysh, + "show ipv6 bgp large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, show_bgp_ipv6_encap_rd_tags_cmd_vtysh, + "show bgp ipv6 encap rd ASN:nn_or_IP-address:nn tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, no_ipv6_nd_ra_lifetime_val_cmd_vtysh, + "no ipv6 nd ra-lifetime <0-9000>", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router lifetime\n" + "Router lifetime in seconds (0 stands for a non-default gw)\n") + +DEFSH (0, no_bgp_log_neighbor_changes_cmd_vtysh, + "no bgp log-neighbor-changes", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Log neighbor up/down and reset reason\n") + +DEFSH (0, ospf_mpls_te_router_addr_cmd_vtysh, + "mpls-te router-address A.B.C.D", + "MPLS-TE specific commands\n" + "Stable IP address of the advertising router\n" + "MPLS-TE router address in IPv4 address format\n") + +DEFSH (0, show_bgp_afi_safi_view_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (encap|mulicast|unicast|vpn)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "BGP view name\n" + "Address Family\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + ) + +DEFSH (0, ip_route_mask_flags_tag_distance_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, 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 (0, ip_route_mask_flags_distance2_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole) <1-255>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, neighbor_send_community_type_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "send-community (both|all|extended|standard|large)", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Send Community attribute to this neighbor\n" + "Send Standard, Large and Extended Community attributes\n" + "Send Standard, Large and Extended Community attributes\n" + "Send Extended Community attributes\n" + "Send Standard Community attributes\n" + "Send Large Community attributes\n") + +DEFSH (0, show_bgp_ipv4_safi_lcommunity_list_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) large-community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes matching the large-community-list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0|0|0|0, 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 (0, no_bandwidth_if_cmd_vtysh, + "no bandwidth", + "Negate a command or set its defaults\n" + "Set bandwidth informational parameter\n") + +DEFSH (0, show_bgp_instance_ipv6_safi_rsclient_summary_cmd_vtysh, + "show bgp view WORD ipv6 (unicast|multicast) rsclient summary", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, no_ip_extcommunity_list_name_expanded_all_cmd_vtysh, + "no ip extcommunity-list expanded WORD", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a extended community list entry\n" + "Specify expanded extcommunity-list\n" + "Extended Community list name\n") + +DEFSH (0, set_src_cmd_vtysh, + "set src A.B.C.D", + "Set values in destination routing protocol\n" + "src address for route\n" + "src address\n") + +DEFSH (0, ipv6_route_ifname_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295>", + "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" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, ip_route_mask_flags_tag_distance2_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, ospf_area_nssa_translate_no_summary_cmd_vtysh, + "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" + "OSPF area ID as a decimal value\n" + "Configure OSPF area as nssa\n" + "Configure NSSA-ABR for translate election (default)\n" + "Configure NSSA-ABR to never translate\n" + "Configure NSSA-ABR to always translate\n" + "Do not inject inter-area routes into nssa\n") + +DEFSH (0, no_ospf6_log_adjacency_changes_cmd_vtysh, + "no log-adjacency-changes", + "Negate a command or set its defaults\n" + "Log changes in adjacency state\n") + +DEFSH (0, 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 (0, 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 (0, ospf6_distance_ospf6_intra_inter_cmd_vtysh, + "distance ospf6 intra-area <1-255> inter-area <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "Intra-area routes\n" + "Distance for intra-area routes\n" + "Inter-area routes\n" + "Distance for inter-area routes\n") + +DEFSH (0, show_ipv6_mbgp_lcommunity_list_cmd_vtysh, + "show ipv6 mbgp large-community-list WORD", + "Show running system information\n" + "IPv6 information\n" + "MBGP information\n" + "Display routes matching the large-community-list\n" + "large-community-list name\n") + +DEFSH (0, 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 (0|0|0, ospf6_routemap_no_match_address_prefixlist_cmd_vtysh, + "no match ipv6 address prefix-list WORD", + "Negate a command or set its defaults\n" + "Match values\n" + "IPv6 information\n" + "Match address of route\n" + "Match entries of prefix-lists\n" + "IPv6 prefix-list name\n") + +DEFSH (0, 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 (0, show_ip_bgp_lcommunity3_cmd_vtysh, + "show ip bgp large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "largecommunity number\n" + "largecommunity number\n" + "largecommunity number\n") + +DEFSH (0, no_ospf_max_metric_router_lsa_startup_cmd_vtysh, + "no max-metric router-lsa on-startup", + "Negate a command or set its defaults\n" + "OSPF maximum / infinite-distance metric\n" + "Advertise own Router-LSA with infinite distance (stub router)\n" + "Automatically advertise stub Router-LSA on startup of OSPF\n") + +DEFSH (0, no_isis_mpls_te_inter_as_cmd_vtysh, + "no mpls-te inter-as", + "Negate a command or set its defaults\n" + "Disable the MPLS-TE functionality\n" + "Disable MPLS-TE Inter-AS support\n") + +DEFSH (0, show_bgp_ipv4_cidr_only_cmd_vtysh, + "show bgp ipv4 cidr-only", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display only routes with non-natural netmasks\n") + +DEFSH (0|0|0|0, 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 (0|0, 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 (0, no_ipv6_route_ifname_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_debug_bgp_as4_segment_cmd_vtysh, + "no debug bgp as4 segment", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP AS4 actions\n" + "BGP AS4 aspath segment handling\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, no_ipv6_route_ifname_pref_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295> <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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0, show_ip_protocol_cmd_vtysh, + "show ip protocol", + "Show running system information\n" + "IP information\n" + "IP protocol filtering status\n") + +DEFSH (0, 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 (0, 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 (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, show_zebra_client_summary_cmd_vtysh, + "show zebra client summary", + "Show running system information\n" + "Zebra information brief" + "Client information brief") + +DEFSH (0, undebug_bgp_all_cmd_vtysh, + "undebug all bgp", + "Disable debugging functions (see also 'debug')\n" + "Enable all debugging\n" + "BGP information\n") + +DEFSH (0, 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 /\n" + "Route-map to modify the attributes\n" + "Name of the route map\n") + +DEFSH (0, 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 (0, no_ipv6_ospf6_mtu_ignore_cmd_vtysh, + "no ipv6 ospf6 mtu-ignore", + "Negate a command or set its defaults\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Ignore MTU mismatch on this interface\n" + ) + +DEFSH (0, 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 (0, show_ipv6_mbgp_cmd_vtysh, + "show ipv6 mbgp", + "Show running system information\n" + "IP information\n" + "MBGP information\n") + +DEFSH (0, area_passwd_clear_snpauth_cmd_vtysh, + "(area-password|domain-password) clear WORD authenticate snp (send-only|validate)", + "Configure the authentication password for an area\n" + "Set the authentication password for a routing domain\n" + "Authentication type\n" + "Area password\n" + "Authentication\n" + "SNP PDUs\n" + "Send but do not check PDUs on receiving\n" + "Send and check PDUs on receiving\n") + +DEFSH (0, ip_ospf_priority_cmd_vtysh, + "ip ospf priority <0-255>", + "IP Information\n" + "OSPF interface commands\n" + "Router priority\n" + "Priority\n") + +DEFSH (0, 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 (0, show_ipv6_bgp_cmd_vtysh, + "show ipv6 bgp", + "Show running system information\n" + "IP information\n" + "BGP information\n") + +DEFSH (0, no_rip_version_cmd_vtysh, + "no version", + "Negate a command or set its defaults\n" + "Set routing protocol version\n") + +DEFSH (0, undebug_pim_zebra_cmd_vtysh, + "undebug pim zebra", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n" + "ZEBRA protocol activity\n") + +DEFSH (0, link_params_delay_var_cmd_vtysh, + "delay-variation <0-16777215>", + "Unidirectional Link Delay Variation\n" + "delay variation in micro-second as decimal (0...16777215)\n") + +DEFSH (0, ipv6_nd_prefix_val_rev_rtaddr_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite) (no-autoconfig|) (off-link|) (router-address|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n" + "Do not use prefix for autoconfiguration\n" + "Do not use prefix for onlink determination\n" + "Set Router Address flag\n") + +DEFSH (0, no_match_ip_route_source_prefix_list_val_cmd_vtysh, + "no match ip route-source prefix-list WORD", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "IP information\n" + "Match advertising source address of route\n" + "Match entries of prefix-lists\n" + "IP prefix-list name\n") + +DEFSH (0, ospf_transmit_delay_cmd_vtysh, + "ospf transmit-delay <1-65535>", + "OSPF interface commands\n" + "Link state transmit delay\n" + "Seconds\n") + +DEFSH (0, 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 (0, no_ospf_timers_min_ls_interval_cmd_vtysh, + "no timers throttle lsa all", + "Negate a command or set its defaults\n" + "Adjust routing timers\n" + "Throttling adaptive timer\n" + "LSA delay between transmissions\n") + +DEFSH (0, show_bgp_ipv6_vpn_summary_cmd_vtysh, + "show bgp ipv6 vpn summary", + "Show running system information\n" + "BGP information\n" + "IPv6\n" + "Display VPN NLRI specific information\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, 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 (0, 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 (0, show_ipv6_ospf6_route_type_detail_cmd_vtysh, + "show ipv6 ospf6 route (intra-area|inter-area|external-1|external-2) detail", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Routing Table\n" + "Display Intra-Area routes\n" + "Display Inter-Area routes\n" + "Display Type-1 External routes\n" + "Display Type-2 External routes\n" + "Detailed information\n" + ) + +DEFSH (0, ospf_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 (0, no_link_params_delay_cmd_vtysh, + "no delay", + "Negate a command or set its defaults\n" + "Disable Unidirectional Average, Min & Max Link Delay on this interface\n") + +DEFSH (0|0|0|0, 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 (0, set_community_delete_cmd_vtysh, + "set comm-list (<1-99>|<100-500>|WORD) delete", + "Set values in destination routing protocol\n" + "set BGP community list (for deletion)\n" + "Community-list number (standard)\n" + "Community-list number (expanded)\n" + "Community-list name\n" + "Delete matching communities\n") + +DEFSH (0, link_params_delay_cmd_vtysh, + "delay <0-16777215>", + "Unidirectional Average Link Delay\n" + "Average delay in micro-second as decimal (0...16777215)\n") + +DEFSH (0, ipv6_route_ifname_flags_pref_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0|0|0|0|0, 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 (0, ospf_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 (0, show_bgp_statistics_vpnv4_cmd_vtysh, + "show bgp (ipv4) (vpnv4) statistics", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "BGP RIB advertisement statistics\n") + +DEFSH (0, clear_bgp_as_in_cmd_vtysh, + "clear bgp " "<1-4294967295>" " in", + "Reset functions\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, ospf_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 (0, show_ip_ospf_database_type_id_cmd_vtysh, + "show ip ospf database (" "asbr-summary|external|network|router|summary" "|nssa-external" "|opaque-link|opaque-area|opaque-as" ") 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" "NSSA external link state\n" "Link local Opaque-LSA\n" "Link area Opaque-LSA\n" "Link AS Opaque-LSA\n" + "Link State ID (as an IP address)\n") + +DEFSH (0, interface_ip_igmp_query_max_response_time_dsec_cmd_vtysh, + "ip igmp query-max-response-time-dsec" " <10-250>", + "IP information\n" + "Enable IGMP operation\n" + "IGMP max query response value (deciseconds)\n" + "Query response value in deciseconds\n") + +DEFSH (0, 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 (0, no_ip_route_flags_distance2_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, no_ripng_redistribute_type_metric_routemap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)" " metric <0-16> route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, no_ipv6_route_flags_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 /, e.g., 3ffe::/16\n") + +DEFSH (0, show_bgp_ipv4_safi_cidr_only_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) cidr-only", + "Show running system 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 (0, bgp_config_type_cmd_vtysh, + "bgp config-type (cisco|zebra)", + "BGP information\n" + "Configuration type\n" + "cisco\n" + "zebra\n") + +DEFSH (0, no_ip_route_mask_flags2_tag_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295>" "vrf <0-65535>", + "Negate a command or set its defaults\n" + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_safi_regexp_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) regexp .LINE", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\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 (0, show_ipv6_nht_cmd_vtysh, + "show ipv6 nht", + "Show running system information\n" + "IP information\n" + "IPv6 nexthop tracking table\n") + +DEFSH (0, 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 (0, clear_ip_bgp_peer_rsclient_cmd_vtysh, + "clear ip bgp (A.B.C.D|X:X::X:X) rsclient", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "BGP neighbor IP address to clear\n" + "BGP IPv6 neighbor to clear\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, 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 (0, 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 (0, no_ip_route_mask_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_bgp_redistribute_ipv4_metric_rmap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " metric <0-4294967295> route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, show_bgp_ipv4_safi_damp_flap_statistics_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n") + +DEFSH (0, show_bgp_ipv4_safi_flap_prefix_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, no_isis_metric_l1_cmd_vtysh, + "no isis metric level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set default metric for circuit\n" + "Specify metric for level-1 routing\n") + +DEFSH (0, debug_ospf6_abr_cmd_vtysh, + "debug ospf6 abr", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 ABR function\n" + ) + +DEFSH (0, match_ip_route_source_prefix_list_cmd_vtysh, + "match ip route-source prefix-list WORD", + "Match values from routing table\n" + "IP information\n" + "Match advertising source address of route\n" + "Match entries of prefix-lists\n" + "IP prefix-list name\n") + +DEFSH (0, no_multicast_cmd_vtysh, + "no multicast", + "Negate a command or set its defaults\n" + "Unset multicast flag to interface\n") + +DEFSH (0, no_max_lsp_lifetime_cmd_vtysh, + "no max-lsp-lifetime", + "Negate a command or set its defaults\n" + "LSP lifetime in seconds\n") + +DEFSH (0, debug_isis_events_cmd_vtysh, + "debug isis events", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS Events\n") + +DEFSH (0, 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 (0, no_ipv6_route_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, isis_metric_cmd_vtysh, + "isis metric <0-16777215>", + "IS-IS commands\n" + "Set default metric for circuit\n" + "Default metric value\n") + +DEFSH (0, clear_zebra_fpm_stats_cmd_vtysh, + "clear zebra fpm stats", + "Reset functions\n" + "Zebra information\n" + "Clear Forwarding Path Manager information\n" + "Statistics\n") + +DEFSH (0, clear_isis_neighbor_arg_cmd_vtysh, + "clear isis neighbor WORD", + "Reset functions\n" + "ISIS network information\n" + "ISIS neighbor adjacencies\n" + "System id\n") + +DEFSH (0, clear_bgp_ipv6_as_in_prefix_filter_cmd_vtysh, + "clear bgp ipv6 " "<1-4294967295>" " in prefix-filter", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear peers with the AS number\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, show_bgp_ipv4_safi_neighbor_flap_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) flap-statistics", + "Show running system information\n" + "BGP information\n" + "Address Family Modifier\n" + "Address Family Modifier\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 flap statistics of the routes learned from neighbor\n") + +DEFSH (0, no_bgp_graceful_restart_stalepath_time_val_cmd_vtysh, + "no bgp graceful-restart stalepath-time <1-3600>", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Graceful restart capability parameters\n" + "Set the max time to hold onto restarting peer's stale paths\n" + "Delay value (seconds)\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out the existing ORF prefix-list\n") + +DEFSH (0, show_ip_bgp_damp_dampened_paths_cmd_vtysh, + "show ip bgp dampening dampened-paths", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display paths suppressed due to dampening\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, no_debug_ospf6_message_sendrecv_cmd_vtysh, + "no debug ospf6 message " + "(unknown|hello|dbdesc|lsreq|lsupdate|lsack|all) (send|recv)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 message\n" + "Debug Unknown message\n" + "Debug Hello message\n" + "Debug Database Description message\n" + "Debug Link State Request message\n" + "Debug Link State Update message\n" + "Debug Link State Acknowledgement message\n" + "Debug All message\n" + "Debug only sending message\n" + "Debug only receiving message\n" + ) + +DEFSH (0, no_match_peer_local_cmd_vtysh, + "no match peer local", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match peer address\n" + "Static or Redistributed routes\n") + +DEFSH (0, no_rip_redistribute_type_routemap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)" " route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, no_ip_route_mask_tag_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-4294967295>", + "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" + "Tag of this route\n" + "Tag value\n") + +DEFSH (0, show_debugging_zebra_cmd_vtysh, + "show debugging zebra", + "Show running system information\n" + "Debugging information\n" + "Zebra configuration\n") + +DEFSH (0, ipv6_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 (0, no_isis_passwd_cmd_vtysh, + "no isis password", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Configure the authentication password for a circuit\n") + +DEFSH (0, no_debug_isis_csum_cmd_vtysh, + "no debug isis checksum-errors", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS LSP checksum errors\n") + +DEFSH (0, show_ip_bgp_ipv4_rsclient_summary_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) rsclient summary", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, 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 (0, 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 (0, interface_no_ip_mroute_cmd_vtysh, + "no ip mroute INTERFACE A.B.C.D", + "Negate a command or set its defaults\n" + "IP information\n" + "Add multicast route\n" + "Outgoing interface name\n" + "Group Address\n") + +DEFSH (0, 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 (0, neighbor_maximum_prefix_threshold_restart_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> <1-100> restart <1-65535>", + "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" + "Threshold value (%) at which to generate a warning msg\n" + "Restart bgp connection after limit is exceeded\n" + "Restart interval in minutes") + +DEFSH (0, show_bgp_view_ipv6_cmd_vtysh, + "show bgp view WORD ipv6", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n") + +DEFSH (0, show_bgp_ipv4_filter_list_cmd_vtysh, + "show bgp ipv4 filter-list WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, 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 (0, rip_neighbor_cmd_vtysh, + "neighbor A.B.C.D", + "Specify a neighbor router\n" + "Neighbor address\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv6_safi_summary_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) summary", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, no_ospf6_redistribute_route_map_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ripng|isis|bgp|babel|nhrp)" " route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Route map name\n") + +DEFSH (0, 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 /, e.g., 3ffe::/16\n") + +DEFSH (0, 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 (0, no_neighbor_password_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "password", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Set a password\n") + +DEFSH (0, no_lsp_gen_interval_l1_arg_cmd_vtysh, + "no lsp-gen-interval level-1 <1-120>", + "Negate a command or set its defaults\n" + "Minimum interval between regenerating same LSP\n" + "Set interval for level 1 only\n" + "Minimum interval in seconds\n") + +DEFSH (0, 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 (0, show_ip_route_supernets_vrf_all_cmd_vtysh, + "show ip route supernets-only " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Show supernet entries only\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, show_bgp_ipv6_safi_neighbor_advertised_route_cmd_vtysh, + "show bgp ipv6 (multicast|unicast) neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family modifier\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 (0, 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 (0, no_ip_route_flags_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, show_ip_lcommunity_list_arg_cmd_vtysh, + "show ip large-community-list (<1-500>|WORD)", + "Show running system information\n" + "IP information\n" + "List large-community list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0, no_debug_ospf6_spf_database_cmd_vtysh, + "no debug ospf6 spf database", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug SPF Calculation\n" + "Quit Logging number of LSAs at SPF Calculation time\n" + ) + +DEFSH (0, debug_ospf6_neighbor_cmd_vtysh, + "debug ospf6 neighbor", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 Neighbor\n" + ) + +DEFSH (0, 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 (0, ip_ospf_dead_interval_minimal_addr_cmd_vtysh, + "ip ospf dead-interval minimal hello-multiplier <1-10> A.B.C.D", + "IP Information\n" + "OSPF interface commands\n" + "Interval after which a neighbor is declared dead\n" + "Minimal 1s dead-interval with fast sub-second hellos\n" + "Hello multiplier factor\n" + "Number of Hellos to send each second\n" + "Address of interface\n") + +DEFSH (0, show_bgp_ipv6_rsclient_cmd_vtysh, + "show bgp ipv6 rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Information about Route Server Client\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n") + +DEFSH (0, show_bgp_view_ipv6_neighbor_received_prefix_filter_cmd_vtysh, + "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) received prefix-filter", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\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 (0, psnp_interval_cmd_vtysh, + "isis psnp-interval <1-120>", + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "PSNP interval value\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, no_ip_multicast_mode_noarg_cmd_vtysh, + "no ip multicast rpf-lookup-mode", + "Negate a command or set its defaults\n" + "IP information\n" + "Multicast options\n" + "RPF lookup behavior\n") + +DEFSH (0, ospf_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 (0, test_pim_receive_dump_cmd_vtysh, + "test pim receive dump INTERFACE A.B.C.D .LINE", + "Test\n" + "Test PIM protocol\n" + "Test PIM message reception\n" + "Test PIM packet dump reception from neighbor\n" + "Interface\n" + "Neighbor address\n" + "Packet dump\n") + +DEFSH (0, 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 (0|0|0|0, 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 /, 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 (0, test_igmp_receive_report_cmd_vtysh, + "test igmp receive report <0-65535> A.B.C.D <1-6> .LINE", + "Test\n" + "Test IGMP protocol\n" + "Test IGMP message\n" + "Test IGMP report\n" + "Socket\n" + "IGMP group address\n" + "Record type\n" + "Sources\n") + +DEFSH (0, no_ospf6_stub_router_admin_cmd_vtysh, + "no stub-router administrative", + "Negate a command or set its defaults\n" + "Make router a stub router\n" + "Advertise ability to be a transit router\n" + "Administratively applied, for an indefinite period\n") + +DEFSH (0, no_ospf_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 (0, show_bgp_ipv4_safi_neighbor_damp_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) dampened-routes", + "Show running system information\n" + "BGP information\n" + "Address Family Modifier\n" + "Address Family Modifier\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 dampened routes received from neighbor\n") + +DEFSH (0, no_spf_interval_l2_cmd_vtysh, + "no spf-interval level-2", + "Negate a command or set its defaults\n" + "Minimum interval between SPF calculations\n" + "Set interval for level 2 only\n") + +DEFSH (0, show_ipv6_ospf6_database_type_linkstate_id_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) linkstate-id A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, 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 (0, show_bgp_ipv6_lcommunity_list_cmd_vtysh, + "show bgp ipv6 large-community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the large-community-list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0|0|0|0, 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 (0, show_bgp_ipv6_safi_flap_regexp_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics regexp .LINE", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\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 (0, ipv6_route_ifname_flags_pref_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n") + +DEFSH (0, 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 (0, 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 (0, no_ospf_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 (0, show_ipv6_ospf6_database_type_linkstate_id_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) linkstate-id A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 (0, show_bgp_ipv6_safi_rsclient_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, no_capability_opaque_cmd_vtysh, + "no capability opaque", + "Negate a command or set its defaults\n" + "Enable specific OSPF feature\n" + "Opaque LSA\n") + +DEFSH (0, no_ospf_cost_inet4_cmd_vtysh, + "no ospf cost A.B.C.D", + "Negate a command or set its defaults\n" + "OSPF interface commands\n" + "Interface cost\n" + "Address of interface") + +DEFSH (0, 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 (0, show_ip_bgp_damp_flap_cidr_only_cmd_vtysh, + "show ip bgp dampening flap-statistics cidr-only", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display only routes with non-natural netmasks\n") + +DEFSH (0, 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 (0, show_ip_igmp_interface_cmd_vtysh, + "show ip igmp interface", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP interface information\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, no_area_import_list_cmd_vtysh, + "no area A.B.C.D import-list NAME", + "OSPFv6 area parameters\n" + "OSPFv6 area ID in IP address format\n" + "Unset the filter for networks announced to other areas\n" + "NAme of the access-list\n") + +DEFSH (0, show_bgp_ipv4_prefix_list_cmd_vtysh, + "show bgp ipv4 prefix-list WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0, clear_ip_bgp_as_encap_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " encap 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 (0|0|0|0, 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 /, 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 (0, ipv6_nd_router_preference_cmd_vtysh, + "ipv6 nd router-preference (high|medium|low)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Default router preference\n" + "High default router preference\n" + "Low default router preference\n" + "Medium default router preference (default)\n") + +DEFSH (0, show_bgp_view_afi_safi_lcommunity2_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, show_ipv6_route_summary_vrf_cmd_vtysh, + "show ipv6 route summary " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Summary of all IPv6 routes\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, undebug_ssmpingd_cmd_vtysh, + "undebug ssmpingd", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n" + "ssmpingd activity\n") + +DEFSH (0, 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 (0, ipv6_route_ifname_flags_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 /, e.g., 35.0.0.0/8\n" + "Route-map to modify the attributes\n" + "Name of the route map\n") + +DEFSH (0, dump_bgp_all_cmd_vtysh, + "dump bgp (all|all-et|updates|updates-et|routes-mrt) PATH [INTERVAL]", + "Dump packet\n" + "BGP packet dump\n" + "Dump all BGP packets\nDump all BGP packets (Extended Tiemstamp Header)\n" + "Dump BGP updates only\nDump BGP updates only (Extended Tiemstamp Header)\n" + "Dump whole BGP routing table\n" + "Output filename\n" + "Interval of output\n") + +DEFSH (0, show_ip_bgp_ipv4_lcommunity_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) large-community (AA:BB:CC)", + "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 large-communities\n" + "large-community number\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_summary_cmd_vtysh, + "show bgp summary", + "Show running system information\n" + "BGP information\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, bgp_graceful_restart_restart_time_cmd_vtysh, + "bgp graceful-restart restart-time <1-3600>", + "BGP specific commands\n" + "Graceful restart capability parameters\n" + "Set the time to wait to delete stale routes before a BGP open message is received\n" + "Delay value (seconds)\n") + +DEFSH (0, clear_ip_ospf_interface_cmd_vtysh, + "clear ip ospf interface [IFNAME]", + "Reset functions\n" + "IP information\n" + "OSPF information\n" + "Interface information\n" + "Interface name\n") + +DEFSH (0, show_bgp_ipv4_safi_flap_statistics_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n") + +DEFSH (0, no_ospf_passive_interface_default_cmd_vtysh, + "no passive-interface default", + "Negate a command or set its defaults\n" + "Allow routing updates on an interface\n" + "Allow routing updates on interfaces by default\n") + +DEFSH (0, no_ip_route_mask_flags2_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole)", + "Negate a command or set its defaults\n" + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, show_ip_igmp_parameters_cmd_vtysh, + "show ip igmp parameters", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP parameters information\n") + +DEFSH (0, if_nhrp_flags_cmd_vtysh, + "(ip|ipv6)" " nhrp (shortcut|redirect)", + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Allow shortcut establishment\n" + "Send redirect notifications\n") + +DEFSH (0, 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 (0, no_debug_bgp_zebra_cmd_vtysh, + "no debug bgp zebra", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP Zebra messages\n") + +DEFSH (0, show_bgp_ipv6_route_pathtype_cmd_vtysh, + "show bgp ipv6 X:X::X:X (bestpath|multipath)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Network in the BGP routing table to display\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, no_ospf_refresh_timer_val_cmd_vtysh, + "no refresh timer <10-1800>", + "Adjust refresh parameters\n" + "Unset refresh timer\n" + "Timer value in seconds\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, debug_ospf_nssa_cmd_vtysh, + "debug ospf nssa", + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF nssa information\n") + +DEFSH (0, no_redistribute_ospf6_cmd_vtysh, + "no redistribute ospf6", + "Negate a command or set its defaults\n" + "Redistribute control\n" + "OSPF6 route\n") + +DEFSH (0, ip_route_flags_tag_distance2_cmd_vtysh, + "ip route A.B.C.D/M (reject|blackhole) tag <1-4294967295> <1-255>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, show_bgp_ipv4_community4_cmd_vtysh, + "show bgp ipv4 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" + "IP 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 (0, show_ip_bgp_rsclient_prefix_cmd_vtysh, + "show ip bgp rsclient (A.B.C.D|X:X::X:X) A.B.C.D/M", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, no_ip_extcommunity_list_expanded_cmd_vtysh, + "no ip extcommunity-list <100-500> (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 (0, show_bgp_ipv6_vpn_rd_cmd_vtysh, + "show bgp ipv6 vpn rd ASN:nn_or_IP-address:nn", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Display information for a route distinguisher\n" + "VPN Route Distinguisher\n") + +DEFSH (0, no_bgp_graceful_restart_cmd_vtysh, + "no bgp graceful-restart", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Graceful restart capability parameters\n") + +DEFSH (0, no_lsp_gen_interval_cmd_vtysh, + "no lsp-gen-interval", + "Negate a command or set its defaults\n" + "Minimum interval between regenerating same LSP\n") + +DEFSH (0, show_ipv6_ospf6_database_id_router_detail_cmd_vtysh, + "show ipv6 ospf6 database * A.B.C.D A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Any Link state Type\n" + "Specify Link state ID as IPv4 address notation\n" + "Specify Advertising Router as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 (0, no_bgp_maxpaths_arg_cmd_vtysh, + "no maximum-paths " "<" "1" "-" "1" ">", + "Negate a command or set its defaults\n" + "Forward packets over multiple paths\n" + "Number of paths\n") + +DEFSH (0, no_bgp_timers_cmd_vtysh, + "no timers bgp", + "Negate a command or set its defaults\n" + "Adjust routing timers\n" + "BGP timers\n") + +DEFSH (0, 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 (0, 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 (0, no_ospf_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 (0, no_ospf_area_nssa_cmd_vtysh, + "no area (A.B.C.D|<0-4294967295>) nssa", + "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 nssa\n") + +DEFSH (0, 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 (0|0|0|0|0|0, 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 (0|0|0|0, 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 /, 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 (0, ipv6_nd_prefix_val_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (<0-4294967295>|infinite) " + "(<0-4294967295>|infinite)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Valid lifetime in seconds\n" + "Infinite valid lifetime\n" + "Preferred lifetime in seconds\n" + "Infinite preferred lifetime\n") + +DEFSH (0, show_bgp_view_neighbor_flap_cmd_vtysh, + "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) flap-statistics", + "Show running system 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" + "Display flap statistics of the routes learned from neighbor\n") + +DEFSH (0, show_bgp_ipv6_flap_address_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics A.B.C.D", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n" + "Network in the BGP routing table to display\n") + +DEFSH (0|0|0|0|0|0, 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 (0, 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 (0, 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 (0, 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 (0, ospf_timers_min_ls_arrival_cmd_vtysh, + "timers lsa arrival <0-1000>", + "Adjust routing timers\n" + "Throttling link state advertisement delays\n" + "OSPF minimum arrival interval delay\n" + "Delay (msec) between accepted LSAs\n") + +DEFSH (0, 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 (0, 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 (0, no_csnp_interval_l2_arg_cmd_vtysh, + "no isis csnp-interval <1-600> level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "CSNP interval value\n" + "Specify interval for level-2 CSNPs\n") + +DEFSH (0, show_ipv6_ospf6_database_router_cmd_vtysh, + "show ipv6 ospf6 database * * A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Any Link state Type\n" + "Any Link state ID\n" + "Specify Advertising Router as IPv4 address notation\n" + ) + +DEFSH (0, show_bgp_ipv4_vpn_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv4 vpn neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\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 (0, no_ospf_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 (0, 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 (0, 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 (0, 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 (0, 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 (0, isis_priority_cmd_vtysh, + "isis priority <0-127>", + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Priority value\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_encap_neighbor_routes_cmd_vtysh, + "show bgp ipv4 encap neighbors A.B.C.D routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Detailed information on TCP and BGP neighbor connections\n" + "Neighbor to display information about\n" + "Display routes learned from neighbor\n") + +DEFSH (0, 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 (0, ripng_passive_interface_cmd_vtysh, + "passive-interface IFNAME", + "Suppress routing updates on an interface\n" + "Interface name\n") + +DEFSH (0, vty_ipv6_access_class_cmd_vtysh, + "ipv6 access-class WORD", + "IPv6 information\n" + "Filter connections based on an IP access list\n" + "IPv6 access list\n") + +DEFSH (0, 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 (0, no_ipv6_forwarding_cmd_vtysh, + "no ipv6 forwarding", + "Negate a command or set its defaults\n" + "IPv6 information\n" + "Turn off IPv6 forwarding") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, clear_bgp_as_out_cmd_vtysh, + "clear bgp " "<1-4294967295>" " out", + "Reset functions\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_vpn_rd_route_cmd_vtysh, + "show bgp ipv6 vpn rd ASN:nn_or_IP-address:nn X:X::X:X", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN 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 (0, ospf_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 (0, isis_passwd_cmd_vtysh, + "isis password (md5|clear) WORD", + "IS-IS commands\n" + "Configure the authentication password for a circuit\n" + "HMAC-MD5 authentication\n" + "Cleartext password\n" + "Circuit password\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, 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 (0, no_ospf_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 (0, 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 (0, clear_ip_bgp_instance_all_rsclient_cmd_vtysh, + "clear ip bgp view WORD * rsclient", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "BGP view\n" + "view name\n" + "Clear all peers\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out the existing ORF prefix-list\n") + +DEFSH (0, bgp_enforce_first_as_cmd_vtysh, + "bgp enforce-first-as", + "BGP information\n" + "Enforce the first AS for EBGP routes\n") + +DEFSH (0|0|0|0|0, 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 (0, 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 (0, 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 (0, show_ip_rpf_cmd_vtysh, + "show ip rpf", + "Show running system information\n" + "IP information\n" + "Display RPF information for multicast source\n") + +DEFSH (0, no_ospf6_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" + "Specify the OSPF6 area ID\n" + "OSPF6 area ID in IPv4 address notation\n" + ) + +DEFSH (0, show_bgp_ipv4_paths_cmd_vtysh, + "show bgp paths", + "Show running system information\n" + "BGP information\n" + "Path information\n") + +DEFSH (0, ip_irdp_maxadvertinterval_cmd_vtysh, + "ip irdp maxadvertinterval <4-1800>", + "IP information\n" + "ICMP Router discovery on this interface\n" + "Set maximum time between advertisement\n" + "Maximum advertisement interval in seconds\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, no_lsp_gen_interval_arg_cmd_vtysh, + "no lsp-gen-interval <1-120>", + "Negate a command or set its defaults\n" + "Minimum interval between regenerating same LSP\n" + "Minimum interval in seconds\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, no_neighbor_remote_as_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X) " "remote-as " "<1-4294967295>", + "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 (0, 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 inbound and outbound updates\n") + +DEFSH (0, debug_ospf6_asbr_cmd_vtysh, + "debug ospf6 asbr", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 ASBR function\n" + ) + +DEFSH (0, no_ospf6_timers_throttle_spf_cmd_vtysh, + "no timers throttle spf", + "Negate a command or set its defaults\n" + "Adjust routing timers\n" + "Throttling adaptive timer\n" + "OSPF6 SPF timers\n") + +DEFSH (0, no_link_params_use_bw_cmd_vtysh, + "no use-bw", + "Negate a command or set its defaults\n" + "Disable Unidirectional Utilised Bandwidth on this interface\n") + +DEFSH (0, show_interface_name_vrf_cmd_vtysh, + "show interface IFNAME " "vrf <0-65535>", + "Show running system information\n" + "Interface status and configuration\n" + "Interface name\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ipv6_route_ifname_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_match_community_exact_cmd_vtysh, + "no match community (<1-99>|<100-500>|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 (0, ip_extcommunity_list_expanded_cmd_vtysh, + "ip extcommunity-list <100-500> (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 (0|0|0|0, 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 (0, no_ipv6_nd_router_preference_val_cmd_vtysh, + "no ipv6 nd router-preference (high|medium|low)", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Default router preference\n" + "High default router preference\n" + "Low default router preference\n" + "Medium default router preference (default)\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Any prefix match. Same as \"::0/0 le 128\"\n") + +DEFSH (0, show_ipv6_ospf6_database_type_self_originated_linkstate_id_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) self-originated " + "linkstate-id A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Display Self-originated LSAs\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, 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 (0, 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 /, e.g., 35.0.0.0/8\n" + "Show route matching the specified Network/Mask pair only\n") + +DEFSH (0, show_bgp_view_ipv6_route_cmd_vtysh, + "show bgp view WORD ipv6 X:X::X:X", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, show_ipv6_ospf6_interface_ifname_prefix_detail_cmd_vtysh, + "show ipv6 ospf6 interface IFNAME prefix (X:X::X:X|X:X::X:X/M|detail)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface information\n" + "Interface name(e.g. ep0)\n" + "Display connected prefixes to advertise\n" + "Display the route bestmatches the address\n" + "Display the route\n" + "Display details of the prefixes\n" + ) + +DEFSH (0, 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 information\n" + "Interface name(e.g. ep0)\n" + ) + +DEFSH (0, no_ip_route_distance_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ip_bgp_damp_flap_route_map_cmd_vtysh, + "show ip bgp dampening flap-statistics route-map WORD", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes matching the route-map\n" + "A route-map to match on\n") + +DEFSH (0, if_nhrp_map_cmd_vtysh, + "(ip|ipv6)" " nhrp map (A.B.C.D|X:X::X:X) (A.B.C.D|local)", + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Nexthop Server configuration\n" + "IPv4 protocol address\n" + "IPv6 protocol address\n" + "IPv4 NBMA address\n" + "Handle protocol address locally\n") + +DEFSH (0, no_isis_hello_interval_l2_cmd_vtysh, + "no isis hello-interval level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set Hello interval\n" + "Specify hello-interval for level-2 IIHs\n") + +DEFSH (0, show_ipv6_bgp_lcommunity2_cmd_vtysh, + "show ipv6 bgp large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, no_ip_lcommunity_list_name_expanded_cmd_vtysh, + "no ip large-community-list expanded WORD (deny|permit) .LINE", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Specify expanded large-community-list\n" + "Large community list name\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "An ordered list as a regular-expression\n") + +DEFSH (0, debug_bgp_events_cmd_vtysh, + "debug bgp events", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP events\n") + +DEFSH (0, bgp_multiple_instance_cmd_vtysh, + "bgp multiple-instance", + "BGP information\n" + "Enable bgp multiple instance\n") + +DEFSH (0, clear_bgp_ipv6_safi_prefix_cmd_vtysh, + "clear bgp ipv6 (unicast|multicast) prefix X:X::X:X/M", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Address Family Modifier\n" + "Clear bestpath and re-advertise\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") + +DEFSH (0|0|0|0, 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 (0, isis_metric_l1_cmd_vtysh, + "isis metric <0-16777215> level-1", + "IS-IS commands\n" + "Set default metric for circuit\n" + "Default metric value\n" + "Specify metric for level-1 routing\n") + +DEFSH (0, 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 (0, show_ipv6_bgp_lcommunity_list_cmd_vtysh, + "show ipv6 bgp large-community-list WORD", + "Show running system information\n" + "IPv6 information\n" + "BGP information\n" + "Display routes matching the large-community-list\n" + "large-community-list name\n") + +DEFSH (0|0|0|0|0|0, rmap_show_name_cmd_vtysh, + "show route-map [WORD]", + "Show running system information\n" + "route-map information\n" + "route-map name\n") + +DEFSH (0, 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 (0, no_ipv6_route_ifname_flags_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, show_ip_bgp_rsclient_cmd_vtysh, + "show ip bgp rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, 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 (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0, show_bgp_ipv6_safi_rd_route_cmd_vtysh, + "show bgp ipv6 (encap|vpn) rd ASN:nn_or_IP-address:nn X:X::X:X", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, no_debug_igmp_events_cmd_vtysh, + "no debug igmp events", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n" + "IGMP protocol events\n") + +DEFSH (0, no_ipv6_nd_homeagent_preference_val_cmd_vtysh, + "no ipv6 nd home-agent-preference <0-65535>", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent preference\n" + "preference value (default is 0, least preferred)\n") + +DEFSH (0, 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 (0, debug_ospf6_zebra_cmd_vtysh, + "debug ospf6 zebra", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug connection between zebra\n" + ) + +DEFSH (0, 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" + "View name\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, show_bgp_community_list_exact_cmd_vtysh, + "show bgp community-list (<1-500>|WORD) exact-match", + "Show running system information\n" + "BGP information\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n" + "Exact match of the communities\n") + +DEFSH (0, 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 (0, 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 (0, no_debug_zebra_rib_q_cmd_vtysh, + "no debug zebra rib queue", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug zebra RIB\n" + "Debug RIB queueing\n") + +DEFSH (0, debug_pim_cmd_vtysh, + "debug pim", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n") + +DEFSH (0, show_ipv6_ospf6_database_linkstate_id_detail_cmd_vtysh, + "show ipv6 ospf6 database linkstate-id A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, no_link_params_res_bw_cmd_vtysh, + "no res-bw", + "Negate a command or set its defaults\n" + "Disable Unidirectional Residual Bandwidth on this interface\n") + +DEFSH (0, debug_isis_err_cmd_vtysh, + "debug isis protocol-errors", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS LSP protocol errors\n") + +DEFSH (0, debug_ospf6_spf_time_cmd_vtysh, + "debug ospf6 spf time", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug SPF Calculation\n" + "Measure time taken by SPF Calculation\n" + ) + +DEFSH (0, show_ip_igmp_sources_retransmissions_cmd_vtysh, + "show ip igmp sources retransmissions", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP sources information\n" + "IGMP source retransmissions\n") + +DEFSH (0, 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 (0, if_nhrp_nhs_cmd_vtysh, + "(ip|ipv6)" " nhrp nhs (A.B.C.D|X:X::X:X|dynamic) nbma (A.B.C.D|FQDN)", + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Nexthop Server configuration\n" + "IPv4 protocol address\n" + "IPv6 protocol address\n" + "Automatic detection of protocol address\n" + "IPv4 NBMA address\n" + "Fully qualified domain name for NBMA address(es)\n") + +DEFSH (0, no_bgp_redistribute_ipv4_metric_cmd_vtysh, + "no redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " metric <0-4294967295>", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0, show_bgp_view_neighbor_received_prefix_filter_cmd_vtysh, + "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) received prefix-filter", + "Show running system 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" + "Display information received from a BGP neighbor\n" + "Display the prefixlist filter\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, no_ipv6_route_ifname_flags_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, show_bgp_ipv4_prefix_cmd_vtysh, + "show bgp ipv4 A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, default_linkdetect_cmd_vtysh, + "default link-detect (on|off)", + "Configure defaults of settings\n" + "Interface link detection\n" + "Interface link-detect defaults to enabled\n" + "Interface link-detect defaults to disabled\n") + +DEFSH (0, clear_ip_bgp_all_encap_soft_cmd_vtysh, + "clear ip bgp * encap 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 (0, show_bgp_ipv6_safi_flap_statistics_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display flap statistics of routes\n") + +DEFSH (0, 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 (0, 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 (0, tunnel_source_cmd_vtysh, + "tunnel source INTERFACE", + "NHRP/GRE integration\n" + "Tunnel device binding tracking\n" + "Interface name\n") + +DEFSH (0, 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 (0, show_debugging_nhrp_cmd_vtysh, + "show debugging nhrp", + "Show running system information\n" + "Debugging information\n" + "NHRP configuration\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Any prefix match. Same as \"::0/0 le 128\"\n") + +DEFSH (0, no_ip_irdp_address_preference_cmd_vtysh, + "no ip irdp address A.B.C.D preference <0-2147483647>", + "Negate a command or set its defaults\n" + "IP information\n" + "Alter ICMP Router discovery preference this interface\n" + "Removes IRDP non-default preference\n" + "Select IRDP address\n" + "Old preference level\n") + +DEFSH (0, match_peer_cmd_vtysh, + "match peer (A.B.C.D|X:X::X:X)", + "Match values from routing table\n" + "Match peer address\n" + "IP address of peer\n" + "IPv6 address of peer\n") + +DEFSH (0, no_debug_ospf6_flooding_cmd_vtysh, + "no debug ospf6 flooding", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 flooding function\n" + ) + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, 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 (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_spf_interval_arg_cmd_vtysh, + "no spf-interval <1-120>", + "Negate a command or set its defaults\n" + "Minimum interval between SPF calculations\n" + "Minimum interval between consecutive SPFs in seconds\n") + +DEFSH (0, 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 (0, no_shutdown_if_cmd_vtysh, + "no shutdown", + "Negate a command or set its defaults\n" + "Shutdown the selected interface\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv4_vpn_neighbor_routes_cmd_vtysh, + "show bgp ipv4 vpn neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific 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 (0, no_ipv6_nd_suppress_ra_cmd_vtysh, + "no ipv6 nd suppress-ra", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Suppress Router Advertisement\n") + +DEFSH (0, show_bgp_statistics_view_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (encap|multicast|unicast|vpn) statistics", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "Address family\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "BGP RIB advertisement statistics\n") + +DEFSH (0, bgp_redistribute_ipv4_metric_cmd_vtysh, + "redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " metric <0-4294967295>", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_vpn_rd_neighbor_routes_cmd_vtysh, + "show bgp ipv6 vpn rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family modifier\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 (0, 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 (0, ip_ospf_mtu_ignore_addr_cmd_vtysh, + "ip ospf mtu-ignore A.B.C.D", + "IP Information\n" + "OSPF interface commands\n" + "Disable mtu mismatch detection\n" + "Address of interface") + +DEFSH (0, 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 (0, router_ospf_id_cmd_vtysh, + "router-id A.B.C.D", + "router-id for the OSPF process\n" + "OSPF router-id in IP address format\n") + +DEFSH (0, no_ipv6_route_ifname_flags_pref_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n") + +DEFSH (0, no_ip_mroute_dist_cmd_vtysh, + "no ip mroute A.B.C.D/M (A.B.C.D|INTERFACE) <1-255>", + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n" + "Distance\n") + +DEFSH (0, show_ip_bgp_lcommunity_list_cmd_vtysh, + "show ip bgp large-community-list (<1-500>|WORD)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the large-community-list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0, 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 (0, 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 (0|0, 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 (0, clear_ip_bgp_as_vpnv4_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, max_lsp_lifetime_cmd_vtysh, + "max-lsp-lifetime <350-65535>", + "Maximum LSP lifetime\n" + "LSP lifetime in seconds\n") + +DEFSH (0, no_ripng_offset_list_ifname_cmd_vtysh, + "no offset-list WORD (in|out) <0-16> IFNAME", + "Negate a command or set its defaults\n" + "Modify RIPng metric\n" + "Access-list name\n" + "For incoming updates\n" + "For outgoing updates\n" + "Metric value\n" + "Interface to match\n") + +DEFSH (0, bgp_confederation_peers_cmd_vtysh, + "bgp confederation peers ." "<1-4294967295>", + "BGP specific commands\n" + "AS confederation parameters\n" + "Peer ASs in BGP confederation\n" + "AS number\n") + +DEFSH (0, 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 (0, ripng_redistribute_type_routemap_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)" " route-map WORD", + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, clear_bgp_instance_peer_rsclient_cmd_vtysh, + "clear bgp view WORD (A.B.C.D|X:X::X:X) rsclient", + "Reset functions\n" + "BGP information\n" + "BGP view\n" + "view name\n" + "BGP neighbor IP address to clear\n" + "BGP IPv6 neighbor to clear\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, show_interface_vrf_all_cmd_vtysh, + "show interface " "vrf all", + "Show running system information\n" + "Interface status and configuration\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, show_ipv6_route_summary_prefix_vrf_all_cmd_vtysh, + "show ipv6 route summary prefix " "vrf all", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Summary of all IPv6 routes\n" + "Prefix routes\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, ospf_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 (0, no_debug_bgp_as4_cmd_vtysh, + "no debug bgp as4", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP AS4 actions\n") + +DEFSH (0, 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 (0|0|0|0|0|0, rmap_onmatch_next_cmd_vtysh, + "on-match next", + "Exit policy on matches\n" + "Next clause\n") + +DEFSH (0, vty_no_restricted_mode_cmd_vtysh, + "no anonymous restricted", + "Negate a command or set its defaults\n" + "Enable password checking\n") + +DEFSH (0, 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 (0, set_lcommunity_delete_cmd_vtysh, + "set large-comm-list (<1-99>|<100-500>|WORD) delete", + "Set values in destination routing protocol\n" + "set BGP large community list (for deletion)\n" + "Large Community-list number (standard)\n" + "Large Communitly-list number (expanded)\n" + "Large Community-list name\n" + "Delete matching large communities\n") + +DEFSH (0, 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 (0, no_router_bgp_view_cmd_vtysh, + "no router bgp " "<1-4294967295>" " 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 (0, no_ipv6_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 (0, show_ipv6_ospf6_database_adv_router_cmd_vtysh, + "show ipv6 ospf6 database adv-router A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + ) + +DEFSH (0, no_pce_neighbor_cmd_vtysh, + "no pce neighbor as <0-65535>", + "Negate a command or set its defaults\n" + "PCE Router Information specific commands\n" + "Disable PCE neighbor AS number\n" + "AS number of PCE neighbor\n" + "AS number in decimal <0-65535>\n") + +DEFSH (0, ip_ssmpingd_cmd_vtysh, + "ip ssmpingd [A.B.C.D]", + "IP information\n" + "Enable ssmpingd operation\n" + "Source address\n") + +DEFSH (0, show_ip_pim_local_membership_cmd_vtysh, + "show ip pim local-membership", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface local-membership\n") + +DEFSH (0, 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 (0, no_ospf_mpls_te_cmd_vtysh, + "no mpls-te", + "Negate a command or set its defaults\n" + "Disable the MPLS-TE functionality\n") + +DEFSH (0, show_ip_ospf_mpls_te_router_cmd_vtysh, + "show ip ospf mpls-te router", + "Show running system information\n" + "IP information\n" + "OSPF information\n" + "MPLS-TE information\n" + "MPLS-TE Router parameters\n") + +DEFSH (0, show_bgp_ipv4_safi_community3_exact_cmd_vtysh, + "show 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" + "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 (0, 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 (0, show_bgp_ipv6_vpn_prefix_cmd_vtysh, + "show bgp ipv6 vpn X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, ospf_area_authentication_message_digest_cmd_vtysh, + "area (A.B.C.D|<0-4294967295>) authentication message-digest", + "OSPF area parameters\n" + "OSPF area ID in IP address format\n" + "OSPF area ID as a decimal value\n" + "Enable authentication\n" + "Use message-digest authentication\n") + +DEFSH (0, 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 (0, 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 (0, no_lsp_refresh_interval_cmd_vtysh, + "no lsp-refresh-interval", + "Negate a command or set its defaults\n" + "LSP refresh interval in seconds\n") + +DEFSH (0, show_ipv6_ospf6_database_id_cmd_vtysh, + "show ipv6 ospf6 database * A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Any Link state Type\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, show_bgp_lcommunity2_cmd_vtysh, + "show bgp large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, ip_route_tag_distance_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) tag <1-4294967295> <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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, 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 (0, no_ip_irdp_cmd_vtysh, + "no ip irdp", + "Negate a command or set its defaults\n" + "IP information\n" + "Disable ICMP Router discovery on this interface\n") + +DEFSH (0, no_vty_ipv6_access_class_cmd_vtysh, + "no ipv6 access-class [WORD]", + "Negate a command or set its defaults\n" + "IPv6 information\n" + "Filter connections based on an IP access list\n" + "IPv6 access list\n") + +DEFSH (0, debug_ospf_lsa_cmd_vtysh, + "debug ospf lsa", + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF Link State Advertisement\n") + +DEFSH (0, 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 (0|0|0|0, 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 (0, no_ip_ospf_cost_u32_cmd_vtysh, + "no ip ospf cost <1-65535>", + "Negate a command or set its defaults\n" + "IP Information\n" + "OSPF interface commands\n" + "Interface cost\n" + "Cost") + +DEFSH (0, clear_ip_bgp_as_vpnv4_soft_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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 inbound and outbound updates\n") + +DEFSH (0, encap_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 /, e.g., 35.0.0.0/8\n" + "Specify Route Distinguisher\n" + "ENCAP Route Distinguisher\n" + "BGP tag\n" + "tag value\n") + +DEFSH (0, neighbor_peer_group_cmd_vtysh, + "neighbor WORD peer-group", + "Specify neighbor router\n" + "Neighbor tag\n" + "Configure peer-group\n") + +DEFSH (0, show_ipv6_mroute_cmd_vtysh, + "show ipv6 mroute", + "Show running system information\n" + "IP information\n" + "IPv6 Multicast routing table\n") + +DEFSH (0, debug_igmp_cmd_vtysh, + "debug igmp", + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n") + +DEFSH (0, router_info_as_cmd_vtysh, + "router-info as", + "OSPF Router Information specific commands\n" + "Enable the Router Information functionality with AS flooding scope\n") + +DEFSH (0, show_ip_route_summary_prefix_cmd_vtysh, + "show ip route summary prefix", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Summary of all routes\n" + "Prefix routes\n") + +DEFSH (0, rip_distance_cmd_vtysh, + "distance <1-255>", + "Administrative distance\n" + "Distance value\n") + +DEFSH (0, show_ip_igmp_querier_cmd_vtysh, + "show ip igmp querier", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP querier information\n") + +DEFSH (0, no_psnp_interval_arg_cmd_vtysh, + "no isis psnp-interval <1-120>", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "PSNP interval value\n") + +DEFSH (0, no_ipv6_route_ifname_tag_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, area_passwd_md5_cmd_vtysh, + "(area-password|domain-password) md5 WORD", + "Configure the authentication password for an area\n" + "Set the authentication password for a routing domain\n" + "Authentication type\n" + "Level-wide password\n") + +DEFSH (0, 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 (0, no_debug_isis_events_cmd_vtysh, + "no debug isis events", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS Events\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, show_bgp_lcommunity4_cmd_vtysh, + "show bgp large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, 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 (0, show_interface_cmd_vtysh, + "show interface", + "Show running system information\n" + "Interface status and configuration\n") + +DEFSH (0, ipv6_route_pref_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, ipv6_route_pref_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295> <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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0, show_bgp_view_neighbor_received_routes_cmd_vtysh, + "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) received-routes", + "Show running system 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" + "Display the received routes from neighbor\n") + +DEFSH (0, show_bgp_ipv6_community_list_exact_cmd_vtysh, + "show bgp ipv6 community-list (<1-500>|WORD) exact-match", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n" + "Exact match of the communities\n") + +DEFSH (0, no_lsp_refresh_interval_l2_cmd_vtysh, + "no lsp-refresh-interval level-2", + "Negate a command or set its defaults\n" + "LSP refresh interval for Level 2 only in seconds\n") + +DEFSH (0, 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 (0, show_ipv6_ospf6_route_match_detail_cmd_vtysh, + "show ipv6 ospf6 route X:X::X:X/M match detail", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Routing Table\n" + "Specify IPv6 prefix\n" + "Display routes which match the specified route\n" + "Detailed information\n" + ) + +DEFSH (0, lsp_gen_interval_l1_cmd_vtysh, + "lsp-gen-interval level-1 <1-120>", + "Minimum interval between regenerating same LSP\n" + "Set interval for level 1 only\n" + "Minimum interval in seconds\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_cmd_vtysh, + "show bgp", + "Show running system information\n" + "BGP information\n") + +DEFSH (0, 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 (0, 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 inbound and outbound updates\n") + +DEFSH (0, clear_ip_bgp_all_encap_in_cmd_vtysh, + "clear ip bgp * encap 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 (0, no_bgp_bestpath_aspath_confed_cmd_vtysh, + "no bgp bestpath as-path confed", + "Negate a command or set its defaults\n" + "BGP specific commands\n" + "Change the default bestpath selection\n" + "AS-path attribute\n" + "Compare path lengths including confederation sets & sequences in selecting a route\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, 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 (0, undebug_pim_packetdump_send_cmd_vtysh, + "undebug pim packet-dump send", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n" + "PIM packet dump\n" + "Dump sent packets\n") + +DEFSH (0, ospf6_distance_ospf6_inter_cmd_vtysh, + "distance ospf6 inter-area <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "Inter-area routes\n" + "Distance for inter-area routes\n") + +DEFSH (0, show_bgp_ipv4_safi_community_exact_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) community (AA:NN|local-AS|no-advertise|no-export) exact-match", + "Show running system 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 (0|0|0|0, 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 (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0, link_params_pkt_loss_cmd_vtysh, + "packet-loss PERCENTAGE", + "Unidirectional Link Packet Loss\n" + "percentage of total traffic by 0.000003tep and less than 50.331642%\n") + +DEFSH (0, show_bgp_lcommunity_list_cmd_vtysh, + "show bgp large-community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "Display routes matching the large-community-list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0, ip_route_mask_flags2_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole) " "vrf <0-65535>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, ip_route_mask_flags_distance_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ipv6_nd_mtu_cmd_vtysh, + "ipv6 nd mtu <1-65535>", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Advertised MTU\n" + "MTU in bytes\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_community4_exact_cmd_vtysh, + "show bgp ipv4 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" + "IP 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 (0, no_ip_route_flags2_tag_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n") + +DEFSH (0, show_database_cmd_vtysh, + "show isis database", + "Show running system information\n" + "IS-IS information\n" + "IS-IS link state database\n") + +DEFSH (0, interface_ip_mroute_source_cmd_vtysh, + "ip mroute INTERFACE A.B.C.D A.B.C.D", + "IP information\n" + "Add multicast route\n" + "Outgoing interface name\n" + "Group address\n" + "Source address\n") + +DEFSH (0, debug_ospf6_brouter_router_cmd_vtysh, + "debug ospf6 border-routers router-id A.B.C.D", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug border router\n" + "Debug specific border router\n" + "Specify border-router's router-id\n" + ) + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv6_safi_route_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) X:X::X:X", + "Show running system 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 (0, 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 (0, show_ipv6_route_prefix_vrf_all_cmd_vtysh, + "show ipv6 route X:X::X:X/M " "vrf all", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "IPv6 prefix\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0|0, 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 (0, if_no_nhrp_reg_flags_cmd_vtysh, + "no " "(ip|ipv6)" " nhrp registration (no-unique)", + "Negate a command or set its defaults\n" + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Registration configuration\n" + "Don't set unique flag\n") + +DEFSH (0, no_rip_timers_val_cmd_vtysh, + "no timers basic <0-65535> <0-65535> <0-65535>", + "Negate a command or set its defaults\n" + "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 (0, show_bgp_ipv6_rsclient_prefix_cmd_vtysh, + "show bgp ipv6 rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") + +DEFSH (0, ospf_compatible_rfc1583_cmd_vtysh, + "compatible rfc1583", + "OSPF compatibility list\n" + "compatible with RFC 1583\n") + +DEFSH (0, ospf6_distance_ospf6_inter_external_cmd_vtysh, + "distance ospf6 inter-area <1-255> external <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "Inter-area routes\n" + "Distance for inter-area routes\n" + "External routes\n" + "Distance for external routes\n") + +DEFSH (0|0|0|0, 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 (0, show_bgp_ipv6_vpn_route_cmd_vtysh, + "show bgp ipv6 vpn X:X::X:X", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, ipv6_route_ifname_pref_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, no_ipv6_nd_reachable_time_val_cmd_vtysh, + "no ipv6 nd reachable-time <1-3600000>", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Reachable time\n" + "Reachable time in milliseconds\n") + +DEFSH (0, isis_priority_l2_cmd_vtysh, + "isis priority <0-127> level-2", + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Priority value\n" + "Specify priority for level-2 routing\n") + +DEFSH (0|0, no_match_ipv6_address_val_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 (0, show_ipv6_ospf6_database_type_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, show_ipv6_ospf6_route_detail_cmd_vtysh, + "show ipv6 ospf6 route (X:X::X:X|X:X::X:X/M|detail|summary)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Routing Table\n" + "Specify IPv6 address\n" + "Specify IPv6 prefix\n" + "Detailed information\n" + "Summary of route table\n" + ) + +DEFSH (0, no_ip_lcommunity_list_name_expanded_all_cmd_vtysh, + "no ip large-community-list expanded WORD", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Specify expanded large-community-list\n" + "Large Community list name\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_lcommunity3_cmd_vtysh, + "show bgp ipv4 large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, clear_nhrp_cmd_vtysh, + "clear " "(ip|ipv6)" " nhrp (cache|shortcut)", + "Reset functions\n" + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Dynamic cache entries\n" + "Shortcut entries\n") + +DEFSH (0, show_ip_as_path_access_list_cmd_vtysh, + "show ip as-path-access-list WORD", + "Show running system information\n" + "IP information\n" + "List AS path access lists\n" + "AS path access list name\n") + +DEFSH (0, no_ip_route_flags_tag_distance2_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_ospf_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 (0, no_set_aspath_prepend_val_cmd_vtysh, + "no set as-path prepend ." "<1-4294967295>", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "Transform BGP AS_PATH attribute\n" + "Prepend to the as-path\n" + "AS number\n") + +DEFSH (0, no_ipv6_nd_homeagent_lifetime_val_cmd_vtysh, + "no ipv6 nd home-agent-lifetime <0-65520>", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent lifetime\n" + "Home Agent lifetime in seconds (0 to track ra-lifetime)\n") + +DEFSH (0, no_ip_route_flags_distance_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv4_community3_cmd_vtysh, + "show bgp ipv4 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" + "IP 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 (0, no_ipv6_route_ifname_pref_tag_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, neighbor_local_as_no_prepend_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as " "<1-4294967295>" " 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 (0, no_debug_isis_snp_cmd_vtysh, + "no debug isis snp-packets", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS CSNP/PSNP packets\n") + +DEFSH (0, show_bgp_ipv6_safi_prefix_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) prefix-list WORD", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0, no_isis_hello_interval_l1_arg_cmd_vtysh, + "no isis hello-interval <1-600> level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set Hello interval\n" + "Hello interval value\n" + "Holdtime 1 second, interval depends on multiplier\n" + "Specify hello-interval for level-1 IIHs\n") + +DEFSH (0, show_ip_bgp_ipv4_community_list_exact_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) community-list (<1-500>|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 number\n" + "community-list name\n" + "Exact match of the communities\n") + +DEFSH (0, interface_ip_igmp_join_cmd_vtysh, + "ip igmp join A.B.C.D A.B.C.D", + "IP information\n" + "Enable IGMP operation\n" + "IGMP join multicast group\n" + "Multicast group address\n" + "Source address\n") + +DEFSH (0, 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 detailed information\n") + +DEFSH (0, no_ip_mroute_vrf_cmd_vtysh, + "no ip mroute A.B.C.D/M (A.B.C.D|INTERFACE) " "vrf <0-65535>", + "Negate a command or set its defaults\n" + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, set_aggregator_as_cmd_vtysh, + "set aggregator as " "<1-4294967295>" " 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 (0, 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 (0, show_bgp_statistics_cmd_vtysh, + "show bgp (ipv4|ipv6) (encap|multicast|unicast|vpn) statistics", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "BGP RIB advertisement statistics\n") + +DEFSH (0, 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 (0, tunnel_protection_cmd_vtysh, + "tunnel protection vici profile PROFILE {fallback-profile FALLBACK}", + "NHRP/GRE integration\n" + "IPsec protection\n" + "VICI (StrongSwan)\n" + "IPsec profile\n" + "IPsec profile name\n" + "Fallback IPsec profile\n" + "Fallback IPsec profile name\n") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "First matched prefix\n") + +DEFSH (0, 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 (0, 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 (0, neighbor_timers_connect_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "timers connect <1-65535>", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "BGP per neighbor timers\n" + "BGP connect timer\n" + "Connect timer\n") + +DEFSH (0, no_match_probability_cmd_vtysh, + "no match probability", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match portion of routes defined by percentage value\n") + +DEFSH (0, no_debug_ospf6_abr_cmd_vtysh, + "no debug ospf6 abr", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 ABR function\n" + ) + +DEFSH (0, show_ip_pim_upstream_cmd_vtysh, + "show ip pim upstream", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM upstream information\n") + +DEFSH (0, 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 extended community\n" + "VPN extended community\n") + +DEFSH (0, ipv6_ospf6_hellointerval_cmd_vtysh, + "ipv6 ospf6 hello-interval <1-65535>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interval time of Hello packets\n" + "<1-65535> Seconds\n" + ) + +DEFSH (0, no_ipv6_ospf6_ifmtu_cmd_vtysh, + "no ipv6 ospf6 ifmtu", + "Negate a command or set its defaults\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface MTU\n" + ) + +DEFSH (0, show_ipv6_route_vrf_all_cmd_vtysh, + "show ipv6 route " "vrf all", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, show_bgp_view_ipv6_safi_rsclient_prefix_cmd_vtysh, + "show bgp view WORD ipv6 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IP prefix /, e.g., 3ffe::/16\n") + +DEFSH (0, 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 (0, show_bgp_view_afi_safi_community2_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) 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" + "BGP view\n" + "View name\n" + "Address family\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 (0, no_neighbor_local_as_val3_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as " "<1-4294967295>" " no-prepend replace-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" + "AS number used as local AS\n" + "Do not prepend local-as to updates from ebgp peers\n" + "Do not prepend local-as to updates from ibgp peers\n") + +DEFSH (0, ospf_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 (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0, config_table_cmd_vtysh, + "table TABLENO", + "Configure target kernel routing table\n" + "TABLE integer\n") + +DEFSH (0, show_bgp_ipv6_safi_rsclient_summary_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) rsclient summary", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, show_ip_bgp_ipv4_lcommunity4_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "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 large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, area_export_list_cmd_vtysh, + "area A.B.C.D export-list NAME", + "OSPFv6 area parameters\n" + "OSPFv6 area ID in IP address format\n" + "Set the filter for networks announced to other areas\n" + "Name of the acess-list\n") + +DEFSH (0, clear_ip_bgp_instance_peer_rsclient_cmd_vtysh, + "clear ip bgp view WORD (A.B.C.D|X:X::X:X) rsclient", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "BGP view\n" + "view name\n" + "BGP neighbor IP address to clear\n" + "BGP IPv6 neighbor to clear\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0|0|0|0|0|0, 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 (0, 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 (0, show_ip_ospf_neighbor_int_detail_cmd_vtysh, + "show ip ospf neighbor IFNAME detail", + "Show running system information\n" + "IP information\n" + "OSPF information\n" + "Neighbor list\n" + "Interface name\n" + "detail of all neighbors") + +DEFSH (0, show_ip_route_summary_cmd_vtysh, + "show ip route summary", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Summary of all routes\n") + +DEFSH (0, show_bgp_ipv6_safi_damp_dampened_paths_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening dampened-paths", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display paths suppressed due to dampening\n") + +DEFSH (0, 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 (0, 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 (0, no_ip_route_mask_flags_distance_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) <1-255> " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ipv6_ripng_split_horizon_poisoned_reverse_cmd_vtysh, + "ipv6 ripng split-horizon poisoned-reverse", + "IPv6 information\n" + "Routing Information Protocol\n" + "Perform split horizon\n" + "With poisoned-reverse\n") + +DEFSH (0, undebug_pim_trace_cmd_vtysh, + "undebug pim trace", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n" + "PIM internal daemon activity\n") + +DEFSH (0, clear_ip_bgp_peer_encap_in_cmd_vtysh, + "clear ip bgp A.B.C.D encap 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 (0, isis_hello_multiplier_l1_cmd_vtysh, + "isis hello-multiplier <2-100> level-1", + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Hello multiplier value\n" + "Specify hello multiplier for level-1 IIHs\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_safi_flap_prefix_list_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics prefix-list WORD", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display flap statistics of routes\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0, no_debug_ospf6_zebra_cmd_vtysh, + "no debug ospf6 zebra", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug connection between zebra\n" + ) + +DEFSH (0, 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 (0, no_bgp_confederation_peers_cmd_vtysh, + "no bgp confederation peers ." "<1-4294967295>", + "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 (0, 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 /\n") + +DEFSH (0, ipv6_nd_ra_interval_msec_cmd_vtysh, + "ipv6 nd ra-interval msec <70-1800000>", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router Advertisement interval\n" + "Router Advertisement interval in milliseconds\n") + +DEFSH (0, 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 (0, ospf_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 (0, 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 (0, lsp_refresh_interval_cmd_vtysh, + "lsp-refresh-interval <1-65235>", + "LSP refresh interval\n" + "LSP refresh interval in seconds\n") + +DEFSH (0, no_ipv6_nd_router_preference_cmd_vtysh, + "no ipv6 nd router-preference", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Default router preference\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, show_bgp_ipv4_encap_tags_cmd_vtysh, + "show bgp ipv4 encap tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, no_csnp_interval_arg_cmd_vtysh, + "no isis csnp-interval <1-600>", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "CSNP interval value\n") + +DEFSH (0, show_ipv6_ospf6_database_type_id_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, no_spf_interval_cmd_vtysh, + "no spf-interval", + "Negate a command or set its defaults\n" + "Minimum interval between SPF calculations\n") + +DEFSH (0|0|0|0, 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 (0, show_ipv6_ospf6_linkstate_network_cmd_vtysh, + "show ipv6 ospf6 linkstate network A.B.C.D A.B.C.D", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display linkstate routing table\n" + "Display Network Entry\n" + "Specify Router ID as IPv4 address notation\n" + "Specify Link state ID as IPv4 address notation\n" + ) + +DEFSH (0, 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 (0, 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 (0, 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 (0, no_ipv6_route_ifname_flags_pref_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0, ospf_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 (0, no_ipv6_route_flags_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, no_ip_route_flags_distance_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, no_debug_isis_rtevents_cmd_vtysh, + "no debug isis route-events", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS Route related events\n") + +DEFSH (0, ospf6_distance_ospf6_inter_external_intra_cmd_vtysh, + "distance ospf6 inter-area <1-255> external <1-255> intra-area <1-255>", + "Define an administrative distance\n" + "OSPF6 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 (0, show_bgp_summary_1w_cmd_vtysh, + "show bgp (ipv4|ipv6|unicast|multicast|vpn|encap) summary", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "IPv6 Information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, 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 (0, no_ip_router_isis_cmd_vtysh, + "no (ip|ipv6) router isis WORD", + "Negate a command or set its defaults\n" + "Interface Internet Protocol config commands\n" + "IP router interface commands\n" + "IS-IS Routing for IP\n" + "Routing process tag\n") + +DEFSH (0, show_ip_pim_hello_cmd_vtysh, + "show ip pim hello", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface hello information\n") + +DEFSH (0, max_lsp_lifetime_l1_cmd_vtysh, + "max-lsp-lifetime level-1 <350-65535>", + "Maximum LSP lifetime for Level 1 only\n" + "LSP lifetime for Level 1 only in seconds\n") + +DEFSH (0, show_bgp_ipv6_lcommunity_cmd_vtysh, + "show bgp ipv6 large-community (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, show_ip_bgp_damp_flap_filter_list_cmd_vtysh, + "show ip bgp dampening flap-statistics filter-list WORD", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, show_bgp_ipv4_safi_damp_flap_cidr_only_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening flap-statistics cidr-only", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display only routes with non-natural netmasks\n") + +DEFSH (0, 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 (0, no_set_lcommunity_val_cmd_vtysh, + "no set large-community .AA:BB:CC", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "BGP large community attribute\n" + "Large community in .AA:BB:CC format or additive\n") + +DEFSH (0, ip_route_flags_distance2_cmd_vtysh, + "ip route A.B.C.D/M (reject|blackhole) <1-255>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, no_ip_route_mask_flags_tag_distance2_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "Negate a command or set its defaults\n" + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, multicast_cmd_vtysh, + "multicast", + "Set multicast flag to interface\n") + +DEFSH (0, show_bgp_ipv4_safi_regexp_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) regexp .LINE", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\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 (0, show_hostname_cmd_vtysh, + "show isis hostname", + "Show running system information\n" + "IS-IS information\n" + "IS-IS Dynamic hostname mapping\n") + +DEFSH (0, ripng_route_cmd_vtysh, + "route IPV6ADDR", + "Static route setup\n" + "Set static RIPng route announcement\n") + +DEFSH (0, ip_ospf_cost_u32_cmd_vtysh, + "ip ospf cost <1-65535>", + "IP Information\n" + "OSPF interface commands\n" + "Interface cost\n" + "Cost") + +DEFSH (0, no_ospf_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 (0, 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 (0, show_bgp_rsclient_cmd_vtysh, + "show bgp rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, ip_route_flags_tag_distance_vrf_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ip_route_flags_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, show_bgp_ipv6_encap_neighbor_routes_cmd_vtysh, + "show bgp ipv6 encap neighbors A.B.C.D routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Detailed information on TCP and BGP neighbor connections\n" + "Neighbor to display information about\n" + "Display routes learned from neighbor\n") + +DEFSH (0, show_ip_igmp_groups_cmd_vtysh, + "show ip igmp groups", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP groups information\n") + +DEFSH (0, no_debug_zebra_rib_cmd_vtysh, + "no debug zebra rib", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug zebra RIB\n") + +DEFSH (0, 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 (0, ip_rip_authentication_mode_authlen_cmd_vtysh, + "ip rip authentication mode (md5|text) auth-length (rfc|old-ripd)", + "IP information\n" + "Routing Information Protocol\n" + "Authentication control\n" + "Authentication mode\n" + "Keyed message digest\n" + "Clear text authentication\n" + "MD5 authentication data length\n" + "RFC compatible\n" + "Old ripd compatible\n") + +DEFSH (0, 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 (0, debug_ospf6_message_sendrecv_cmd_vtysh, + "debug ospf6 message (unknown|hello|dbdesc|lsreq|lsupdate|lsack|all) (send|recv)", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 message\n" + "Debug Unknown message\n" + "Debug Hello message\n" + "Debug Database Description message\n" + "Debug Link State Request message\n" + "Debug Link State Update message\n" + "Debug Link State Acknowledgement message\n" + "Debug All message\n" + "Debug only sending message\n" + "Debug only receiving message\n" + ) + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv4_vpn_cmd_vtysh, + "show bgp ipv4 vpn", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n") + +DEFSH (0, 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 (0, no_vrf_netns_cmd_vtysh, + "no vrf <1-65535> netns NAME", + "Negate a command or set its defaults\n" + "Enable a VRF\n" + "Specify the VRF identifier\n" + "Associate with a NETNS\n" + "The file name in " "/var/run/netns" ", or a full pathname\n") + +DEFSH (0, 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 (0, show_ipv6_route_prefix_longer_vrf_all_cmd_vtysh, + "show ipv6 route X:X::X:X/M longer-prefixes " "vrf all", + "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" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, no_ip_ospf_hello_interval_addr_cmd_vtysh, + "no ip ospf hello-interval <1-65535> A.B.C.D", + "Negate a command or set its defaults\n" + "IP Information\n" + "OSPF interface commands\n" + "Time between HELLO packets\n" + "Seconds\n" + "Address of interface") + +DEFSH (0, ip_route_flags_tag_distance2_vrf_cmd_vtysh, + "ip route A.B.C.D/M (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, ip_route_flags2_vrf_cmd_vtysh, + "ip route A.B.C.D/M (reject|blackhole) " "vrf <0-65535>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0|0|0|0|0|0, set_metric_cmd_vtysh, + "set metric <0-4294967295>", + "Set value\n" + "Metric value for destination routing protocol\n" + "Metric value\n") + +DEFSH (0, show_bgp_ipv6_vpn_cmd_vtysh, + "show bgp ipv6 vpn", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\n") + +DEFSH (0, show_ip_ospf_database_type_adv_router_cmd_vtysh, + "show ip ospf database (" "asbr-summary|external|network|router|summary" "|nssa-external" "|opaque-link|opaque-area|opaque-as" ") 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" "NSSA external link state\n" "Link local Opaque-LSA\n" "Link area Opaque-LSA\n" "Link AS Opaque-LSA\n" + "Advertising Router link states\n" + "Advertising Router (as an IP address)\n") + +DEFSH (0, debug_isis_lsp_sched_cmd_vtysh, + "debug isis lsp-sched", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS scheduling of LSP generation\n") + +DEFSH (0, show_bgp_view_ipv6_neighbor_routes_cmd_vtysh, + "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\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 (0, 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 (0, 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 (0, 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 (0, show_bgp_ipv4_safi_rd_route_cmd_vtysh, + "show bgp ipv4 (encap|vpn) rd ASN:nn_or_IP-address:nn A.B.C.D", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, no_match_local_pref_cmd_vtysh, + "no match local-preference", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match local preference of route\n") + +DEFSH (0, debug_isis_snp_cmd_vtysh, + "debug isis snp-packets", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS CSNP/PSNP packets\n") + +DEFSH (0, clear_ip_bgp_as_ipv4_in_prefix_filter_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, show_ip_bgp_community_list_cmd_vtysh, + "show ip bgp community-list (<1-500>|WORD)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n") + +DEFSH (0|0|0|0|0|0, no_rmap_onmatch_goto_cmd_vtysh, + "no on-match goto", + "Negate a command or set its defaults\n" + "Exit policy on matches\n" + "Goto Clause number\n") + +DEFSH (0, clear_ip_pim_oil_cmd_vtysh, + "clear ip pim oil", + "Reset functions\n" + "IP information\n" + "PIM clear commands\n" + "Rescan PIM OIL (output interface list)\n") + +DEFSH (0, show_ipv6_ospf6_database_adv_router_linkstate_id_detail_cmd_vtysh, + "show ipv6 ospf6 database adv-router A.B.C.D linkstate-id A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, ospf_max_metric_router_lsa_admin_cmd_vtysh, + "max-metric router-lsa administrative", + "OSPF maximum / infinite-distance metric\n" + "Advertise own Router-LSA with infinite distance (stub router)\n" + "Administratively applied, for an indefinite period\n") + +DEFSH (0, no_bgp_redistribute_ipv6_metric_rmap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " metric <0-4294967295> route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, show_bgp_ipv6_safi_community4_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) 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" + "Address family modifier\n" + "Address family modifier\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 (0, show_ip_bgp_prefix_pathtype_cmd_vtysh, + "show ip bgp A.B.C.D/M (bestpath|multipath)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, show_ipv6_ospf6_database_type_adv_router_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) adv-router A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0|0|0, match_metric_cmd_vtysh, + "match metric <0-4294967295>", + "Match values from routing table\n" + "Match metric of route\n" + "Metric value\n") + +DEFSH (0, ip_route_mask_flags_tag_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, link_params_use_bw_cmd_vtysh, + "use-bw BANDWIDTH", + "Unidirectional Utilised Bandwidth\n" + "Bytes/second (IEEE floating point format)\n") + +DEFSH (0, ipv6_route_flags_pref_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ipv6_ospf6_database_router_detail_cmd_vtysh, + "show ipv6 ospf6 database * * A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Any Link state Type\n" + "Any Link state ID\n" + "Specify Advertising Router as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 (0, 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 /, e.g., 3ffe::/16\n") + +DEFSH (0, 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 (0, clear_ip_bgp_all_encap_soft_out_cmd_vtysh, + "clear ip bgp * encap 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 (0, 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 (0, ospf6_router_id_cmd_vtysh, + "router-id A.B.C.D", + "Configure OSPF Router-ID\n" + "specify by IPv4 address notation(e.g. 0.0.0.0)\n") + +DEFSH (0, show_ip_pim_rpf_cmd_vtysh, + "show ip pim rpf", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM cached source rpf information\n") + +DEFSH (0, no_ip_community_list_name_standard_all_cmd_vtysh, + "no ip community-list standard 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" + "Community list name\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0|0|0|0|0|0, rmap_call_cmd_vtysh, + "call WORD", + "Jump to another Route-Map after match+set\n" + "Target route-map name\n") + +DEFSH (0, 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 (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Maximum prefix length to be matched\n" + "Maximum prefix length\n") + +DEFSH (0, no_debug_pim_packets_filter_cmd_vtysh, + "no debug pim packets (hello|joins)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM protocol packets\n" + "PIM Hello protocol packets\n" + "PIM Join/Prune protocol packets\n") + +DEFSH (0, 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 (0, spf_interval_cmd_vtysh, + "spf-interval <1-120>", + "Minimum interval between SPF calculations\n" + "Minimum interval between consecutive SPFs in seconds\n") + +DEFSH (0, clear_bgp_external_cmd_vtysh, + "clear bgp external", + "Reset functions\n" + "BGP information\n" + "Clear all external peers\n") + +DEFSH (0, if_no_nhrp_nhs_cmd_vtysh, + "no " "(ip|ipv6)" " nhrp nhs (A.B.C.D|X:X::X:X|dynamic) nbma (A.B.C.D|FQDN)", + "Negate a command or set its defaults\n" + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Nexthop Server configuration\n" + "IPv4 protocol address\n" + "IPv6 protocol address\n" + "Automatic detection of protocol address\n" + "IPv4 NBMA address\n" + "Fully qualified domain name for NBMA address(es)\n") + +DEFSH (0, 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 (0, 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 (0, no_nhrp_nflog_group_cmd_vtysh, + "no nhrp nflog-group [<1-65535>]", + "Negate a command or set its defaults\n" + "Next Hop Resolution Protocol functions\n" + "Specify NFLOG group number\n" + "NFLOG group number\n") + +DEFSH (0, ripng_default_metric_cmd_vtysh, + "default-metric <1-16>", + "Set a metric of redistribute routes\n" + "Default metric\n") + +DEFSH (0, 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 (0, neighbor_local_as_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as " "<1-4294967295>", + "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 (0, no_ipv6_route_tag_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_interface_name_vrf_all_cmd_vtysh, + "show interface IFNAME " "vrf all", + "Show running system information\n" + "Interface status and configuration\n" + "Interface name\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, vty_login_cmd_vtysh, + "login", + "Enable password checking\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, ip_irdp_address_preference_cmd_vtysh, + "ip irdp address A.B.C.D preference <0-2147483647>", + "IP information\n" + "Alter ICMP Router discovery preference this interface\n" + "Specify IRDP non-default preference to advertise\n" + "Set IRDP address for advertise\n" + "Preference level\n") + +DEFSH (0, debug_pim_zebra_cmd_vtysh, + "debug pim zebra", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "ZEBRA protocol activity\n") + +DEFSH (0, clear_bgp_external_out_cmd_vtysh, + "clear bgp external out", + "Reset functions\n" + "BGP information\n" + "Clear all external peers\n" + "Resend all outbound updates\n") + +DEFSH (0, ospf_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 (0, ipv6_ospf6_network_cmd_vtysh, + "ipv6 ospf6 network (broadcast|point-to-point)", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Network Type\n" + "Specify OSPFv6 broadcast network\n" + "Specify OSPF6 point-to-point network\n" + ) + +DEFSH (0, 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 (0, no_vty_access_class_cmd_vtysh, + "no access-class [WORD]", + "Negate a command or set its defaults\n" + "Filter connections based on an IP access list\n" + "IP access list\n") + +DEFSH (0|0|0|0|0, set_tag_cmd_vtysh, + "set tag <1-4294967295>", + "Set values in destination routing protocol\n" + "Tag value for routing protocol\n" + "Tag value\n") + +DEFSH (0, 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 (0, no_ipv6_route_ifname_flags_pref_tag_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-4294967295> <1-255>" "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, rip_network_cmd_vtysh, + "network (A.B.C.D/M|WORD)", + "Enable routing on an IP network\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Interface name\n") + +DEFSH (0, ip_lcommunity_list_expanded_cmd_vtysh, + "ip large-community-list <100-500> (deny|permit) .LINE", + "IP information\n" + "Add a large community list entry\n" + "Large Community list number (expanded)\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "An ordered list as a regular-expression\n") + +DEFSH (0, show_ip_route_summary_prefix_vrf_cmd_vtysh, + "show ip route summary prefix " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Summary of all routes\n" + "Prefix routes\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ip_ospf_database_type_cmd_vtysh, + "show ip ospf database (" "asbr-summary|external|network|router|summary" "|nssa-external" "|opaque-link|opaque-area|opaque-as" "|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" "NSSA external link state\n" "Link local Opaque-LSA\n" "Link area Opaque-LSA\n" "Link AS Opaque-LSA\n" + "LSAs in MaxAge list\n" + "Self-originated link states\n") + +DEFSH (0, show_bgp_ipv4_safi_community_list_exact_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) community-list (<1-500>|WORD) exact-match", + "Show running system 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 number\n" + "community-list name\n" + "Exact match of the communities\n") + +DEFSH (0, 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 (0, show_ipv6_ospf6_database_type_adv_router_linkstate_id_detail_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) " + "adv-router A.B.C.D linkstate-id A.B.C.D " + "(dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + "Search by Link state ID\n" + "Specify Link state ID as IPv4 address notation\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, if_rmap_cmd_vtysh, + "route-map RMAP_NAME (in|out) IFNAME", + "Route map set\n" + "Route map name\n" + "Route map set for input filtering\n" + "Route map set for output filtering\n" + "Route map interface name\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, aggregate_address_cmd_vtysh, + "aggregate-address A.B.C.D/M", + "Configure BGP aggregate entries\n" + "Aggregate prefix\n") + +DEFSH (0, 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 (0, is_type_cmd_vtysh, + "is-type (level-1|level-1-2|level-2-only)", + "IS Level for this routing process (OSI only)\n" + "Act as a station router only\n" + "Act as both a station router and an area router\n" + "Act as an area router only\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_safi_route_pathtype_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) A.B.C.D (bestpath|multipath)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, ipv6_route_ifname_tag_vrf_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, no_rip_distance_cmd_vtysh, + "no distance <1-255>", + "Negate a command or set its defaults\n" + "Administrative distance\n" + "Distance value\n") + +DEFSH (0, 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 (0, lsp_gen_interval_l2_cmd_vtysh, + "lsp-gen-interval level-2 <1-120>", + "Minimum interval between regenerating same LSP\n" + "Set interval for level 2 only\n" + "Minimum interval in seconds\n") + +DEFSH (0, 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 (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, show_bgp_ipv6_encap_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv6 encap neighbors A.B.C.D advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\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 (0, 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 (0, 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 (0, 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 (0, no_match_probability_val_cmd_vtysh, + "no match probability <1-99>", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match portion of routes defined by percentage value\n" + "Percentage of routes\n") + +DEFSH (0, show_bgp_ipv4_safi_lcommunity4_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, show_ipv6_ospf6_interface_prefix_detail_cmd_vtysh, + "show ipv6 ospf6 interface prefix (X:X::X:X|X:X::X:X/M|detail)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface information\n" + "Display connected prefixes to advertise\n" + "Display the route bestmatches the address\n" + "Display the route\n" + "Display details of the prefixes\n" + ) + +DEFSH (0, 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 (0, 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 (0, no_nhrp_event_socket_cmd_vtysh, + "no nhrp event socket [SOCKET]", + "Negate a command or set its defaults\n" + "Next Hop Resolution Protocol functions\n" + "Event Manager commands\n" + "Event Manager unix socket path\n" + "Unix path for the socket\n") + +DEFSH (0, show_bgp_lcommunity3_cmd_vtysh, + "show bgp large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, ipv6_ospf6_instance_cmd_vtysh, + "ipv6 ospf6 instance-id <0-255>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Instance ID for this interface\n" + "Instance ID value\n" + ) + +DEFSH (0|0|0|0, 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 /, 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 (0, dynamic_hostname_cmd_vtysh, + "hostname dynamic", + "Dynamic hostname for IS-IS\n" + "Dynamic hostname\n") + +DEFSH (0, no_ripng_allow_ecmp_cmd_vtysh, + "no allow-ecmp", + "Negate a command or set its defaults\n" + "Allow Equal Cost MultiPath\n") + +DEFSH (0, clear_bgp_as_soft_cmd_vtysh, + "clear bgp " "<1-4294967295>" " soft", + "Reset functions\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n") + +DEFSH (0, 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 (0, show_ip_igmp_sources_cmd_vtysh, + "show ip igmp sources", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP sources information\n") + +DEFSH (0, show_bgp_ipv4_vpn_prefix_cmd_vtysh, + "show bgp ipv4 vpn A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display VPN NLRI specific information\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_view_ipv6_neighbor_flap_cmd_vtysh, + "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) flap-statistics", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\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 dampened routes received from neighbor\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, pce_path_scope_cmd_vtysh, + "pce scope BITPATTERN", + "PCE Router Information specific commands\n" + "Path scope visibilities of the PCE for path computation\n" + "32-bit Hexadecimal value\n") + +DEFSH (0, show_bgp_ipv6_safi_community_exact_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) community (AA:NN|local-AS|no-advertise|no-export) exact-match", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\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 (0|0|0|0, 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 (0|0|0|0, 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 /, 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 (0, debug_ospf6_interface_cmd_vtysh, + "debug ospf6 interface", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 Interface\n" + ) + +DEFSH (0, no_ipv6_address_cmd_vtysh, + "no ipv6 address X:X::X:X/M", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Set the IP address of an interface\n" + "IPv6 address (e.g. 3ffe:506::1/48)\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, show_ipv6_ospf6_database_detail_cmd_vtysh, + "show ipv6 ospf6 database (detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 extended community\n" + "VPN extended community\n") + +DEFSH (0, ospf_distribute_list_out_cmd_vtysh, + "distribute-list WORD out " "(kernel|connected|static|rip|isis|bgp|pim|babel|nhrp)", + "Filter networks in routing updates\n" + "Access-list name\n" + "Filter outgoing routing updates\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, ospf_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 (0|0|0|0|0, 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 (0, clear_bgp_ipv6_all_in_cmd_vtysh, + "clear bgp ipv6 * in", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear all peers\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_ip_route_mask_flags_tag_distance2_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, ospf_hello_interval_cmd_vtysh, + "ospf hello-interval <1-65535>", + "OSPF interface commands\n" + "Time between HELLO packets\n" + "Seconds\n") + +DEFSH (0, 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 (0, set_attached_bit_cmd_vtysh, + "set-attached-bit", + "Set attached bit to identify as L1/L2 router for inter-area traffic\n" + "Set attached bit\n") + +DEFSH (0, ip_route_mask_tag_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) tag <1-4294967295>" "vrf <0-65535>", + "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" + "Set tag for this route\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0|0, 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 (0, no_debug_ospf6_message_cmd_vtysh, + "no debug ospf6 message (unknown|hello|dbdesc|lsreq|lsupdate|lsack|all)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 message\n" + "Debug Unknown message\n" + "Debug Hello message\n" + "Debug Database Description message\n" + "Debug Link State Request message\n" + "Debug Link State Update message\n" + "Debug Link State Acknowledgement message\n" + "Debug All message\n" + ) + +DEFSH (0, ospf_default_metric_cmd_vtysh, + "default-metric <0-16777214>", + "Set metric of redistributed routes\n" + "Default metric\n") + +DEFSH (0, show_bgp_ipv6_rsclient_summary_cmd_vtysh, + "show bgp ipv6 rsclient summary", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, show_ipv6_ospf6_linkstate_router_cmd_vtysh, + "show ipv6 ospf6 linkstate router A.B.C.D", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display linkstate routing table\n" + "Display Router Entry\n" + "Specify Router ID as IPv4 address notation\n" + ) + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Specify a BGP backdoor route\n") + +DEFSH (0, no_bgp_redistribute_ipv6_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, no_ip_route_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ip_bgp_ipv4_lcommunity2_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC)", + "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 large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, 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 (0, show_database_arg_detail_cmd_vtysh, + "show isis database WORD detail", + "Show running system information\n" + "IS-IS information\n" + "IS-IS link state database\n" + "LSP ID\n" + "Detailed information\n") + +DEFSH (0, ospf6_distance_source_cmd_vtysh, + "distance <1-255> X:X::X:X/M", + "Administrative distance\n" + "Distance value\n" + "IP source prefix\n") + +DEFSH (0, show_ipv6_ospf6_route_longer_detail_cmd_vtysh, + "show ipv6 ospf6 route X:X::X:X/M longer detail", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Routing Table\n" + "Specify IPv6 prefix\n" + "Display routes longer than the specified route\n" + "Detailed information\n" + ) + +DEFSH (0, 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 (0, 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 (0, debug_zebra_rib_q_cmd_vtysh, + "debug zebra rib queue", + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug RIB events\n" + "Debug RIB queueing\n") + +DEFSH (0, no_ip_route_mask_distance_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_isis_interface_detail_cmd_vtysh, + "show isis interface detail", + "Show running system information\n" + "ISIS network information\n" + "ISIS interface\n" + "show detailed information\n") + +DEFSH (0, show_bgp_ipv6_safi_damp_flap_route_map_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening flap-statistics route-map WORD", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes matching the route-map\n" + "A route-map to match on\n") + +DEFSH (0, ip_route_flags_tag_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, bgp_bestpath_aspath_multipath_relax_cmd_vtysh, + "bgp bestpath as-path multipath-relax", + "BGP specific commands\n" + "Change the default bestpath selection\n" + "AS-path attribute\n" + "Allow load sharing across routes that have different AS paths (but same length)\n") + +DEFSH (0, 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 (0, no_fpm_remote_ip_cmd_vtysh, + "no fpm connection ip A.B.C.D port <1-65535>", + "fpm connection remote ip and port\n" + "Connection\n" + "Remote fpm server ip A.B.C.D\n" + "Enter ip ") + +DEFSH (0, no_bgp_redistribute_ipv4_rmap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, shutdown_if_cmd_vtysh, + "shutdown", + "Shutdown the selected interface\n") + +DEFSH (0, clear_ip_bgp_as_soft_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " soft in", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_debug_isis_spfevents_cmd_vtysh, + "no debug isis spf-events", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS Shortest Path First Events\n") + +DEFSH (0, debug_ssmpingd_cmd_vtysh, + "debug ssmpingd", + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "ssmpingd activity\n") + +DEFSH (0, debug_bgp_as4_cmd_vtysh, + "debug bgp as4", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP AS4 actions\n") + +DEFSH (0, no_debug_zebra_nht_cmd_vtysh, + "no debug zebra nht", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug option set for zebra next hop tracking\n") + +DEFSH (0, if_nhrp_mtu_cmd_vtysh, + "ip nhrp mtu (<576-1500>|opennhrp)", + "IP information\n" + "Next Hop Resolution Protocol functions\n" + "Configure NHRP advertised MTU\n" + "MTU value\n" + "Advertise bound interface MTU similar to OpenNHRP") + +DEFSH (0, no_ip_rip_authentication_mode_type_authlen_cmd_vtysh, + "no ip rip authentication mode (md5|text) auth-length (rfc|old-ripd)", + "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" + "MD5 authentication data length\n" + "RFC compatible\n" + "Old ripd compatible\n") + +DEFSH (0, show_ip_route_summary_prefix_vrf_all_cmd_vtysh, + "show ip route summary prefix " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Summary of all routes\n" + "Prefix routes\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, ospf6_distance_ospf6_intra_cmd_vtysh, + "distance ospf6 intra-area <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "Intra-area routes\n" + "Distance for intra-area routes\n") + +DEFSH (0, if_no_nhrp_network_id_cmd_vtysh, + "no " "(ip|ipv6)" " nhrp network-id [<1-4294967295>]", + "Negate a command or set its defaults\n" + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Enable NHRP and specify network-id\n" + "System local ID to specify interface group\n") + +DEFSH (0, show_bgp_ipv6_safi_lcommunity2_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, show_ip_igmp_join_cmd_vtysh, + "show ip igmp join", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP static join information\n") + +DEFSH (0, no_link_params_pkt_loss_cmd_vtysh, + "no packet-loss", + "Negate a command or set its defaults\n" + "Disable Unidirectional Link Packet Loss on this interface\n") + +DEFSH (0, show_bgp_instance_ipv4_safi_rsclient_summary_cmd_vtysh, + "show bgp view WORD ipv4 (unicast|multicast) rsclient summary", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, undebug_bgp_as4_segment_cmd_vtysh, + "undebug bgp as4 segment", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP AS4 actions\n" + "BGP AS4 aspath segment handling\n") + +DEFSH (0, 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 (0, show_ip_lcommunity_list_cmd_vtysh, + "show ip large-community-list", + "Show running system information\n" + "IP information\n" + "List large-community list\n") + +DEFSH (0, bgp_network_mask_natural_cmd_vtysh, + "network A.B.C.D", + "Specify a network to announce via BGP\n" + "Network number\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, ip_irdp_debug_disable_cmd_vtysh, + "ip irdp debug disable", + "IP information\n" + "ICMP Router discovery debug Averts. and Solicits (short)\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out the existing ORF prefix-list\n") + +DEFSH (0, 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 (0, ospf_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 (0, debug_zebra_nht_cmd_vtysh, + "debug zebra nht", + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug option set for zebra next hop tracking\n") + +DEFSH (0, ip_lcommunity_list_standard2_cmd_vtysh, + "ip large-community-list <1-99> (deny|permit)", + "IP information\n" + "Add a large community list entry\n" + "Large Community list number (standard)\n" + "Specify large community to reject\n" + "Specify large community to accept\n") + +DEFSH (0, 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 (0, area_passwd_md5_snpauth_cmd_vtysh, + "(area-password|domain-password) md5 WORD authenticate snp (send-only|validate)", + "Configure the authentication password for an area\n" + "Set the authentication password for a routing domain\n" + "Authentication type\n" + "Level-wide password\n" + "Authentication\n" + "SNP PDUs\n" + "Send but do not check PDUs on receiving\n" + "Send and check PDUs on receiving\n") + +DEFSH (0, ospf_passive_interface_addr_cmd_vtysh, + "passive-interface IFNAME A.B.C.D", + "Suppress routing updates on an interface\n" + "Interface's name\n") + +DEFSH (0, router_info_area_cmd_vtysh, + "router-info area A.B.C.D", + "OSPF Router Information specific commands\n" + "Enable the Router Information functionality with Area flooding scope\n" + "OSPF area ID in IP format") + +DEFSH (0, no_bgp_redistribute_ipv6_metric_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " metric <0-4294967295>", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0, ospf_rfc1583_flag_cmd_vtysh, + "ospf rfc1583compatibility", + "OSPF specific commands\n" + "Enable the RFC1583Compatibility flag\n") + +DEFSH (0, csnp_interval_l1_cmd_vtysh, + "isis csnp-interval <1-600> level-1", + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "CSNP interval value\n" + "Specify interval for level-1 CSNPs\n") + +DEFSH (0, clear_ip_bgp_as_encap_soft_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " encap 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 (0, no_psnp_interval_cmd_vtysh, + "no isis psnp-interval", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set PSNP interval in seconds\n") + +DEFSH (0, 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 (0, interface_ip_igmp_query_max_response_time_cmd_vtysh, + "ip igmp query-max-response-time" " <1-25>", + "IP information\n" + "Enable IGMP operation\n" + "IGMP max query response value (seconds)\n" + "Query response value in seconds\n") + +DEFSH (0, show_bgp_ipv6_safi_community2_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) 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" + "Address family modifier\n" + "Address family modifier\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 (0, ripng_redistribute_ripng_cmd_vtysh, + "redistribute ripng", + "Redistribute information from another routing protocol\n" + "RIPng route\n") + +DEFSH (0, 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 (0, 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 calculation\n" + "Show SPF tree\n") + +DEFSH (0, show_ip_nhrp_cmd_vtysh, + "show " "(ip|ipv6)" " nhrp (cache|nhs|shortcut|opennhrp|)", + "Show running system information\n" + "IP information\n" "IPv6 information\n" + "NHRP information\n" + "Forwarding cache information\n" + "Next hop server information\n" + "Shortcut information\n" + "opennhrpctl style cache dump\n") + +DEFSH (0, 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 (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Lookup longer prefix\n") + +DEFSH (0, show_bgp_ipv4_vpn_summary_cmd_vtysh, + "show bgp ipv4 vpn summary", + "Show running system information\n" + "BGP information\n" + "IPv4\n" + "Display VPN NLRI specific information\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, ip_mroute_dist_vrf_cmd_vtysh, + "ip mroute A.B.C.D/M (A.B.C.D|INTERFACE) <1-255> " "vrf <0-65535>", + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n" + "Distance\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, rip_distance_source_cmd_vtysh, + "distance <1-255> A.B.C.D/M", + "Administrative distance\n" + "Distance value\n" + "IP source prefix\n") + +DEFSH (0, no_ip_ospf_area_cmd_vtysh, + "no ip ospf area [A.B.C.D]", + "Negate a command or set its defaults\n" + "IP Information\n" + "OSPF interface commands\n" + "Disable OSPF on this interface\n" + "Address of interface\n") + +DEFSH (0, no_match_peer_val_cmd_vtysh, + "no match peer (A.B.C.D|X:X::X:X)", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match peer address\n" + "IP address of peer\n" + "IPv6 address of peer\n") + +DEFSH (0, no_ipv6_nd_homeagent_config_flag_cmd_vtysh, + "no ipv6 nd home-agent-config-flag", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent configuration flag\n") + +DEFSH (0, no_ipv6_route_flags_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, no_ip_route_mask_flags_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, debug_ospf6_neighbor_detail_cmd_vtysh, + "debug ospf6 neighbor (state|event)", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 Neighbor\n" + "Debug OSPFv3 Neighbor State Change\n" + "Debug OSPFv3 Neighbor Event\n" + ) + +DEFSH (0, no_ospf_refresh_timer_cmd_vtysh, + "no refresh timer", + "Adjust refresh parameters\n" + "Unset refresh timer\n") + +DEFSH (0, 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 (0, show_bgp_instance_ipv6_summary_cmd_vtysh, + "show bgp view WORD ipv6 summary", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "BGP view\n" + "View name\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, show_bgp_ipv6_prefix_pathtype_cmd_vtysh, + "show bgp ipv6 X:X::X:X/M (bestpath|multipath)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "IPv6 prefix /\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, 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 (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") + +DEFSH (0, 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 (0, clear_ip_bgp_as_encap_in_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " encap 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 (0, 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 (0, ip_irdp_debug_packet_cmd_vtysh, + "ip irdp debug packet", + "IP information\n" + "ICMP Router discovery debug Averts. and Solicits (short)\n") + +DEFSH (0, 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 (0, ripng_redistribute_type_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)", + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, no_ipv6_nd_reachable_time_cmd_vtysh, + "no ipv6 nd reachable-time", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Reachable time\n") + +DEFSH (0|0|0|0, 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 (0, show_ip_bgp_nexthop_detail_cmd_vtysh, + "show ip bgp nexthop detail", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "BGP nexthop table\n") + +DEFSH (0, no_exec_timeout_cmd_vtysh, + "no exec-timeout", + "Negate a command or set its defaults\n" + "Set the EXEC timeout\n") + +DEFSH (0, no_isis_metric_arg_cmd_vtysh, + "no isis metric <0-16777215>", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set default metric for circuit\n" + "Default metric value\n") + +DEFSH (0, 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 (0, show_debugging_bgp_cmd_vtysh, + "show debugging bgp", + "Show running system information\n" + "Debugging functions (see also 'undebug')\n" + "BGP information\n") + +DEFSH (0, show_bgp_ipv6_safi_rd_prefix_cmd_vtysh, + "show bgp ipv6 (encap|vpn) rd ASN:nn_or_IP-address:nn X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, show_debugging_ospf_cmd_vtysh, + "show debugging ospf", + "Show running system information\n" + "Debugging functions (see also 'undebug')\n" + "OSPF information\n") + +DEFSH (0, set_aspath_prepend_cmd_vtysh, + "set as-path prepend ." "<1-4294967295>", + "Set values in destination routing protocol\n" + "Transform BGP AS_PATH attribute\n" + "Prepend to the as-path\n" + "AS number\n") + +DEFSH (0, no_ip_community_list_name_expanded_all_cmd_vtysh, + "no ip community-list expanded WORD", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a community list entry\n" + "Add an expanded community-list entry\n" + "Community list name\n") + +DEFSH (0, ip_mroute_cmd_vtysh, + "ip mroute A.B.C.D/M (A.B.C.D|INTERFACE)", + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n") + +DEFSH (0, no_ipv6_nd_ra_lifetime_cmd_vtysh, + "no ipv6 nd ra-lifetime", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router lifetime\n") + +DEFSH (0, 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 (0, 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 (0, vpnv4_network_route_map_cmd_vtysh, + "network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD route-map WORD", + "Specify a network to announce via BGP\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Specify Route Distinguisher\n" + "VPN Route Distinguisher\n" + "BGP tag\n" + "tag value\n" + "route map\n" + "route map name\n") + +DEFSH (0|0|0|0|0|0, no_rmap_continue_cmd_vtysh, + "no continue", + "Negate a command or set its defaults\n" + "Continue on a different entry within the route-map\n") + +DEFSH (0, 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 (0, 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 (0, no_isis_priority_cmd_vtysh, + "no isis priority", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set priority for Designated Router election\n") + +DEFSH (0, 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 (0, show_bgp_view_rsclient_prefix_cmd_vtysh, + "show bgp view WORD rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") + +DEFSH (0, no_ospf_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 (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, no_neighbor_local_as_val2_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "local-as " "<1-4294967295>" " 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 (0, 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 (0, no_ip_route_mask_flags2_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole) " "vrf <0-65535>", + "Negate a command or set its defaults\n" + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ipv6_bgp_lcommunity_cmd_vtysh, + "show ipv6 bgp large-community (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, 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 (0, show_ipv6_ospf6_database_self_originated_detail_cmd_vtysh, + "show ipv6 ospf6 database self-originated " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Self-originated LSAs\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 (0, no_ospf_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 (0, ospf_priority_cmd_vtysh, + "ospf priority <0-255>", + "OSPF interface commands\n" + "Router priority\n" + "Priority\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv4_safi_prefix_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) A.B.C.D/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, ip_ospf_mtu_ignore_cmd_vtysh, + "ip ospf mtu-ignore", + "IP Information\n" + "OSPF interface commands\n" + "Disable mtu mismatch detection\n") + +DEFSH (0, interface_ip_mroute_cmd_vtysh, + "ip mroute INTERFACE A.B.C.D", + "IP information\n" + "Add multicast route\n" + "Outgoing interface name\n" + "Group address\n") + +DEFSH (0, debug_bgp_keepalive_cmd_vtysh, + "debug bgp keepalives", + "Debugging functions (see also 'undebug')\n" + "BGP information\n" + "BGP keepalives\n") + +DEFSH (0, no_ospf_network_cmd_vtysh, + "no ospf network", + "Negate a command or set its defaults\n" + "OSPF interface commands\n" + "Network type\n") + +DEFSH (0, show_bgp_ipv6_safi_damp_flap_prefix_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening flap-statistics prefix-list WORD", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0|0|0|0, no_match_ip_next_hop_val_cmd_vtysh, + "no match ip next-hop (<1-199>|<1300-2699>|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 number\n" + "IP access-list number (expanded range)\n" + "IP Access-list name\n") + +DEFSH (0, 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 (0, clear_bgp_ipv6_all_cmd_vtysh, + "clear bgp ipv6 *", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear all peers\n") + +DEFSH (0, show_ipv6_ripng_cmd_vtysh, + "show ipv6 ripng", + "Show running system information\n" + "IPv6 information\n" + "Show RIPng routes\n") + +DEFSH (0, no_ip_ospf_cost_u32_inet4_cmd_vtysh, + "no ip ospf cost <1-65535> A.B.C.D", + "Negate a command or set its defaults\n" + "IP Information\n" + "OSPF interface commands\n" + "Interface cost\n" + "Cost\n" + "Address of interface") + +DEFSH (0, set_aspath_prepend_lastas_cmd_vtysh, + "set as-path prepend (last-as) <1-10>", + "Set values in destination routing protocol\n" + "Transform BGP AS_PATH attribute\n" + "Prepend to the as-path\n" + "Use the peer's AS-number\n" + "Number of times to insert") + +DEFSH (0, 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 (0, show_ipv6_ospf6_simulate_spf_tree_root_cmd_vtysh, + "show ipv6 ospf6 simulate spf-tree A.B.C.D area A.B.C.D", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Shortest Path First calculation\n" + "Show SPF tree\n" + "Specify root's router-id to calculate another router's SPF tree\n") + +DEFSH (0, no_ip_lcommunity_list_standard_all_cmd_vtysh, + "no ip large-community-list <1-99>", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Large Community list number (standard)\n") + +DEFSH (0|0|0|0|0|0, no_rmap_call_cmd_vtysh, + "no call", + "Negate a command or set its defaults\n" + "Jump to another Route-Map after match+set\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_vpn_rd_route_cmd_vtysh, + "show bgp ipv4 vpn rd ASN:nn_or_IP-address:nn A.B.C.D", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display VPN 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 (0, no_psnp_interval_l1_arg_cmd_vtysh, + "no isis psnp-interval <1-120> level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "PSNP interval value\n" + "Specify interval for level-1 PSNPs\n") + +DEFSH (0, show_bgp_ipv4_safi_dampened_paths_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampened-paths", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display paths suppressed due to dampening\n") + +DEFSH (0, rip_redistribute_type_metric_routemap_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)" " metric <0-16> route-map WORD", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric\n" + "Metric value\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Any prefix match. Same as \"::0/0 le 128\"\n") + +DEFSH (0, no_encap_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 /, e.g., 35.0.0.0/8\n" + "Specify Route Distinguisher\n" + "ENCAP Route Distinguisher\n" + "BGP tag\n" + "tag value\n") + +DEFSH (0, ripng_aggregate_address_cmd_vtysh, + "aggregate-address X:X::X:X/M", + "Set aggregate RIPng route announcement\n" + "Aggregate network\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, 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 (0, 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 /\n") + +DEFSH (0, show_ipv6_ospf6_database_id_detail_cmd_vtysh, + "show ipv6 ospf6 database * A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Any Link state Type\n" + "Specify Link state ID as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, 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 (0, 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 (0, 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 (0, bgp_damp_set3_cmd_vtysh, + "bgp dampening", + "BGP Specific commands\n" + "Enable route-flap dampening\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, ospf6_redistribute_cmd_vtysh, + "redistribute " "(kernel|connected|static|ripng|isis|bgp|babel|nhrp)", + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + ) + +DEFSH (0, show_ip_bgp_ipv4_prefix_pathtype_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) A.B.C.D/M (bestpath|multipath)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, 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 (0, 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 (0, link_params_admin_grp_cmd_vtysh, + "admin-grp BITPATTERN", + "Administrative group membership\n" + "32-bit Hexadecimal value (e.g. 0xa1)\n") + +DEFSH (0, 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 (0, no_max_lsp_lifetime_arg_cmd_vtysh, + "no max-lsp-lifetime <350-65535>", + "Negate a command or set its defaults\n" + "Maximum LSP lifetime\n" + "LSP lifetime in seconds\n") + +DEFSH (0, no_debug_pim_packets_cmd_vtysh, + "no debug pim packets", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM protocol activity\n" + "PIM protocol packets\n" + "PIM Hello protocol packets\n" + "PIM Join/Prune protocol packets\n") + +DEFSH (0, show_bgp_view_ipv6_rsclient_cmd_vtysh, + "show bgp view WORD ipv6 rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "BGP view name\n" + "Address Family\n" + "Information about Route Server Client\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n") + +DEFSH (0, show_bgp_ipv4_encap_rd_tags_cmd_vtysh, + "show bgp ipv4 encap rd ASN:nn_or_IP-address:nn tags", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, show_bgp_ipv6_lcommunity2_cmd_vtysh, + "show bgp ipv6 large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, ipv6_ospf6_transmitdelay_cmd_vtysh, + "ipv6 ospf6 transmit-delay <1-3600>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Transmit delay of this interface\n" + "<1-65535> Seconds\n" + ) + +DEFSH (0, 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 /\n" + "Display route and more specific routes\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, no_ip_lcommunity_list_standard_cmd_vtysh, + "no ip large-community-list <1-99> (deny|permit) .AA:.AA:NN", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Large Community list number (standard)\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "large community in 'aa:bb:cc' format\n") + +DEFSH (0|0|0|0|0, no_set_tag_val_cmd_vtysh, + "no set tag <1-4294967295>", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "Tag value for routing protocol\n" + "Tag value\n") + +DEFSH (0, 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 (0, ospf_authentication_key_cmd_vtysh, + "ospf authentication-key AUTH_KEY", + "OSPF interface commands\n" + "Authentication password (key)\n" + "The OSPF password (key)") + +DEFSH (0, show_ip_bgp_rsclient_route_cmd_vtysh, + "show ip bgp rsclient (A.B.C.D|X:X::X:X) A.B.C.D", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, undebug_igmp_events_cmd_vtysh, + "undebug igmp events", + "Disable debugging functions (see also 'debug')\n" + "IGMP protocol activity\n" + "IGMP protocol events\n") + +DEFSH (0, no_router_info_cmd_vtysh, + "no router-info", + "Negate a command or set its defaults\n" + "Disable the Router Information functionality\n") + +DEFSH (0, isis_hello_interval_l2_cmd_vtysh, + "isis hello-interval <1-600> level-2", + "IS-IS commands\n" + "Set Hello interval\n" + "Hello interval value\n" + "Holdtime 1 second, interval depends on multiplier\n" + "Specify hello-interval for level-2 IIHs\n") + +DEFSH (0, bgp_redistribute_ipv4_rmap_cmd_vtysh, + "redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)" " route-map WORD", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_safi_flap_prefix_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) flap-statistics prefix-list WORD", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display flap statistics of routes\n" + "Display routes conforming to the prefix-list\n" + "IP prefix-list name\n") + +DEFSH (0, no_ospf_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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, no_isis_priority_l1_arg_cmd_vtysh, + "no isis priority <0-127> level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Priority value\n" + "Specify priority for level-1 routing\n") + +DEFSH (0, show_bgp_rsclient_route_cmd_vtysh, + "show bgp rsclient (A.B.C.D|X:X::X:X) X:X::X:X", + "Show running system information\n" + "BGP information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0|0|0|0|0, match_interface_cmd_vtysh, + "match interface WORD", + "Match values from routing table\n" + "match first hop interface of route\n" + "Interface name\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, ospf_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 (0, ipv6_ospf6_priority_cmd_vtysh, + "ipv6 ospf6 priority <0-255>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Router priority\n" + "Priority value\n" + ) + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n") + +DEFSH (0, 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 (0, show_ip_pim_join_cmd_vtysh, + "show ip pim join", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface join information\n") + +DEFSH (0, 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 (0, rip_default_information_originate_cmd_vtysh, + "default-information originate", + "Control distribution of default route\n" + "Distribute a default route\n") + +DEFSH (0, ospf_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 (0, 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 (0, show_ipv6_route_tag_vrf_cmd_vtysh, + "show ipv6 route tag <1-4294967295>" "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Show only routes with tag\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_debug_nhrp_cmd_vtysh, + "no debug nhrp " "(all|common|event|interface|kernel|route|vici)", + "Negate a command or set its defaults\n" + "Disable debug messages for specific or all parts.\n" + "NHRP information\n" + "All messages\n" "Common messages (default)\n" "Event manager messages\n" "Interface messages\n" "Kernel messages\n" "Route messages\n" "VICI messages\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, clear_bgp_all_cmd_vtysh, + "clear bgp *", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n") + +DEFSH (0, no_ospf_redistribute_source_cmd_vtysh, + "no redistribute " "(kernel|connected|static|rip|isis|bgp|pim|babel|nhrp)", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, ipv6_ripng_split_horizon_cmd_vtysh, + "ipv6 ripng split-horizon", + "IPv6 information\n" + "Routing Information Protocol\n" + "Perform split horizon\n") + +DEFSH (0, show_bgp_view_rsclient_cmd_vtysh, + "show bgp view WORD rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, 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 extended community\n") + +DEFSH (0, no_ospf_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 (0, metric_style_cmd_vtysh, + "metric-style (narrow|transition|wide)", + "Use old-style (ISO 10589) or new-style packet formats\n" + "Use old style of TLVs with narrow metric\n" + "Send and accept both styles of TLVs during transition\n" + "Use new style of TLVs to carry wider metric\n") + +DEFSH (0, no_set_lcommunity_cmd_vtysh, + "no set large-community", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "BGP large community attribute\n" + "Large community\n") + +DEFSH (0, ospf6_interface_area_cmd_vtysh, + "interface IFNAME area A.B.C.D", + "Enable routing on an IPv6 interface\n" + "Interface name(e.g. ep0)\n" + "Specify the OSPF6 area ID\n" + "OSPF6 area ID in IPv4 address notation\n" + ) + +DEFSH (0, debug_isis_spfevents_cmd_vtysh, + "debug isis spf-events", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS Shortest Path First Events\n") + +DEFSH (0, 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 (0, no_lsp_refresh_interval_l2_arg_cmd_vtysh, + "no lsp-refresh-interval level-2 <1-65235>", + "Negate a command or set its defaults\n" + "LSP refresh interval for Level 2 only\n" + "LSP refresh interval for Level 2 only in seconds\n") + +DEFSH (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, show_debugging_rip_cmd_vtysh, + "show debugging rip", + "Show running system information\n" + "Debugging functions (see also 'undebug')\n" + "RIP information\n") + +DEFSH (0, 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 (0|0, set_metric_addsub_cmd_vtysh, + "set metric <+/-metric>", + "Set values in destination routing protocol\n" + "Metric value for destination routing protocol\n" + "Add or subtract metric\n") + +DEFSH (0, psnp_interval_l2_cmd_vtysh, + "isis psnp-interval <1-120> level-2", + "IS-IS commands\n" + "Set PSNP interval in seconds\n" + "PSNP interval value\n" + "Specify interval for level-2 PSNPs\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, no_bgp_maxpaths_ibgp_arg_cmd_vtysh, + "no maximum-paths ibgp " "<" "1" "-" "1" ">", + "Negate a command or set its defaults\n" + "Forward packets over multiple paths\n" + "iBGP-multipath\n" + "Number of paths\n") + +DEFSH (0, show_ip_rpf_vrf_cmd_vtysh, + "show ip rpf " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "Display RPF information for multicast source\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv6_safi_cmd_vtysh, + "show bgp ipv6 (unicast|multicast)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n") + +DEFSH (0, undebug_igmp_trace_cmd_vtysh, + "undebug igmp trace", + "Disable debugging functions (see also 'debug')\n" + "IGMP protocol activity\n" + "IGMP internal daemon activity\n") + +DEFSH (0, show_bgp_ipv6_vpn_neighbor_routes_cmd_vtysh, + "show bgp ipv6 vpn neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific 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 (0, show_ip_route_tag_vrf_cmd_vtysh, + "show ip route tag <1-4294967295>" "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Show only routes with tag\n" + "Tag value\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0|0|0|0, show_ip_prefix_list_cmd_vtysh, + "show ip prefix-list", + "Show running system information\n" + "IP information\n" + "Build a prefix list\n") + +DEFSH (0, no_isis_redistribute_cmd_vtysh, + "no redistribute (ipv4|ipv6) " "(kernel|connected|static|rip|ripng|ospf|ospf6|bgp|pim|babel|nhrp)" + " (level-1|level-2)", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Redistribute IPv4 routes\n" + "Redistribute IPv6 routes\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (OSPFv2)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Redistribute into level-1\n" + "Redistribute into level-2\n") + +DEFSH (0, no_area_filter_list_cmd_vtysh, + "no area A.B.C.D filter-list prefix WORD (in|out)", + "Negate a command or set its defaults\n" + "OSPFv6 area parameters\n" + "OSPFv6 area ID in IP address format\n" + "Filter networks between OSPFv6 areas\n" + "Filter prefixes between OSPFv6 areas\n" + "Name of an IPv6 prefix-list\n" + "Filter networks sent to this area\n" + "Filter networks sent from this area\n") + +DEFSH (0, no_ospf_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 (0, show_bgp_prefix_pathtype_cmd_vtysh, + "show bgp X:X::X:X/M (bestpath|multipath)", + "Show running system information\n" + "BGP information\n" + "IPv6 prefix /\n" + "Display only the bestpath\n" + "Display only multipaths\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv6_safi_damp_flap_regexp_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) dampening flap-statistics regexp .LINE", + "Show running system information\n" + "BGP information\n" + "IPv6 information\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display detailed information about dampening\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 (0, debug_ospf6_spf_process_cmd_vtysh, + "debug ospf6 spf process", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug SPF Calculation\n" + "Debug Detailed SPF Process\n" + ) + +DEFSH (0, isis_hello_interval_l1_cmd_vtysh, + "isis hello-interval <1-600> level-1", + "IS-IS commands\n" + "Set Hello interval\n" + "Hello interval value\n" + "Holdtime 1 second, interval depends on multiplier\n" + "Specify hello-interval for level-1 IIHs\n") + +DEFSH (0, show_bgp_ipv6_safi_rsclient_prefix_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IP prefix /, e.g., 3ffe::/16\n") + +DEFSH (0, no_auto_summary_cmd_vtysh, + "no auto-summary", + "Negate a command or set its defaults\n" + "Enable automatic network number summarization\n") + +DEFSH (0, no_ospf6_distance_cmd_vtysh, + "no distance <1-255>", + "Negate a command or set its defaults\n" + "Define an administrative distance\n" + "OSPF6 Administrative distance\n") + +DEFSH (0, clear_bgp_ipv6_as_out_cmd_vtysh, + "clear bgp ipv6 " "<1-4294967295>" " out", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "Clear peers with the AS number\n" + "Resend all outbound updates\n") + +DEFSH (0, debug_rip_events_cmd_vtysh, + "debug rip events", + "Debugging functions (see also 'undebug')\n" + "RIP information\n" + "RIP events\n") + +DEFSH (0, if_nhrp_network_id_cmd_vtysh, + "(ip|ipv6)" " nhrp network-id <1-4294967295>", + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Enable NHRP and specify network-id\n" + "System local ID to specify interface group\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_ipv6_safi_neighbor_received_prefix_filter_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) neighbors (A.B.C.D|X:X::X:X) received prefix-filter", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family modifier\n" + "Address Family modifier\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 (0|0|0|0, 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 /, e.g., 3ffe::/16\n" + "Minimum prefix length to be matched\n" + "Minimum prefix length\n") + +DEFSH (0, 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 (0, show_bgp_rsclient_summary_cmd_vtysh, + "show bgp rsclient summary", + "Show running system information\n" + "BGP information\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, 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 (0|0|0|0|0|0, rmap_description_cmd_vtysh, + "description .LINE", + "Route-map comment\n" + "Comment describing this route-map rule\n") + +DEFSH (0, show_table_cmd_vtysh, + "show table", + "Show running system information\n" + "default routing table to use for all clients\n") + +DEFSH (0, show_ip_bgp_ipv4_neighbor_prefix_counts_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) prefix-counts", + "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 detailed prefix count information\n") + +DEFSH (0, 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 (0, no_router_ospf_id_cmd_vtysh, + "no router-id", + "Negate a command or set its defaults\n" + "router-id for the OSPF process\n") + +DEFSH (0, 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\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, show_ipv6_route_addr_vrf_cmd_vtysh, + "show ipv6 route X:X::X:X " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "IPv6 Address\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, 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 (0, 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 (0, show_bgp_ipv6_safi_lcommunity3_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, no_bgp_redistribute_ipv4_cmd_vtysh, + "no redistribute " "(kernel|connected|static|rip|ospf|isis|pim|babel|nhrp)", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, clear_bgp_ipv6_instance_peer_rsclient_cmd_vtysh, + "clear bgp ipv6 view WORD (A.B.C.D|X:X::X:X) rsclient", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "BGP view\n" + "view name\n" + "BGP neighbor IP address to clear\n" + "BGP IPv6 neighbor to clear\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, ipv6_ospf6_ifmtu_cmd_vtysh, + "ipv6 ospf6 ifmtu <1-65535>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface MTU\n" + "OSPFv3 Interface MTU\n" + ) + +DEFSH (0, show_bgp_view_ipv6_rsclient_prefix_cmd_vtysh, + "show bgp view WORD ipv6 rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "IPv6 Information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") + +DEFSH (0, show_bgp_ipv6_safi_lcommunity_list_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) large-community-list (<1-500>|WORD)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-community-list\n" + "large-community-list number\n" + "large-community-list name\n") + +DEFSH (0, no_debug_isis_upd_cmd_vtysh, + "no debug isis update-packets", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS Update related packets\n") + +DEFSH (0, 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 (0, 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 (0, show_ipv6_mbgp_lcommunity3_cmd_vtysh, + "show ipv6 mbgp large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "MBGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, no_isis_priority_l2_arg_cmd_vtysh, + "no isis priority <0-127> level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Priority value\n" + "Specify priority for level-2 routing\n") + +DEFSH (0, 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 (0, 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 (0, no_neighbor_maximum_prefix_restart_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> restart <1-65535>", + "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" + "Restart bgp connection after limit is exceeded\n" + "Restart interval in minutes") + +DEFSH (0, match_local_pref_cmd_vtysh, + "match local-preference <0-4294967295>", + "Match values from routing table\n" + "Match local-preference of route\n" + "Metric value\n") + +DEFSH (0, 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 (0, clear_ip_bgp_all_in_cmd_vtysh, + "clear ip bgp * in", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear all peers\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, ip_irdp_minadvertinterval_cmd_vtysh, + "ip irdp minadvertinterval <3-1800>", + "IP information\n" + "ICMP Router discovery on this interface\n" + "Set minimum time between advertisement\n" + "Minimum advertisement interval in seconds\n") + +DEFSH (0, no_debug_isis_spftrigg_cmd_vtysh, + "no debug isis spf-triggers", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS SPF triggering events\n") + +DEFSH (0, no_ipv6_nd_prefix_cmd_vtysh, + "no ipv6 nd prefix IPV6PREFIX", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n") + +DEFSH (0, no_ip_irdp_shutdown_cmd_vtysh, + "no ip irdp shutdown", + "Negate a command or set its defaults\n" + "IP information\n" + "ICMP Router discovery no shutdown on this interface\n") + +DEFSH (0, debug_mroute_cmd_vtysh, + "debug mroute", + "Debugging functions (see also 'undebug')\n" + "PIM interaction with kernel MFC cache\n") + +DEFSH (0, 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 (0, clear_ip_pim_interfaces_cmd_vtysh, + "clear ip pim interfaces", + "Reset functions\n" + "IP information\n" + "PIM clear commands\n" + "Reset PIM interfaces\n") + +DEFSH (0, no_router_ripng_cmd_vtysh, + "no router ripng", + "Negate a command or set its defaults\n" + "Enable a routing process\n" + "Make RIPng instance command\n") + +DEFSH (0, 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 (0, 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 (0, show_bgp_rsclient_prefix_cmd_vtysh, + "show bgp rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "IPv6 prefix /, e.g., 3ffe::/16\n") + +DEFSH (0, 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 (0, ospf6_distance_ospf6_external_inter_cmd_vtysh, + "distance ospf6 external <1-255> inter-area <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "External routes\n" + "Distance for external routes\n" + "Inter-area routes\n" + "Distance for inter-area routes\n") + +DEFSH (0, 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 (0, 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 (0, 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 inbound and outbound updates\n") + +DEFSH (0, show_ip_rip_status_cmd_vtysh, + "show ip rip status", + "Show running system information\n" + "IP information\n" + "Show RIP routes\n" + "IP routing protocol process parameters and statistics\n") + +DEFSH (0, clear_ip_bgp_as_ipv4_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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" + "Resend all outbound updates\n") + +DEFSH (0, no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> <1-100> 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" + "Threshold value (%) at which to generate a warning msg\n" + "Only give warning message when limit is exceeded\n") + +DEFSH (0, 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 (0, no_ipv6_nd_mtu_val_cmd_vtysh, + "no ipv6 nd mtu <1-65535>", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Advertised MTU\n" + "MTU in bytes\n") + +DEFSH (0, undebug_bgp_as4_cmd_vtysh, + "undebug bgp as4", + "Disable debugging functions (see also 'debug')\n" + "BGP information\n" + "BGP AS4 actions\n") + +DEFSH (0, no_debug_ospf6_lsa_hex_detail_cmd_vtysh, + "no debug ospf6 lsa (router|network|inter-prefix|inter-router|as-ext|grp-mbr|type7|link|intra-prefix) (originate|examine|flooding)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug Link State Advertisements (LSAs)\n" + "Specify LS type as Hexadecimal\n" + ) + +DEFSH (0, clear_bgp_as_cmd_vtysh, + "clear bgp " "<1-4294967295>", + "Reset functions\n" + "BGP information\n" + "Clear peers with the AS number\n") + +DEFSH (0, 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 (0, exec_timeout_sec_cmd_vtysh, + "exec-timeout <0-35791> <0-2147483>", + "Set the EXEC timeout\n" + "Timeout in minutes\n" + "Timeout in seconds\n") + +DEFSH (0, show_ip_mroute_cmd_vtysh, + "show ip mroute", + "Show running system information\n" + "IP information\n" + "IP multicast routing table\n") + +DEFSH (0, show_bgp_view_afi_safi_lcommunity3_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, no_isis_priority_l1_cmd_vtysh, + "no isis priority level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set priority for Designated Router election\n" + "Specify priority for level-1 routing\n") + +DEFSH (0, show_bgp_view_ipv6_safi_rsclient_route_cmd_vtysh, + "show bgp view WORD ipv6 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) X:X::X:X", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, clear_ip_bgp_as_soft_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " soft out", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, bgp_maxpaths_ibgp_cmd_vtysh, + "maximum-paths ibgp " "<" "1" "-" "1" ">", + "Forward packets over multiple paths\n" + "iBGP-multipath\n" + "Number of paths\n") + +DEFSH (0, show_ip_route_prefix_longer_vrf_all_cmd_vtysh, + "show ip route A.B.C.D/M longer-prefixes " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Show route matching the specified Network/Mask pair only\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, bgp_network_cmd_vtysh, + "network A.B.C.D/M", + "Specify a network to announce via BGP\n" + "IP prefix /, e.g., 35.0.0.0/8\n") + +DEFSH (0, show_bgp_lcommunity_all_cmd_vtysh, + "show bgp large-community", + "Show running system information\n" + "BGP information\n" + "Display routes matching the large-communities\n") + +DEFSH (0, ospf6_distance_ospf6_intra_inter_external_cmd_vtysh, + "distance ospf6 intra-area <1-255> inter-area <1-255> external <1-255>", + "Define an administrative distance\n" + "OSPF6 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 (0, ospf_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 (0, ip_multicast_routing_cmd_vtysh, + "ip multicast-routing", + "IP information\n" + "Enable IP multicast forwarding\n") + +DEFSH (0, 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 (0, no_ipv6_nd_ra_interval_msec_val_cmd_vtysh, + "no ipv6 nd ra-interval msec <1-1800000>", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router Advertisement interval\n" + "Router Advertisement interval in milliseconds\n") + +DEFSH (0, bgp_redistribute_ipv6_rmap_cmd_vtysh, + "redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " route-map WORD", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, 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 (0, area_range_cmd_vtysh, + "area A.B.C.D range X:X::X:X/M", + "OSPF area parameters\n" + "Area ID (as an IPv4 notation)\n" + "Configured address range\n" + "Specify IPv6 prefix\n" + ) + +DEFSH (0, 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 (0, no_area_range_cmd_vtysh, + "no area A.B.C.D range X:X::X:X/M", + "OSPF area parameters\n" + "Area ID (as an IPv4 notation)\n" + "Configured address range\n" + "Specify IPv6 prefix\n" + ) + +DEFSH (0, clear_bgp_peer_rsclient_cmd_vtysh, + "clear bgp (A.B.C.D|X:X::X:X) rsclient", + "Reset functions\n" + "BGP information\n" + "BGP neighbor IP address to clear\n" + "BGP IPv6 neighbor to clear\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, show_bgp_ipv6_safi_community_list_exact_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) community-list (<1-500>|WORD) exact-match", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the community-list\n" + "community-list number\n" + "community-list name\n" + "Exact match of the communities\n") + +DEFSH (0, show_bgp_view_afi_safi_community3_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (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" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\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 (0, 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 (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0|0|0|0, show_ipv6_prefix_list_cmd_vtysh, + "show ipv6 prefix-list", + "Show running system information\n" + "IPv6 information\n" + "Build a prefix list\n") + +DEFSH (0, show_debugging_pim_cmd_vtysh, + "show debugging pim", + "Show running system information\n" + "Debugging functions (see also 'undebug')\n" + "PIM information\n") + +DEFSH (0, ospf_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 (0, ospf6_distance_ospf6_external_intra_cmd_vtysh, + "distance ospf6 external <1-255> intra-area <1-255>", + "Define an administrative distance\n" + "OSPF6 Administrative distance\n" + "External routes\n" + "Distance for external routes\n" + "Intra-area routes\n" + "Distance for intra-area routes\n") + +DEFSH (0, show_bgp_ipv6_safi_lcommunity_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) large-community AA:BB:CC", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, no_ospf_timers_min_ls_arrival_cmd_vtysh, + "no timers lsa arrival", + "Negate a command or set its defaults\n" + "Adjust routing timers\n" + "Throttling link state advertisement delays\n" + "OSPF minimum arrival interval delay\n") + +DEFSH (0, 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 (0, no_lsp_gen_interval_l1_cmd_vtysh, + "no lsp-gen-interval level-1", + "Negate a command or set its defaults\n" + "Minimum interval between regenerating same LSP\n" + "Set interval for level 1 only\n") + +DEFSH (0, ospf_default_information_originate_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 (0, show_ip_bgp_neighbor_prefix_counts_cmd_vtysh, + "show ip bgp neighbors (A.B.C.D|X:X::X:X) prefix-counts", + "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 detailed prefix count information\n") + +DEFSH (0, 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 (0, no_ipv6_route_ifname_flags_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, lsp_gen_interval_cmd_vtysh, + "lsp-gen-interval <1-120>", + "Minimum interval between regenerating same LSP\n" + "Minimum interval in seconds\n") + +DEFSH (0, clear_bgp_instance_all_rsclient_cmd_vtysh, + "clear bgp view WORD * rsclient", + "Reset functions\n" + "BGP information\n" + "BGP view\n" + "view name\n" + "Clear all peers\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, show_ip_bgp_cmd_vtysh, + "show ip bgp", + "Show running system information\n" + "IP information\n" + "BGP information\n") + +DEFSH (0, show_ipv6_ospf6_interface_ifname_prefix_match_cmd_vtysh, + "show ipv6 ospf6 interface IFNAME prefix X:X::X:X/M (match|detail)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface information\n" + "Interface name(e.g. ep0)\n" + "Display connected prefixes to advertise\n" + "Display the route\n" + "Display the route matches the prefix\n" + "Display details of the prefixes\n" + ) + +DEFSH (0, no_neighbor_timers_connect_val_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "timers connect <1-65535>", + "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" + "BGP connect timer\n" + "Connect timer\n") + +DEFSH (0, show_bgp_ipv4_safi_rsclient_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, no_ip_ospf_hello_interval_seconds_cmd_vtysh, + "no ip ospf hello-interval <1-65535>", + "Negate a command or set its defaults\n" + "IP Information\n" + "OSPF interface commands\n" + "Time between HELLO packets\n" + "Seconds\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, ip_route_mask_flags_distance_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, clear_ip_bgp_as_in_prefix_filter_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " in prefix-filter", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0|0|0|0, 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 /, 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 (0, clear_ipv6_ospf6_interface_cmd_vtysh, + "clear ipv6 ospf6 interface [IFNAME]", + "Reset functions\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface information\n" + "Interface name(e.g. ep0)\n" + ) + +DEFSH (0, show_bgp_ipv6_safi_rsclient_route_cmd_vtysh, + "show bgp ipv6 (unicast|multicast) rsclient (A.B.C.D|X:X::X:X) X:X::X:X", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, no_ip_protocol_cmd_vtysh, + "no ip protocol PROTO", + "Negate a command or set its defaults\n" + "Remove route map from PROTO\n" + "Protocol name\n") + +DEFSH (0, show_bgp_community_all_cmd_vtysh, + "show bgp community", + "Show running system information\n" + "BGP information\n" + "Display routes matching the communities\n") + +DEFSH (0, ipv6_ospf6_cost_cmd_vtysh, + "ipv6 ospf6 cost <1-65535>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interface cost\n" + "Outgoing metric of this interface\n" + ) + +DEFSH (0, clear_ip_bgp_all_encap_out_cmd_vtysh, + "clear ip bgp * encap 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 (0, show_bgp_ipv4_community_exact_cmd_vtysh, + "show bgp ipv4 community (AA:NN|local-AS|no-advertise|no-export) exact-match", + "Show running system information\n" + "BGP information\n" + "IP 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 (0, ospf_log_adjacency_changes_cmd_vtysh, + "log-adjacency-changes", + "Log changes in adjacency state\n") + +DEFSH (0, no_max_lsp_lifetime_l1_arg_cmd_vtysh, + "no max-lsp-lifetime level-1 <350-65535>", + "Negate a command or set its defaults\n" + "Maximum LSP lifetime for Level 1 only\n" + "LSP lifetime for Level 1 only in seconds\n") + +DEFSH (0, no_debug_zebra_fpm_cmd_vtysh, + "no debug zebra fpm", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Zebra configuration\n" + "Debug zebra FPM events\n") + +DEFSH (0, no_max_lsp_lifetime_l2_cmd_vtysh, + "no max-lsp-lifetime level-2", + "Negate a command or set its defaults\n" + "LSP lifetime for Level 2 only in seconds\n") + +DEFSH (0, 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 (0, no_set_lcommunity_delete_cmd_vtysh, + "no set large-comm-list", + "Negate a command or set its defaults\n" + "Set values in destination routing protocol\n" + "set BGP large community list (for deletion)\n") + +DEFSH (0, 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 (0, ipv6_route_ifname_pref_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE tag <1-4294967295> <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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0|0|0|0, 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 /, e.g., 3ffe::/16\n") + +DEFSH (0, clear_ip_bgp_as_ipv4_soft_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, show_ip_bgp_ipv4_dampening_dampd_paths_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) dampening dampened-paths", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display paths suppressed due to dampening\n") + +DEFSH (0, set_lcommunity_none_cmd_vtysh, + "set large-community none", + "Set values in destination routing protocol\n" + "BGP large community attribute\n" + "No large community attribute\n") + +DEFSH (0, no_ip_route_mask_flags_tag_distance_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n" + "Distance value for this route\n") + +DEFSH (0, show_bgp_view_prefix_cmd_vtysh, + "show bgp view WORD X:X::X:X/M", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "IPv6 prefix /\n") + +DEFSH (0, debug_ospf_zebra_cmd_vtysh, + "debug ospf zebra", + "Debugging functions (see also 'undebug')\n" + "OSPF information\n" + "OSPF Zebra information\n") + +DEFSH (0, 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 (0, ospf_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 (0, no_debug_mroute_cmd_vtysh, + "no debug mroute", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "PIM interaction with kernel MFC cache\n") + +DEFSH (0, 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 (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, 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 (0, show_isis_mpls_te_router_cmd_vtysh, + "show isis mpls-te router", + "Show running system information\n" + "IS-IS information\n" + "MPLS-TE specific commands\n" + "Router information\n") + +DEFSH (0, no_link_params_delay_var_cmd_vtysh, + "no delay-variation", + "Negate a command or set its defaults\n" + "Disable Unidirectional Delay Variation on this interface\n") + +DEFSH (0, 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 (0, show_ip_extcommunity_list_arg_cmd_vtysh, + "show ip extcommunity-list (<1-500>|WORD)", + "Show running system information\n" + "IP information\n" + "List extended-community list\n" + "Extcommunity-list number\n" + "Extcommunity-list name\n") + +DEFSH (0, pce_neighbor_cmd_vtysh, + "pce neighbor as <0-65535>", + "PCE Router Information specific commands\n" + "Configure PCE neighbor domain AS number\n" + "AS number of PCE neighbors\n" + "AS number in decimal <0-65535>\n") + +DEFSH (0, show_bgp_views_cmd_vtysh, + "show bgp views", + "Show running system information\n" + "BGP information\n" + "Show the defined BGP views\n") + +DEFSH (0, no_isis_hello_multiplier_arg_cmd_vtysh, + "no isis hello-multiplier <2-100>", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Hello multiplier value\n") + +DEFSH (0, 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 (0, no_ip_route_flags_distance2_cmd_vtysh, + "no ip route A.B.C.D/M (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n") + +DEFSH (0, no_ospf_cost_u32_cmd_vtysh, + "no ospf cost <1-65535>", + "Negate a command or set its defaults\n" + "OSPF interface commands\n" + "Interface cost\n" + "Cost") + +DEFSH (0, no_if_rmap_cmd_vtysh, + "no route-map ROUTEMAP_NAME (in|out) IFNAME", + "Negate a command or set its defaults\n" + "Route map unset\n" + "Route map name\n" + "Route map for input filtering\n" + "Route map for output filtering\n" + "Route map interface name\n") + +DEFSH (0, show_bgp_ipv4_safi_filter_list_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) filter-list WORD", + "Show running system information\n" + "BGP information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes conforming to the filter-list\n" + "Regular expression access list name\n") + +DEFSH (0, 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 (0, 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 (0, rip_passive_interface_cmd_vtysh, + "passive-interface (IFNAME|default)", + "Suppress routing updates on an interface\n" + "Interface name\n" + "default for all interfaces\n") + +DEFSH (0, interface_no_ip_igmp_query_interval_cmd_vtysh, + "no" " " "ip igmp query-interval", + "Negate a command or set its defaults\n" + "IP information\n" + "Enable IGMP operation\n" + "IGMP host query interval\n") + +DEFSH (0, no_isis_hello_multiplier_l1_cmd_vtysh, + "no isis hello-multiplier level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set multiplier for Hello holding time\n" + "Specify hello multiplier for level-1 IIHs\n") + +DEFSH (0, ip_forwarding_cmd_vtysh, + "ip forwarding", + "IP information\n" + "Turn on IP forwarding") + +DEFSH (0, ipv6_nd_other_config_flag_cmd_vtysh, + "ipv6 nd other-config-flag", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Other statefull configuration flag\n") + +DEFSH (0, show_bgp_ipv4_safi_flap_cidr_only_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) flap-statistics cidr-only", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Display flap statistics of routes\n" + "Display only routes with non-natural netmasks\n") + +DEFSH (0, if_nhrp_holdtime_cmd_vtysh, + "(ip|ipv6)" " nhrp holdtime <1-65000>", + "IP information\n" "IPv6 information\n" + "Next Hop Resolution Protocol functions\n" + "Specify NBMA address validity time\n" + "Time in seconds that NBMA addresses are advertised valid\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, 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 (0, show_ip_pim_assert_winner_metric_cmd_vtysh, + "show ip pim assert-winner-metric", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface assert winner metric\n") + +DEFSH (0, 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 (0, show_ip_bgp_lcommunity2_cmd_vtysh, + "show ip bgp large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, 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 (0, show_ipv6_route_tag_cmd_vtysh, + "show ipv6 route tag <1-4294967295>", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Show only routes with tag\n" + "Tag value\n") + +DEFSH (0, isis_network_cmd_vtysh, + "isis network point-to-point", + "IS-IS commands\n" + "Set network type\n" + "point-to-point network type\n") + +DEFSH (0, debug_igmp_trace_cmd_vtysh, + "debug igmp trace", + "Debugging functions (see also 'undebug')\n" + "IGMP protocol activity\n" + "IGMP internal daemon activity\n") + +DEFSH (0, no_csnp_interval_l1_arg_cmd_vtysh, + "no isis csnp-interval <1-600> level-1", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set CSNP interval in seconds\n" + "CSNP interval value\n" + "Specify interval for level-1 CSNPs\n") + +DEFSH (0, neighbor_advertise_interval_cmd_vtysh, + "neighbor (A.B.C.D|X:X::X:X|WORD) " "advertisement-interval <0-600>", + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Minimum interval between sending BGP routing updates\n" + "time in seconds\n") + +DEFSH (0, ipv6_route_ifname_flags_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0|0|0|0, 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 (0, clear_bgp_as_soft_in_cmd_vtysh, + "clear bgp " "<1-4294967295>" " soft in", + "Reset functions\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_debug_ospf6_lsa_hex_cmd_vtysh, + "no debug ospf6 lsa (router|network|inter-prefix|inter-router|as-ext|grp-mbr|type7|link|intra-prefix|unknown)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug Link State Advertisements (LSAs)\n" + "Specify LS type as Hexadecimal\n" + ) + +DEFSH (0, debug_isis_packet_dump_cmd_vtysh, + "debug isis packet-dump", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS packet dump\n") + +DEFSH (0, 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 (0, no_ip_route_mask_flags_tag_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE) (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Tag of this route\n" + "Tag value\n") + +DEFSH (0, 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 (0, ip_router_isis_cmd_vtysh, + "(ip|ipv6) router isis WORD", + "Interface Internet Protocol config commands\n" + "IP router interface commands\n" + "IS-IS Routing for IP\n" + "Routing process tag\n") + +DEFSH (0, area_passwd_clear_cmd_vtysh, + "(area-password|domain-password) clear WORD", + "Configure the authentication password for an area\n" + "Set the authentication password for a routing domain\n" + "Authentication type\n" + "Area password\n") + +DEFSH (0, 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 (0, 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 (0, no_lsp_gen_interval_l2_arg_cmd_vtysh, + "no lsp-gen-interval level-2 <1-120>", + "Negate a command or set its defaults\n" + "Minimum interval between regenerating same LSP\n" + "Set interval for level 2 only\n" + "Minimum interval in seconds\n") + +DEFSH (0, show_bgp_view_ipv4_rsclient_cmd_vtysh, + "show bgp view WORD ipv4 rsclient (A.B.C.D|X:X::X:X)", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address Family\n" + "Information about Route Server Client\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, show_bgp_ipv4_encap_cmd_vtysh, + "show bgp ipv4 encap", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n") + +DEFSH (0, 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 (0, spf_interval_l1_cmd_vtysh, + "spf-interval level-1 <1-120>", + "Minimum interval between SPF calculations\n" + "Set interval for level 1 only\n" + "Minimum interval between consecutive SPFs in seconds\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, no_ipv6_route_ifname_pref_vrf_cmd_vtysh, + "no ipv6 route X:X::X:X/M X:X::X:X INTERFACE <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 information\n" + ) + +DEFSH (0|0|0|0|0, no_match_tag_val_cmd_vtysh, + "no match tag <1-4294967295>", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match tag of route\n" + "Metric value\n") + +DEFSH (0, ipv6_ospf6_deadinterval_cmd_vtysh, + "ipv6 ospf6 dead-interval <1-65535>", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Interval time after which a neighbor is declared down\n" + "<1-65535> Seconds\n" + ) + +DEFSH (0, test_pim_receive_hello_cmd_vtysh, + "test pim receive hello INTERFACE A.B.C.D <0-65535> <0-65535> <0-65535> <0-32767> <0-65535> <0-1>[LINE]", + "Test\n" + "Test PIM protocol\n" + "Test PIM message reception\n" + "Test PIM hello reception from neighbor\n" + "Interface\n" + "Neighbor address\n" + "Neighbor holdtime\n" + "Neighbor DR priority\n" + "Neighbor generation ID\n" + "Neighbor propagation delay (msec)\n" + "Neighbor override interval (msec)\n" + "Neighbor LAN prune delay T-bit\n" + "Neighbor secondary addresses\n") + +DEFSH (0, 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 (0, show_ip_bgp_damp_flap_address_cmd_vtysh, + "show ip bgp dampening flap-statistics A.B.C.D", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, show_bgp_ipv4_lcommunity_cmd_vtysh, + "show bgp ipv4 large-community (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Display routes matching the large-communities\n" + "large-community number\n") + +DEFSH (0, show_bgp_ipv4_vpn_rd_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv4 vpn rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN 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" + "Neighbor to display information about\n" + "Display the routes advertised to a BGP neighbor\n") + +DEFSH (0, 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 /\n" + "Display route and more specific routes\n") + +DEFSH (0, no_if_ipv6_rmap_cmd_vtysh, + "no route-map ROUTEMAP_NAME (in|out) IFNAME", + "Negate a command or set its defaults\n" + "Route map unset\n" + "Route map name\n" + "Route map for input filtering\n" + "Route map for output filtering\n" + "Route map interface name\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0|0|0|0|0|0, rmap_continue_cmd_vtysh, + "continue", + "Continue on a different entry within the route-map\n") + +DEFSH (0, show_ipv6_ospf6_route_type_cmd_vtysh, + "show ipv6 ospf6 route (intra-area|inter-area|external-1|external-2)", + "Show running system information\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Routing Table\n" + "Display Intra-Area routes\n" + "Display Inter-Area routes\n" + "Display Type-1 External routes\n" + "Display Type-2 External routes\n" + ) + +DEFSH (0, 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 (0, show_ip_bgp_damp_flap_statistics_cmd_vtysh, + "show ip bgp dampening flap-statistics", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Display detailed information about dampening\n" + "Display flap statistics of routes\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, ipv6_nd_homeagent_config_flag_cmd_vtysh, + "ipv6 nd home-agent-config-flag", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Home Agent configuration flag\n") + +DEFSH (0, 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 (0, 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 (0, router_id_cmd_vtysh, + "router-id A.B.C.D", + "Manually set the router-id\n" + "IP address to use for router-id\n") + +DEFSH (0, 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 (0, 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 (0, debug_static_cmd_vtysh, + "debug static", + "Debugging functions (see also 'undebug')\n" + "PIM Static Multicast Route activity\n") + +DEFSH (0, ipv6_route_ifname_flags_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M X:X::X:X INTERFACE (reject|blackhole) tag <1-4294967295>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, 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 (0, show_bgp_ipv6_encap_rd_cmd_vtysh, + "show bgp ipv6 encap rd ASN:nn_or_IP-address:nn", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display ENCAP NLRI specific information\n" + "Display information for a route distinguisher\n" + "ENCAP Route Distinguisher\n" + "Display BGP tags for prefixes\n") + +DEFSH (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, no_neighbor_send_community_type_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "send-community (both|all|extended|standard|large)", + "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, Large and Extended Community attributes\n" + "Send Standard, Large and Extended Community attributes\n" + "Send Extended Community attributes\n" + "Send Standard Community attributes\n" + "Send Large Community attributes\n") + +DEFSH (0, 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 (0, show_interface_name_cmd_vtysh, + "show interface IFNAME", + "Show running system information\n" + "Interface status and configuration\n" + "Interface name\n") + +DEFSH (0, rip_allow_ecmp_cmd_vtysh, + "allow-ecmp", + "Allow Equal Cost MultiPath\n") + +DEFSH (0, no_ipv6_nd_managed_config_flag_cmd_vtysh, + "no ipv6 nd managed-config-flag", + "Negate a command or set its defaults\n" + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Managed address configuration flag\n") + +DEFSH (0|0|0|0, 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 /, e.g., 35.0.0.0/8\n" + "Any prefix match. Same as \"0.0.0.0/0 le 32\"\n") + +DEFSH (0, no_ripng_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 (0, show_ip_bgp_ipv4_dampening_parameters_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) dampening parameters", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display detail of configured dampening parameters\n") + +DEFSH (0, show_ip_bgp_nexthop_cmd_vtysh, + "show ip bgp nexthop", + "Show running system information\n" + "IP information\n" + "BGP information\n" + "BGP nexthop table\n") + +DEFSH (0|0, 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 (0, no_ospf_cost_cmd_vtysh, + "no ospf cost", + "Negate a command or set its defaults\n" + "OSPF interface commands\n" + "Interface cost\n") + +DEFSH (0, ip_route_flags_distance2_vrf_cmd_vtysh, + "ip route A.B.C.D/M (reject|blackhole) <1-255> " "vrf <0-65535>", + "IP information\n" + "Establish static routes\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, ospf_cost_u32_inet4_cmd_vtysh, + "ospf cost <1-65535> A.B.C.D", + "OSPF interface commands\n" + "Interface cost\n" + "Cost\n" + "Address of interface") + +DEFSH (0, 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 (0, show_bgp_ipv4_vpn_rd_neighbor_routes_cmd_vtysh, + "show bgp ipv4 vpn rd ASN:nn_or_IP-address:nn neighbors (A.B.C.D|X:X::X:X) routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Address Family modifier\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 (0, 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 inbound and outbound updates\n") + +DEFSH (0, no_isis_hello_interval_l2_arg_cmd_vtysh, + "no isis hello-interval <1-600> level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set Hello interval\n" + "Hello interval value\n" + "Holdtime 1 second, interval depends on multiplier\n" + "Specify hello-interval for level-2 IIHs\n") + +DEFSH (0, no_service_advanced_vty_cmd_vtysh, + "no service advanced-vty", + "Negate a command or set its defaults\n" + "Set up miscellaneous service\n" + "Enable advanced mode vty interface\n") + +DEFSH (0, ipv6_route_tag_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295>", + "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" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, ip_route_mask_distance_vrf_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (A.B.C.D|INTERFACE|null0) <1-255> " "vrf <0-65535>", + "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" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, show_ipv6_mroute_vrf_cmd_vtysh, + "show ipv6 mroute " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IPv6 Multicast routing table\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, clear_bgp_all_in_prefix_filter_cmd_vtysh, + "clear bgp * in prefix-filter", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, exec_timeout_min_cmd_vtysh, + "exec-timeout <0-35791>", + "Set timeout value\n" + "Timeout value in minutes\n") + +DEFSH (0, 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" + "Resend all outbound updates\n") + +DEFSH (0|0|0|0, 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 (0, 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 (0, 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 (0, debug_isis_lupd_cmd_vtysh, + "debug isis local-updates", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS local update packets\n") + +DEFSH (0, show_bgp_ipv4_safi_lcommunity2_cmd_vtysh, + "show bgp ipv4 (unicast|multicast) large-community (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, rip_redistribute_type_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf|isis|bgp|pim|babel|nhrp)", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0|0|0|0|0, no_match_tag_cmd_vtysh, + "no match tag", + "Negate a command or set its defaults\n" + "Match values from routing table\n" + "Match tag of route\n") + +DEFSH (0, ipv6_route_flags_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole)", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, 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 (0, 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 /, e.g., 35.0.0.0/8\n") + +DEFSH (0, rip_default_metric_cmd_vtysh, + "default-metric <1-16>", + "Set a metric of redistribute routes\n" + "Default metric\n") + +DEFSH (0, show_ip_bgp_ipv4_community_list_cmd_vtysh, + "show ip bgp ipv4 (unicast|multicast) community-list (<1-500>|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 number\n" + "community-list name\n") + +DEFSH (0, ospf_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 (0, show_ip_pim_neighbor_cmd_vtysh, + "show ip pim neighbor", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM neighbor information\n") + +DEFSH (0, show_bgp_ipv4_safi_community2_cmd_vtysh, + "show 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" + "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 (0, ipv6_nd_prefix_noval_noauto_cmd_vtysh, + "ipv6 nd prefix X:X::X:X/M (no-autoconfig|)", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Prefix information\n" + "IPv6 prefix\n" + "Do not use prefix for autoconfiguration\n") + +DEFSH (0, clear_bgp_all_soft_out_cmd_vtysh, + "clear bgp * soft out", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n" + "Soft reconfig inbound and outbound updates\n" + "Resend all outbound updates\n") + +DEFSH (0, 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 (0, show_ip_pim_jp_override_interval_cmd_vtysh, + "show ip pim jp-override-interval", + "Show running system information\n" + "IP information\n" + "PIM information\n" + "PIM interface J/P override interval\n") + +DEFSH (0, 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" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, no_ip_route_mask_flags_distance2_vrf_cmd_vtysh, + "no ip route A.B.C.D A.B.C.D (reject|blackhole) <1-255> " "vrf <0-65535>", + "Negate a command or set its defaults\n" + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this route\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, no_ipv6_route_pref_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) tag <1-4294967295> <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" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0, no_debug_isis_packet_dump_cmd_vtysh, + "no debug isis packet-dump", + "Disable debugging functions (see also 'debug')\n" + "IS-IS information\n" + "IS-IS packet dump\n") + +DEFSH (0|0|0, no_router_zebra_cmd_vtysh, + "no router zebra", + "Negate a command or set its defaults\n" + "Disable a routing process\n" + "Stop connection to zebra daemon\n") + +DEFSH (0, ip_irdp_broadcast_cmd_vtysh, + "ip irdp broadcast", + "IP information\n" + "ICMP Router discovery on this interface using broadcast\n") + +DEFSH (0, clear_bgp_all_rsclient_cmd_vtysh, + "clear bgp * rsclient", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, 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 (0, ip_route_flags2_cmd_vtysh, + "ip route A.B.C.D/M (reject|blackhole)", + "IP information\n" + "Establish static routes\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, no_debug_ospf6_brouter_cmd_vtysh, + "no debug ospf6 border-routers", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug border router\n" + ) + +DEFSH (0, ipv6_nd_ra_interval_cmd_vtysh, + "ipv6 nd ra-interval <1-1800>", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router Advertisement interval\n" + "Router Advertisement interval in seconds\n") + +DEFSH (0, ipv6_route_flags_pref_cmd_vtysh, + "ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Distance value for this prefix\n") + +DEFSH (0, ripng_redistribute_type_metric_routemap_cmd_vtysh, + "redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)" " metric <0-16> route-map WORD", + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric\n" + "Metric value\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, if_no_nhrp_mtu_cmd_vtysh, + "no ip nhrp mtu [(<576-1500>|opennhrp)]", + "Negate a command or set its defaults\n" + "IP information\n" + "Next Hop Resolution Protocol functions\n" + "Configure NHRP advertised MTU\n" + "MTU value\n" + "Advertise bound interface MTU similar to OpenNHRP") + +DEFSH (0, show_bgp_instance_ipv6_rsclient_summary_cmd_vtysh, + "show bgp view WORD ipv6 rsclient summary", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, no_ospf_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 (0, 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 (0, show_bgp_instance_rsclient_summary_cmd_vtysh, + "show bgp view WORD rsclient summary", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Information about Route Server Clients\n" + "Summary of all Route Server Clients\n") + +DEFSH (0, ospf_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 (0, show_ip_route_protocol_cmd_vtysh, + "show ip route " "(kernel|connected|static|rip|ospf|isis|bgp|pim|babel|nhrp)", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol (RIP)\n" "Open Shortest Path First (OSPFv2)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Protocol Independent Multicast (PIM)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n") + +DEFSH (0, no_ospf_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 (0, no_neighbor_ttl_security_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "ttl-security hops <1-254>", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Specify the maximum number of hops to the BGP peer\n") + +DEFSH (0, no_ipv6_ospf6_cost_cmd_vtysh, + "no ipv6 ospf6 cost", + "Negate a command or set its defaults\n" + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Calculate interface cost from bandwidth\n" + ) + +DEFSH (0, clear_ip_bgp_as_soft_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " soft", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Soft reconfig inbound and outbound updates\n") + +DEFSH (0, 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 (0|0|0|0, 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 /, 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 (0, ospf6_log_adjacency_changes_detail_cmd_vtysh, + "log-adjacency-changes detail", + "Log changes in adjacency state\n" + "Log all state changes\n") + +DEFSH (0, 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 (0|0|0|0, 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 (0, 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 (0, 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 (0, no_neighbor_nexthop_self_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "next-hop-self {all}", + "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" + "Apply also to ibgp-learned routes when acting as a route reflector\n") + +DEFSH (0, test_pim_receive_upcall_cmd_vtysh, + "test pim receive upcall (nocache|wrongvif|wholepkt) <0-65535> A.B.C.D A.B.C.D", + "Test\n" + "Test PIM protocol\n" + "Test PIM message reception\n" + "Test reception of kernel upcall\n" + "NOCACHE kernel upcall\n" + "WRONGVIF kernel upcall\n" + "WHOLEPKT kernel upcall\n" + "Input interface vif index\n" + "Multicast group address\n" + "Multicast source address\n") + +DEFSH (0|0|0|0, match_ip_next_hop_cmd_vtysh, + "match ip next-hop (<1-199>|<1300-2699>|WORD)", + "Match values from routing table\n" + "IP information\n" + "Match next-hop address of route\n" + "IP access-list number\n" + "IP access-list number (expanded range)\n" + "IP Access-list name\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, clear_ip_bgp_as_out_cmd_vtysh, + "clear ip bgp " "<1-4294967295>" " out", + "Reset functions\n" + "IP information\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Resend all outbound updates\n") + +DEFSH (0, match_lcommunity_cmd_vtysh, + "match large-community (<1-99>|<100-500>|WORD)", + "Match values from routing table\n" + "Match BGP large community list\n" + "Large Community-list number (standard)\n" + "Large Community-list number (expanded)\n" + "Large Community-list name\n") + +DEFSH (0, 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 (0, no_lsp_refresh_interval_l1_cmd_vtysh, + "no lsp-refresh-interval level-1", + "Negate a command or set its defaults\n" + "LSP refresh interval for Level 1 only in seconds\n") + +DEFSH (0, no_debug_ospf6_route_cmd_vtysh, + "no debug ospf6 route (table|intra-area|inter-area|memory)", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug route table calculation\n" + "Debug intra-area route calculation\n" + "Debug route memory use\n") + +DEFSH (0, 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 (0, clear_bgp_ipv6_peer_rsclient_cmd_vtysh, + "clear bgp ipv6 (A.B.C.D|X:X::X:X) rsclient", + "Reset functions\n" + "BGP information\n" + "Address family\n" + "BGP neighbor IP address to clear\n" + "BGP IPv6 neighbor to clear\n" + "Soft reconfig for rsclient RIB\n") + +DEFSH (0, show_ipv6_access_list_cmd_vtysh, + "show ipv6 access-list", + "Show running system information\n" + "IPv6 information\n" + "List IPv6 access lists\n") + +DEFSH (0, show_ipv6_mbgp_lcommunity_all_cmd_vtysh, + "show ipv6 mbgp large-community", + "Show running system information\n" + "IPv6 information\n" + "MBGP information\n" + "Display routes matching the large-communities\n") + +DEFSH (0, 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" + "Display Link state database\n" + ) + +DEFSH (0, clear_bgp_external_soft_cmd_vtysh, + "clear bgp external soft", + "Reset functions\n" + "BGP information\n" + "Clear all external peers\n" + "Soft reconfig inbound and outbound updates\n") + +DEFSH (0, key_string_cmd_vtysh, + "key-string LINE", + "Set key string\n" + "The key\n") + +DEFSH (0, undebug_igmp_cmd_vtysh, + "undebug igmp", + "Disable debugging functions (see also 'debug')\n" + "IGMP protocol activity\n") + +DEFSH (0, no_ip_route_flags_vrf_cmd_vtysh, + "no ip route A.B.C.D/M (A.B.C.D|INTERFACE) (reject|blackhole) " "vrf <0-65535>", + "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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, clear_bgp_all_soft_in_cmd_vtysh, + "clear bgp * soft in", + "Reset functions\n" + "BGP information\n" + "Clear all peers\n" + "Soft reconfig inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, 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 (0, ospf_area_nssa_translate_cmd_vtysh, + "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" + "OSPF area ID as a decimal value\n" + "Configure OSPF area as nssa\n" + "Configure NSSA-ABR for translate election (default)\n" + "Configure NSSA-ABR to never translate\n" + "Configure NSSA-ABR to always translate\n") + +DEFSH (0, 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 (0, 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" + "Resend all outbound updates\n") + +DEFSH (0, no_link_params_admin_grp_cmd_vtysh, + "no admin-grp", + "Negate a command or set its defaults\n" + "Disable Administrative group membership on this interface\n") + +DEFSH (0, no_neighbor_nexthop_local_unchanged_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "nexthop-local unchanged", + "Negate a command or set its defaults\n" + "Specify neighbor router\n" + "Neighbor address\nNeighbor IPv6 address\nNeighbor tag\n" + "Configure treatment of outgoing link-local-nexthop attribute\n" + "Leave link-local nexthop unchanged for this peer\n") + +DEFSH (0, 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 /, e.g., 35.0.0.0/8\n" + "Specify Route Distinguisher\n" + "VPN Route Distinguisher\n" + "BGP tag\n" + "tag value\n") + +DEFSH (0, show_bgp_view_ipv6_rsclient_route_cmd_vtysh, + "show bgp view WORD ipv6 rsclient (A.B.C.D|X:X::X:X) X:X::X:X", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "BGP view name\n" + "IP6_STR" + "Information about Route Server Client\n" + "Neighbor address\nIPv6 address\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, show_ipv6_route_summary_vrf_all_cmd_vtysh, + "show ipv6 route summary " "vrf all", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Summary of all IPv6 routes\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, no_isis_network_cmd_vtysh, + "no isis network point-to-point", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set network type for circuit\n" + "point-to-point network type\n") + +DEFSH (0, interface_no_ip_pim_hello_cmd_vtysh, + "no ip pim hello {<1-180> <1-180>}", + "Negate a command or set its defaults\n" + "IP information\n" + "PIM information\n" + "Hello Interval\n" + "Time in seconds for Hello Interval\n" + "Time in seconds for Hold Interval\n") + +DEFSH (0, bgp_redistribute_ipv6_metric_rmap_cmd_vtysh, + "redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " metric <0-4294967295> route-map WORD", + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Metric for redistributed routes\n" + "Default metric\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, test_pim_receive_assert_cmd_vtysh, + "test pim receive assert INTERFACE A.B.C.D A.B.C.D A.B.C.D <0-65535> <0-65535> <0-1>", + "Test\n" + "Test PIM protocol\n" + "Test PIM message reception\n" + "Test reception of PIM assert\n" + "Interface\n" + "Neighbor address\n" + "Assert multicast group address\n" + "Assert unicast source address\n" + "Assert metric preference\n" + "Assert route metric\n" + "Assert RPT bit flag\n") + +DEFSH (0, 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 (0, ipv6_ospf6_mtu_ignore_cmd_vtysh, + "ipv6 ospf6 mtu-ignore", + "IPv6 Information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Ignore MTU mismatch on this interface\n" + ) + +DEFSH (0, show_bgp_ipv4_safi_damp_dampened_paths_cmd_vtysh, + "show bgp ipv4 (encap|multicast|unicast|vpn) dampening dampened-paths", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display detailed information about dampening\n" + "Display paths suppressed due to dampening\n") + +DEFSH (0, show_ip_route_addr_vrf_all_cmd_vtysh, + "show ip route A.B.C.D " "vrf all", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "Network in the IP routing table to display\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, ospf_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 (0, show_bgp_ipv6_lcommunity3_cmd_vtysh, + "show bgp ipv6 large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, no_ip_community_list_standard_all_cmd_vtysh, + "no ip community-list <1-99>", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a community list entry\n" + "Community list number (standard)\n") + +DEFSH (0, no_neighbor_timers_connect_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "timers connect", + "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" + "BGP connect timer\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, 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 (0, no_dynamic_hostname_cmd_vtysh, + "no hostname dynamic", + "Negate a command or set its defaults\n" + "Dynamic hostname for IS-IS\n" + "Dynamic hostname\n") + +DEFSH (0, no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh, + "no neighbor (A.B.C.D|X:X::X:X|WORD) " "maximum-prefix <1-4294967295> <1-100> restart <1-65535>", + "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" + "Threshold value (%) at which to generate a warning msg\n" + "Restart bgp connection after limit is exceeded\n" + "Restart interval in minutes") + +DEFSH (0, show_ipv6_ospf6_database_adv_router_detail_cmd_vtysh, + "show ipv6 ospf6 database adv-router A.B.C.D " + "(detail|dump|internal)", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Search by Advertising Router\n" + "Specify Advertising Router as IPv4 address notation\n" + "Display details of LSAs\n" + "Dump LSAs\n" + "Display LSA's internal information\n" + ) + +DEFSH (0, show_ip_route_prefix_vrf_cmd_vtysh, + "show ip route A.B.C.D/M " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IP routing table\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_ipv6_mroute_vrf_all_cmd_vtysh, + "show ipv6 mroute " "vrf all", + "Show running system information\n" + "IP information\n" + "IPv6 Multicast routing table\n" + "Specify the VRF\nAll VRFs\n") + +DEFSH (0, ipv6_nd_ra_lifetime_cmd_vtysh, + "ipv6 nd ra-lifetime <0-9000>", + "Interface IPv6 config commands\n" + "Neighbor discovery\n" + "Router lifetime\n" + "Router lifetime in seconds (0 stands for a non-default gw)\n") + +DEFSH (0, ip_route_mask_flags2_cmd_vtysh, + "ip route A.B.C.D A.B.C.D (reject|blackhole)", + "IP information\n" + "Establish static routes\n" + "IP destination prefix\n" + "IP destination prefix mask\n" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n") + +DEFSH (0, bgp_always_compare_med_cmd_vtysh, + "bgp always-compare-med", + "BGP specific commands\n" + "Allow comparing MED from different neighbors\n") + +DEFSH (0, show_ipv6_route_summary_prefix_vrf_cmd_vtysh, + "show ipv6 route summary prefix " "vrf <0-65535>", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n" + "Summary of all IPv6 routes\n" + "Prefix routes\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, clear_ip_bgp_all_encap_soft_in_cmd_vtysh, + "clear ip bgp * encap 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 (0, no_csnp_interval_cmd_vtysh, + "no isis csnp-interval", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set CSNP interval in seconds\n") + +DEFSH (0, 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 (0, no_ospf_timers_throttle_spf_cmd_vtysh, + "no timers throttle spf", + "Negate a command or set its defaults\n" + "Adjust routing timers\n" + "Throttling adaptive timer\n" + "OSPF SPF timers\n") + +DEFSH (0, 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 (0, 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 (0, 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 (0, show_bgp_ipv6_neighbor_flap_cmd_vtysh, + "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) flap-statistics", + "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 flap statistics of the routes learned from neighbor\n") + +DEFSH (0, 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 (0, no_ripng_redistribute_type_routemap_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ospf6|isis|bgp|babel|nhrp)" " route-map WORD", + "Negate a command or set its defaults\n" + "Redistribute\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Border Gateway Protocol (BGP)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n") + +DEFSH (0, 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 (0, 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 (0|0|0|0, 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 /, 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 (0, 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 (0, show_bgp_instance_ipv4_summary_cmd_vtysh, + "show bgp view WORD ipv4 summary", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "Address Family modifier\n" + "Address Family modifier\n" + "BGP view\n" + "View name\n" + "Summary of BGP neighbor status\n") + +DEFSH (0, no_router_id_cmd_vtysh, + "no router-id", + "Negate a command or set its defaults\n" + "Remove the manually configured router-id\n") + +DEFSH (0, 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 (0, 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 (0, debug_ospf6_lsa_hex_cmd_vtysh, + "debug ospf6 lsa (router|network|inter-prefix|inter-router|as-ext|grp-mbr|type7|link|intra-prefix|unknown)", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug Link State Advertisements (LSAs)\n" + "Specify LS type as Hexadecimal\n" + ) + +DEFSH (0, show_ip_igmp_groups_retransmissions_cmd_vtysh, + "show ip igmp groups retransmissions", + "Show running system information\n" + "IP information\n" + "IGMP information\n" + "IGMP groups information\n" + "IGMP group retransmissions\n") + +DEFSH (0, 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 (0, debug_ospf6_flooding_cmd_vtysh, + "debug ospf6 flooding", + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 flooding function\n" + ) + +DEFSH (0, 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 (0, no_ospf_area_nssa_no_summary_cmd_vtysh, + "no area (A.B.C.D|<0-4294967295>) nssa 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 nssa\n" + "Do not inject inter-area routes into nssa\n") + +DEFSH (0, ip_community_list_expanded_cmd_vtysh, + "ip community-list <100-500> (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 (0, show_bgp_view_ipv6_neighbor_damp_cmd_vtysh, + "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) dampened-routes", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\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 dampened routes received from neighbor\n") + +DEFSH (0, no_link_params_ava_bw_cmd_vtysh, + "no ava-bw", + "Negate a command or set its defaults\n" + "Disable Unidirectional Available Bandwidth on this interface\n") + +DEFSH (0, 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 (0, no_link_params_inter_as_cmd_vtysh, + "no neighbor", + "Negate a command or set its defaults\n" + "Remove Neighbor IP address and AS number for Inter-AS TE\n") + +DEFSH (0, ospf_mpls_te_inter_as_cmd_vtysh, + "mpls-te inter-as as", + "MPLS-TE specific commands\n" + "Configure MPLS-TE Inter-AS support\n" + "AS native mode self originate INTER_AS LSA with Type 11 (as flooding scope)\n") + +DEFSH (0, debug_isis_spftrigg_cmd_vtysh, + "debug isis spf-triggers", + "Debugging functions (see also 'undebug')\n" + "IS-IS information\n" + "IS-IS SPF triggering events\n") + +DEFSH (0, no_bgp_redistribute_ipv6_rmap_metric_cmd_vtysh, + "no redistribute " "(kernel|connected|static|ripng|ospf6|isis|babel|nhrp)" " route-map WORD metric <0-4294967295>", + "Negate a command or set its defaults\n" + "Redistribute information from another routing protocol\n" + "Kernel routes (not installed via the zebra RIB)\n" "Connected routes (directly attached subnet or host)\n" "Statically configured routes\n" "Routing Information Protocol next-generation (IPv6) (RIPng)\n" "Open Shortest Path First (IPv6) (OSPFv3)\n" "Intermediate System to Intermediate System (IS-IS)\n" "Babel routing protocol (Babel)\n" "Next Hop Resolution Protocol (NHRP)\n" + "Route map reference\n" + "Pointer to route-map entries\n" + "Metric for redistributed routes\n" + "Default metric\n") + +DEFSH (0, 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 (0, show_isis_neighbor_cmd_vtysh, + "show isis neighbor", + "Show running system information\n" + "ISIS network information\n" + "ISIS neighbor adjacencies\n") + +DEFSH (0, no_ospf_log_adjacency_changes_cmd_vtysh, + "no log-adjacency-changes", + "Negate a command or set its defaults\n" + "Log changes in adjacency state\n") + +DEFSH (0, 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 (0, show_bgp_ipv4_prefix_longer_cmd_vtysh, + "show bgp ipv4 A.B.C.D/M longer-prefixes", + "Show running system information\n" + "BGP information\n" + "IP information\n" + "IP prefix /, e.g., 35.0.0.0/8\n" + "Display route and more specific routes\n") + +DEFSH (0, 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 (0, show_isis_interface_cmd_vtysh, + "show isis interface", + "Show running system information\n" + "ISIS network information\n" + "ISIS interface\n") + +DEFSH (0, show_bgp_ipv4_community2_cmd_vtysh, + "show bgp ipv4 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" + "IP 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 (0, 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 (0, 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 (0, link_params_unrsv_bw_cmd_vtysh, + "unrsv-bw <0-7> BANDWIDTH", + "Unreserved bandwidth at each priority level\n" + "Priority\n" + "Bytes/second (IEEE floating point format)\n") + +DEFSH (0, 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 (0, no_ipv6_route_flags_pref_tag_cmd_vtysh, + "no ipv6 route X:X::X:X/M (X:X::X:X|INTERFACE) (reject|blackhole) tag <1-4294967295> <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" + "Emit an ICMP unreachable when matched\n" + "Silently discard pkts when matched\n" + "Set tag for this route\n" + "Tag value\n" + "Distance value for this prefix\n") + +DEFSH (0, 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 (0, show_bgp_view_afi_safi_route_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (encap|multicast|unicast|vpn) A.B.C.D", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address Family\n" + "Address Family\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Network in the BGP routing table to display\n") + +DEFSH (0, ip_irdp_multicast_cmd_vtysh, + "ip irdp multicast", + "IP information\n" + "ICMP Router discovery on this interface using multicast\n") + +DEFSH (0, no_isis_metric_l2_cmd_vtysh, + "no isis metric level-2", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set default metric for circuit\n" + "Specify metric for level-2 routing\n") + +DEFSH (0, undebug_pim_packetdump_recv_cmd_vtysh, + "undebug pim packet-dump receive", + "Disable debugging functions (see also 'debug')\n" + "PIM protocol activity\n" + "PIM packet dump\n" + "Dump received packets\n") + +DEFSH (0, 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 (0, no_debug_ospf6_interface_cmd_vtysh, + "no debug ospf6 interface", + "Negate a command or set its defaults\n" + "Debugging functions (see also 'undebug')\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Debug OSPFv3 Interface\n" + ) + +DEFSH (0, no_isis_hello_interval_arg_cmd_vtysh, + "no isis hello-interval <1-600>", + "Negate a command or set its defaults\n" + "IS-IS commands\n" + "Set Hello interval\n" + "Hello interval value\n" + "Holdtime 1 second, interval depends on multiplier\n") + +DEFSH (0, clear_bgp_as_in_prefix_filter_cmd_vtysh, + "clear bgp " "<1-4294967295>" " in prefix-filter", + "Reset functions\n" + "BGP information\n" + "Clear peers with the AS number\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n" + "Push out prefix-list ORF and do inbound soft reconfig\n") + +DEFSH (0, show_bgp_ipv4_safi_community4_exact_cmd_vtysh, + "show 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" + "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 (0, ip_mroute_dist_cmd_vtysh, + "ip mroute A.B.C.D/M (A.B.C.D|INTERFACE) <1-255>", + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n" + "Distance\n") + +DEFSH (0, 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 (0, show_database_detail_arg_cmd_vtysh, + "show isis database detail WORD", + "Show running system information\n" + "IS-IS information\n" + "IS-IS link state database\n" + "Detailed information\n" + "LSP ID\n") + +DEFSH (0, show_bgp_instance_neighbors_cmd_vtysh, + "show bgp view WORD neighbors", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Detailed information on TCP and BGP neighbor connections\n") + +DEFSH (0, show_ipv6_route_cmd_vtysh, + "show ipv6 route", + "Show running system information\n" + "IP information\n" + "IPv6 routing table\n") + +DEFSH (0, ip_route_tag_cmd_vtysh, + "ip route A.B.C.D/M (A.B.C.D|INTERFACE|null0) tag <1-4294967295>", + "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" + "Set tag for this route\n" + "Tag value\n") + +DEFSH (0, 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 inbound and outbound updates\n") + +DEFSH (0, show_bgp_ipv6_safi_lcommunity4_cmd_vtysh, + "show bgp ipv6 (encap|multicast|unicast|vpn) large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "BGP information\n" + "Address family\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Address family modifier\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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 (0, no_router_id_vrf_cmd_vtysh, + "no router-id " "vrf <0-65535>", + "Negate a command or set its defaults\n" + "Remove the manually configured router-id\n" + "Specify the VRF\nThe VRF ID\n") + +DEFSH (0, show_bgp_ipv6_vpn_neighbor_advertised_routes_cmd_vtysh, + "show bgp ipv6 vpn neighbors (A.B.C.D|X:X::X:X) advertised-routes", + "Show running system information\n" + "BGP information\n" + "Address Family\n" + "Display VPN NLRI specific information\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 (0, 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 inbound and outbound updates\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_ipv6_bgp_lcommunity4_cmd_vtysh, + "show ipv6 bgp large-community (AA:BB:CC) (AA:BB:CC) (AA:BB:CC) (AA:BB:CC)", + "Show running system information\n" + "IPv6 information\n" + "BGP information\n" + "Display routes matching the large-communities\n" + "large-community number\n" + "large-community number\n" + "large-community number\n" + "large-community number\n") + +DEFSH (0, 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" + "View name\n") + +DEFSH (0, 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 (0, clear_ip_mroute_cmd_vtysh, + "clear ip mroute", + "Reset functions\n" + "IP information\n" + "Reset multicast routes\n") + +DEFSH (0, no_ip_lcommunity_list_expanded_cmd_vtysh, + "no ip large-community-list <100-500> (deny|permit) .LINE", + "Negate a command or set its defaults\n" + "IP information\n" + "Add a large community list entry\n" + "Large Community list number (expanded)\n" + "Specify large community to reject\n" + "Specify large community to accept\n" + "An ordered list as a regular-expression\n") + +DEFSH (0, show_bgp_view_afi_safi_community_all_cmd_vtysh, + "show bgp view WORD (ipv4|ipv6) (unicast|multicast) community", + "Show running system information\n" + "BGP information\n" + "BGP view\n" + "View name\n" + "Address family\n" + "Address family\n" + "Address Family modifier\n" + "Address Family modifier\n" + "Display routes matching the communities\n") + +DEFSH (0, clear_bgp_external_in_cmd_vtysh, + "clear bgp external in", + "Reset functions\n" + "BGP information\n" + "Clear all external peers\n" + "Send route-refresh unless using 'soft-reconfiguration inbound'\n") + +DEFSH (0, show_ipv6_ospf6_database_type_router_cmd_vtysh, + "show ipv6 ospf6 database " + "(router|network|inter-prefix|inter-router|as-external|" + "group-membership|type-7|link|intra-prefix) * A.B.C.D", + "Show running system information\n" + "IPv6 information\n" + "Open Shortest Path First (OSPF) for IPv6\n" + "Display Link state database\n" + "Display Router LSAs\n" + "Display Network LSAs\n" + "Display Inter-Area-Prefix LSAs\n" + "Display Inter-Area-Router LSAs\n" + "Display As-External LSAs\n" + "Display Group-Membership LSAs\n" + "Display Type-7 LSAs\n" + "Display Link LSAs\n" + "Display Intra-Area-Prefix LSAs\n" + "Any Link state ID\n" + "Specify Advertising Router as IPv4 address notation\n" + ) + +DEFSH (0, no_ip_mroute_cmd_vtysh, + "no ip mroute A.B.C.D/M (A.B.C.D|INTERFACE)", + "Negate a command or set its defaults\n" + "IP information\n" + "Configure static unicast route into MRIB for multicast RPF lookup\n" + "IP destination prefix (e.g. 10.0.0.0/8)\n" + "Nexthop address\n" + "Nexthop interface name\n") + +void +test_init_cmd (void) +{ + install_element (ENABLE_NODE, &no_debug_ospf6_spf_process_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_lcommunity3_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_transmit_delay_addr_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_instance_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_upstream_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_self_originated_detail_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (CONFIG_NODE, &ip_community_list_name_expanded_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (CONFIG_NODE, &ip_community_list_standard_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_rsclient_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_stub_no_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_rd_route_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_month_day_day_month_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_timers_throttle_spf_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mroute_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ipv6_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_rib_q_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &no_key_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_prefix_vrf_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_debug_packet_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_lcommunity_all_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_ebgp_multihop_ttl_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_tag_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community2_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_rsclient_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_intra_external_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_summary_only_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_cidr_only_cmd_vtysh); + install_element (VTY_NODE, &no_exec_timeout_cmd_vtysh); + install_element (OSPF6_NODE, &area_range_advertise_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_any_mask_cmd_vtysh); + install_element (INTERFACE_NODE, &no_multicast_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_multiplier_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_all_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_as4_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_summary_vrf_all_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_duration_day_month_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_neighbor_priority_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_prefix_longer_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_lcommunity2_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_mroute_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_rsclient_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_flap_prefix_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community4_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_cmd_vtysh); + install_element (OSPF_NODE, &ospf_mpls_te_inter_as_area_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_router_info_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_metric_arg_cmd_vtysh); + install_element (ENABLE_NODE, &debug_nhrp_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (RMAP_NODE, &no_set_aspath_exclude_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (BGP_NODE, &bgp_timers_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_distance_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_le_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_neighbor_routes_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_rmap_metric_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_as_path_all_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_mask_as_set_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_flap_route_map_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_spfstats_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_import_check_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_adv_router_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_zebra_sendrecv_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_id_router_cmd_vtysh); + install_element (ISIS_NODE, &no_area_lsp_mtu_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_distance2_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_events_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_safi_rsclient_summary_cmd_vtysh); + install_element (CONFIG_NODE, &vrf_netns_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_group_in_prefix_filter_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community_exact_cmd_vtysh); + install_element (RIP_NODE, &no_rip_offset_list_ifname_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_redistribute_source_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_rip_packet_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_distance2_vrf_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_addr_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (ENABLE_NODE, &show_debugging_ospf_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_tag_distance2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_igmp_packets_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_md5_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_prefix_longer_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ipv6_prefix_list_name_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_priority_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_database_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_passive_interface_addr_cmd_vtysh); + install_element (OSPF_NODE, &ospf_passive_interface_addr_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_lcommunity2_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_list_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_snp_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_lcommunity_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_router_info_pce_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_as_path_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_spf_database_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_community_all_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_ge_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_pim_packets_filter_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_tag_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_as_set_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_cmd_vtysh); + install_element (BGP_NODE, &bgp_graceful_restart_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_packets_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community4_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &ipv6_bgp_network_cmd_vtysh); + install_element (ENABLE_NODE, &debug_igmp_packets_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_external_cmd_vtysh); + install_element (BGP_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_fsm_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_prefix_longer_vrf_all_cmd_vtysh); + install_element (BGP_NODE, &bgp_damp_set3_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_zebra_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_refresh_timer_val_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_distance_cmd_vtysh); + install_element (BGP_NODE, &bgp_graceful_restart_stalepath_time_cmd_vtysh); + install_element (ISIS_NODE, &lsp_refresh_interval_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_tag_vrf_cmd_vtysh); + install_element (RIP_NODE, &no_rip_default_information_originate_cmd_vtysh); + install_element (BGP_NODE, &neighbor_update_source_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_mask_natural_route_map_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_out_cmd_vtysh); + install_element (BGP_NODE, &bgp_default_ipv4_unicast_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_lcommunity_list_cmd_vtysh); + install_element (OSPF6_NODE, &no_area_import_list_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_ge_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community2_exact_cmd_vtysh); + install_element (RMAP_NODE, &no_match_interface_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_summary_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_in_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_prefix_longer_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_neighbor_damp_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_event_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_mtu_ignore_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_seq_ge_le_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_tag_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ripng_zebra_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_mask_host_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (RIP_NODE, &rip_neighbor_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ospf6_mtu_ignore_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_summary_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &test_pim_receive_dump_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv6_rsclient_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_route_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (RIPNG_NODE, &if_ipv6_rmap_cmd_vtysh); + install_element (RMAP_NODE, &no_set_lcommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_prefix_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_instance_ipv4_rsclient_summary_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ssmpingd_cmd_vtysh); + install_element (RIP_NODE, &rip_version_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_cmd_vtysh); + install_element (BGP_NODE, &bgp_confederation_identifier_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_lcommunity_list_cmd_vtysh); + install_element (CONFIG_NODE, &ip_lcommunity_list_name_expanded_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv4_safi_rsclient_summary_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_pim_packetdump_send_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_prefix_cmd_vtysh); + install_element (OSPF_NODE, &ospf_timers_min_ls_interval_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_adv_router_linkstate_id_detail_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_refresh_interval_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_neighbor_detail_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_dont_capability_negotiate_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_log_neighbor_changes_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_in_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_rsclient_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_cost_u32_inet4_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_protocol_cmd_vtysh); + install_element (RMAP_NODE, &set_src_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_stub_router_admin_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_linkstate_id_detail_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_encap_summary_cmd_vtysh); + install_element (INTERFACE_NODE, &no_bandwidth_if_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_neighbor_detail_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community_cmd_vtysh); + install_element (BGP_NODE, &neighbor_interface_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_flags_pref_tag_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_redistribute_type_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_trace_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_prefix_list_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_send_community_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_stub_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_vrf_cmd_vtysh); + install_element (OSPF_NODE, &pce_path_scope_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_neighbors_peer_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_packet_detail_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (VIEW_NODE, &show_zebra_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_summary_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_log_adjacency_changes_detail_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_summary_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_as_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_summary_only_cmd_vtysh); + install_element (CONFIG_NODE, &bgp_multiple_instance_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community_cmd_vtysh); + install_element (BGP_NODE, &bgp_redistribute_ipv4_rmap_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_rsclient_summary_cmd_vtysh); + install_element (VTY_NODE, &no_vty_ipv6_access_class_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_address_preference_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community2_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_forwarding_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_spftrigg_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_import_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_deadinterval_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_retransmit_interval_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_neighbor_received_prefix_filter_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_mask_summary_only_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_router_preference_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l1_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_in_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_description_val_cmd_vtysh); + install_element (OSPF_NODE, &no_router_ospf_id_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_route_source_val_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_lcommunity2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_flap_statistics_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_nht_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_redistribute_type_metric_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_nsm_sub_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_cmd_vtysh); + install_element (OSPF_NODE, &ospf_redistribute_source_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_summary_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_in_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_allow_martians_cmd_vtysh); + install_element (VIEW_NODE, &show_interface_name_vrf_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_retransmit_interval_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_inter_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_interface_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_events_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &no_tunnel_source_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_summary_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_protocol_vrf_all_cmd_vtysh); + install_element (RMAP_NODE, &set_lcommunity_cmd_vtysh); + install_element (BGP_NODE, &bgp_redistribute_ipv4_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags2_tag_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ssmpingd_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_rtevents_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_out_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_seq_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community4_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_tag_distance_vrf_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_mroute_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_summary_cmd_vtysh); + install_element (BGP_NODE, &bgp_always_compare_med_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_summary_as_set_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_prefix_longer_vrf_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_max_rsv_bw_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_route_cmd_vtysh); + install_element (VTY_NODE, &vty_no_restricted_mode_cmd_vtysh); + install_element (OSPF6_NODE, &auto_cost_reference_bandwidth_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_rip_events_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_border_routers_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_prefix_longer_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_asbr_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_nht_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_safi_rsclient_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_pref_vrf_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_aggregate_address_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_circuit_type_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_address_label_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_zebra_fpm_cmd_vtysh); + install_element (BGP_NODE, &neighbor_ttl_security_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_distance_cmd_vtysh); + install_element (CONFIG_NODE, &no_nhrp_nflog_group_cmd_vtysh); + install_element (ZEBRA_NODE, &rip_redistribute_rip_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ip_nexthop_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_regexp_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_summary_as_set_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_igmp_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_address_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_lcommunity_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_zebra_sub_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_route_map_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_inter_intra_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_forwarding_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_neighbor_int_detail_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community3_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_lcommunity_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community4_exact_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_lcommunity3_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_nexthop_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_neighbor_routes_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_receive_version_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_cmd_vtysh); + install_element (BGP_NODE, &no_synchronization_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_route_map_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_prefix_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_network_area_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_description_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community2_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_pref_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_pref_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_standard_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_gen_interval_arg_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_rd_route_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_packet_send_recv_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_ism_sub_cmd_vtysh); + install_element (RMAP_NODE, &match_ip_next_hop_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_interface_name_vrf_all_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community2_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_pim_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_bestpath_med3_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_protocol_cmd_vtysh); + install_element (VIEW_NODE, &clear_isis_neighbor_cmd_vtysh); + install_element (CONFIG_NODE, &nhrp_event_socket_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_message_sendrecv_cmd_vtysh); + install_element (RMAP_NODE, &set_ip_nexthop_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community_list_exact_cmd_vtysh); + install_element (RMAP_NODE, &match_ip_route_source_prefix_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_rtaddr_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_inter_as_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_damp_set2_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_community2_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_lcommunity3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_received_routes_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_prefix_pathtype_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_out_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_packet_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_nssa_cmd_vtysh); + install_element (RMAP_NODE, &no_set_aspath_exclude_val_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_source_access_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_prefix_longer_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_remark_cmd_vtysh); + install_element (RMAP_NODE, &no_match_probability_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_backdoor_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_tag_distance_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_out_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_safi_rsclient_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_forwarding_cmd_vtysh); + install_element (BGP_NODE, &old_ipv6_aggregate_address_summary_only_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_dead_interval_minimal_cmd_vtysh); + install_element (BGP_NODE, &neighbor_activate_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_send_community_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_infinite_day_month_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_router_detail_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_opaque_capable_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (RIP_NODE, &rip_default_metric_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_pim_trace_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_spf_time_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_vrf_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_standard_host_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_rip_packet_direct_cmd_vtysh); + install_element (RMAP_NODE, &set_ecommunity_soo_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_parameters_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv6_route_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_nexthop_cmd_vtysh); + install_element (BGP_IPV6_NODE, &ipv6_bgp_distance_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_id_detail_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_access_list_any_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_message_digest_key_addr_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ripng_packet_direct_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_access_list_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community_list_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_area_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_interface_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_igmp_cmd_vtysh); + install_element (RIP_NODE, &if_rmap_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_ospf_interface_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_authkey_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_encap_prefix_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_range_advertise_cost_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_as_set_cmd_vtysh); + install_element (OSPF_NODE, &router_info_as_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_lsa_hex_cmd_vtysh); + install_element (INTERFACE_NODE, &no_shutdown_if_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_dampened_paths_cmd_vtysh); + install_element (ENABLE_NODE, &test_pim_receive_assert_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_default_originate_rmap_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ripng_zebra_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_prefix_pathtype_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_nssa_translate_no_summary_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_mpls_te_inter_as_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_neighbor_routes_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_in_cmd_vtysh); + install_element (BGP_NODE, &bgp_rr_allow_outbound_policy_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_as_set_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv6_safi_rsclient_summary_cmd_vtysh); + install_element (ISIS_NODE, &no_log_adj_changes_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_events_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_redistribute_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ecommunity_val_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_nsm_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_prefix_cmd_vtysh); + install_element (RMAP_NODE, &no_set_aggregator_as_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_flap_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community3_exact_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_flap_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community_exact_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_nssa_no_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_dampened_paths_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_standard_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_timers_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_snp_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (RMAP_NODE, &no_match_aspath_val_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_priority_l2_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_sources_retransmissions_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_normal_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_mask_as_set_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_ra_interval_msec_val_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_in_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_refresh_timer_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_activate_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_le_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community_cmd_vtysh); + install_element (INTERFACE_NODE, &csnp_interval_l2_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_default_metric_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_graceful_restart_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_redistribute_type_routemap_cmd_vtysh); + install_element (VTY_NODE, &vty_access_class_cmd_vtysh); + install_element (OSPF_NODE, &ospf_refresh_timer_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_protocol_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_soft_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_rsclient_summary_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (RMAP_NODE, &no_set_tag_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_port_cmd_vtysh); + install_element (RIP_NODE, &rip_distance_source_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_timers_cmd_vtysh); + install_element (OSPF6_NODE, &area_range_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_name_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_route_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_refresh_interval_l1_arg_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community2_exact_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_regexp_cmd_vtysh); + install_element (RMAP_NODE, &no_set_local_pref_val_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_override_capability_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community2_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_tag_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community4_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_neighbor_routes_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &ip_lcommunity_list_expanded_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_tag_distance_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &debug_pim_packets_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_remark_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_rsclient_route_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_tag_distance_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_interval_arg_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_damp_set3_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_prefix_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_graceful_restart_stalepath_time_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_route_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_external_intra_inter_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_rd_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &if_nhrp_nhs_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_rip_events_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_lcommunity_cmd_vtysh); + install_element (INTERFACE_NODE, &if_no_nhrp_reg_flags_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_pref_tag_vrf_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_instance_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_lcommunity_list_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community4_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community3_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_as_out_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_csum_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mroute_vrf_all_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l2_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (RIP_NODE, &no_rip_version_val_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_maxpaths_arg_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_cmd_vtysh); + install_element (CONFIG_NODE, &no_key_chain_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_pim_events_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (OSPF6_NODE, &no_auto_cost_reference_bandwidth_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_packet_all_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_external_inter_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_dampening_parameters_cmd_vtysh); + install_element (ENABLE_NODE, &show_zebra_fpm_stats_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (ISIS_NODE, &no_spf_interval_l1_arg_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_tag_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_tag_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_instance_rsclient_summary_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_brouter_router_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_prefix_first_match_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_default_metric_val_cmd_vtysh); + install_element (RMAP_NODE, &match_ip_route_source_cmd_vtysh); + install_element (ISIS_NODE, &no_spf_interval_l2_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_lsa_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_flap_route_map_cmd_vtysh); + install_element (RMAP_NODE, &match_local_pref_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_dead_interval_addr_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_prefix_detail_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_spfstats_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_events_cmd_vtysh); + install_element (RMAP_NODE, &match_peer_local_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_send_community_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_send_version_2_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_access_list_cmd_vtysh); + install_element (RMAP_NODE, &set_ipv6_nexthop_global_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (RIP_NODE, &rip_redistribute_type_routemap_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &vpnv4_network_route_map_cmd_vtysh); + install_element (OSPF_NODE, &ospf_router_id_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_nssa_translate_cmd_vtysh); + install_element (RMAP_NODE, &no_set_originator_id_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_default_information_originate_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_lcommunity2_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_as_set_summary_cmd_vtysh); + install_element (ISIS_NODE, &lsp_gen_interval_l2_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_redistribute_ipv4_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_events_cmd_vtysh); + install_element (OSPF_NODE, &pce_cap_flag_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_brouter_area_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community2_exact_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_default_originate_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_in_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_lupd_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_tag_distance_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_address_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_cmd_vtysh); + install_element (BGP_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_tag_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_event_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_any_cmd_vtysh); + install_element (VTY_NODE, &exec_timeout_sec_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_authentication_key_addr_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_nhrp_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_adj_cmd_vtysh); + install_element (ENABLE_NODE, &debug_rip_zebra_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_instance_ipv4_summary_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ripng_split_horizon_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_range_substitute_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv6_safi_rsclient_prefix_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_pref_cmd_vtysh); + install_element (OSPF_NODE, &ospf_passive_interface_default_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_infinite_day_month_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community3_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_authentication_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_summary_vrf_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags2_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_filter_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags2_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_export_list_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_homeagent_preference_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_tag_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ssmpingd_cmd_vtysh); + install_element (RIP_NODE, &no_rip_version_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_seq_le_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_spf_database_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_events_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_packet_send_recv_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_external_out_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_pim_ssm_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ecommunity_rt_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_summary_prefix_cmd_vtysh); + install_element (BGP_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_interface_cmd_vtysh); + install_element (INTERFACE_NODE, &no_psnp_interval_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_rib_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_igmp_events_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_neighbor_cmd_vtysh); + install_element (ENABLE_NODE, &debug_igmp_events_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_lcommunity3_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_topology_l2_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_delay_var_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_summary_cmd_vtysh); + install_element (BGP_NODE, &neighbor_ebgp_multihop_ttl_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_ism_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_mpls_te_link_cmd_vtysh); + install_element (RIP_NODE, &rip_distance_source_access_list_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_router_id_val_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_passive_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_intra_external_inter_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_in_prefix_filter_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_brouter_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_rd_neighbor_advertised_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_neighbor_received_routes_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_pkt_loss_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_summary_prefix_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_route_pathtype_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags2_tag_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_interfaces_cmd_vtysh); + install_element (ISIS_NODE, &no_dynamic_hostname_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_events_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_adj_cmd_vtysh); + install_element (RMAP_NODE, &ospf6_routemap_match_address_prefixlist_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_dead_interval_minimal_addr_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community2_exact_cmd_vtysh); + install_element (BGP_NODE, &bgp_maxpaths_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_tags_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_pim_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_ssmpingd_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_lcommunity_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_mtu_ignore_addr_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_authkey_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_lcommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community4_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_prefix_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_damp_unset2_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_redistribute_ipv4_metric_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (ENABLE_NODE, &show_bgp_statistics_view_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_ava_bw_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_detail_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_mroute_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_assert_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_pim_hello_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_regexp_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_capability_dynamic_cmd_vtysh); + install_element (RMAP_NODE, &ospf6_routemap_no_match_address_prefixlist_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ipv6_nexthop_global_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_lcommunity3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community_exact_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_compatible_rfc1583_cmd_vtysh); + install_element (ISIS_NODE, &lsp_refresh_interval_l2_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_maxpaths_ibgp_cmd_vtysh); + install_element (ISIS_NODE, &metric_style_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_flap_prefix_longer_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_multicast_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_route_cmd_vtysh); + install_element (OSPF_NODE, &no_pce_neighbor_cmd_vtysh); + install_element (ENABLE_NODE, &show_ipv6_access_list_cmd_vtysh); + install_element (ENABLE_NODE, &show_dmvpn_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_param4_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_rtevents_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_hello_interval_seconds_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_prefix_longer_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_views_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community3_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_igmp_query_interval_cmd_vtysh); + install_element (VIEW_NODE, &ipv6_bgp_neighbor_routes_cmd_vtysh); + install_element (INTERFACE_NODE, &no_psnp_interval_l2_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_igmp_interfaces_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_name_standard_cmd_vtysh); + install_element (INTERFACE_NODE, &tunnel_protection_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_standard_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_as_set_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_tags_cmd_vtysh); + install_element (CONFIG_NODE, &router_id_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv4_safi_rsclient_route_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_ifname_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_all_summary_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_igmp_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_tag_distance_vrf_cmd_vtysh); + install_element (INTERFACE_NODE, &psnp_interval_l2_cmd_vtysh); + install_element (OSPF_NODE, &ospf_max_metric_router_lsa_startup_cmd_vtysh); + install_element (VIEW_NODE, &clear_isis_neighbor_arg_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_param4_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_update_cmd_vtysh); + install_element (VIEW_NODE, &ipv6_mbgp_neighbor_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community_list_exact_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_prefix_pathtype_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags2_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_lcommunity2_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_zebra_packet_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_gen_interval_l1_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_pim_drprio_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_out_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_message_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_damp_set_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_zebra_fpm_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_rd_neighbor_routes_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_timers_connect_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_out_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_external_intra_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_nhrp_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_hello_interval_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_deterministic_med_cmd_vtysh); + install_element (ISIS_NODE, &no_max_lsp_lifetime_l1_arg_cmd_vtysh); + install_element (RMAP_NODE, &no_match_pathlimit_as_val_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_mask_summary_as_set_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_mask_natural_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_lcommunity_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_rsclient_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_lcommunity3_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (RMAP_NODE, &set_aggregator_as_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_distance_vrf_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_community_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_distance2_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_name_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_damp_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_cmd_vtysh); + install_element (INTERFACE_NODE, &multicast_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_prefix_cmd_vtysh); + install_element (ISIS_NODE, &no_spf_interval_arg_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_packet_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_received_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community4_exact_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (CONFIG_NODE, &debug_rip_events_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_seq_ge_le_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_received_prefix_filter_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community_info_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ipv6_ospf6_interface_cmd_vtysh); + install_element (ISIS_NODE, &lsp_gen_interval_l1_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community4_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (RIP_NODE, &no_rip_distance_source_access_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_pref_tag_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_message_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community_list_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_zebra_kernel_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_advertise_interval_val_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_message_digest_key_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_metric_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_aggregate_address_summary_only_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_neighbor_routes_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ip_nexthop_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_flap_filter_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_in_prefix_filter_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv6_safi_rsclient_route_cmd_vtysh); + install_element (BGP_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_message_sendrecv_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_rsclient_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community3_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_rsclient_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv4_safi_rsclient_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_multiplier_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_homeagent_lifetime_cmd_vtysh); + install_element (BGP_IPV6_NODE, &bgp_maxpaths_cmd_vtysh); + install_element (VIEW_NODE, &show_table_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_lcommunity4_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_le_ge_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_mask_any_cmd_vtysh); + install_element (INTERFACE_NODE, &no_csnp_interval_l1_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_zebra_rib_q_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_type_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_prefix_pathtype_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_type_authlen_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_bgp_network_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_update_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_tags_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (RMAP_NODE, &no_match_peer_local_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_rib_q_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_mask_natural_backdoor_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (RMAP_NODE, &match_probability_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_distance_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_address_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_managed_config_flag_cmd_vtysh); + install_element (CONFIG_NODE, &ip_extcommunity_list_name_expanded_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_keepalive_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_regexp_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_ism_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_default_information_originate_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_network_cmd_vtysh); + install_element (ENABLE_NODE, &test_pim_receive_prune_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_lcommunity4_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_hello_multiplier_cmd_vtysh); + install_element (OSPF_NODE, &pce_address_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_lcommunity2_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_route_map_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_in_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_trace_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ipv6_nexthop_local_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community3_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_expanded_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_distance_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_as_set_summary_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_enable_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_port_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_received_routes_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_as_set_summary_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_cidr_only_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_ge_le_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_safi_rsclient_route_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_addr_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_seq_ge_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_detail_cmd_vtysh); + install_element (OSPF_NODE, &ospf_mpls_te_router_addr_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_neighbor_adv_recd_routes_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (OSPF_NODE, &router_info_area_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_lsa_sub_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_network_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_dampening_params_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_lupd_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_infinite_month_day_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_safi_prefix_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_priority_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_pref_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_pim_packets_cmd_vtysh); + install_element (RMAP_NODE, &no_match_interface_val_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_self_originated_detail_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_metric_l1_arg_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_neighbor_cmd_vtysh); + install_element (RMAP_NODE, &set_aspath_exclude_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_le_ge_cmd_vtysh); + install_element (ISIS_NODE, &no_isis_default_originate_cmd_vtysh); + install_element (RMAP_NODE, &no_rmap_description_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_assert_metric_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community3_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_flags_pref_tag_vrf_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_transmit_delay_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_abr_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_rsclient_route_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_as_set_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_retransmitinterval_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_nht_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_cmd_vtysh); + install_element (RMAP_NODE, &no_match_peer_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_next_hop_val_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_refresh_interval_l2_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbors_peer_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (CONFIG_NODE, &ip_community_list_name_standard2_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_route_cmd_vtysh); + install_element (INTERFACE_NODE, &no_csnp_interval_arg_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_mroute_dist_cmd_vtysh); + install_element (ENABLE_NODE, &show_debugging_rip_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_ge_le_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rpf_addr_vrf_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_address_cmd_vtysh); + install_element (OSPF_NODE, &pce_domain_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_as_in_prefix_filter_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_igmp_events_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_pim_events_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_tag_distance2_vrf_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_cost_inet4_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_group_in_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_authentication_string_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_addr_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_route_map_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_priority_arg_cmd_vtysh); + install_element (BGP_NODE, &no_auto_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_rsclient_summary_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_as4_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_prefix_first_match_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_prefix_pathtype_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_lcommunity_list_arg_cmd_vtysh); + install_element (BGP_NODE, &neighbor_default_originate_rmap_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_neighbors_peer_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_cmd_vtysh); + install_element (VIEW_NODE, &show_debugging_zebra_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_protocol_vrf_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_neighbor_advertised_route_cmd_vtysh); + install_element (ENABLE_NODE, &test_pim_receive_join_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_param1_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_out_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_packet_all_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_hellointerval_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_route_map_cmd_vtysh); + install_element (RIP_NODE, &no_rip_offset_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &debug_rip_zebra_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_retransmit_interval_addr_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_rd_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_community_all_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (RIP_NODE, &no_rip_network_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community_list_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_ifname_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_timers_min_ls_arrival_cmd_vtysh); + install_element (BGP_NODE, &neighbor_timers_cmd_vtysh); + install_element (RIP_NODE, &no_if_rmap_cmd_vtysh); + install_element (CONFIG_NODE, &ip_lcommunity_list_name_standard_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (ISIS_NODE, &no_max_lsp_lifetime_l2_arg_cmd_vtysh); + install_element (RMAP_NODE, &no_match_community_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community3_exact_cmd_vtysh); + install_element (ISIS_NODE, &max_lsp_lifetime_l2_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_distance_source_access_list_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_as4_segment_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (CONFIG_NODE, &debug_pim_packets_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_rsclient_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_dampened_paths_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_as4_segment_cmd_vtysh); + install_element (BGP_IPV6_NODE, &ipv6_bgp_distance_source_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_flags_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_flap_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_flap_statistics_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_lsa_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbor_damp_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_nexthop_local_unchanged_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_ge_cmd_vtysh); + install_element (ENABLE_NODE, &show_bgp_statistics_view_vpnv4_cmd_vtysh); + install_element (ISIS_NODE, &set_attached_bit_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_priority_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_in_cmd_vtysh); + install_element (BGP_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_route_cmd_vtysh); + install_element (BGP_NODE, &neighbor_override_capability_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_rpf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_external_in_prefix_filter_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_spf_time_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_local_as_val3_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_activate_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_route_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_network_route_map_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_ra_lifetime_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rpf_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_interface_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_zebra_sendrecv_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_route_pathtype_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_detail_name_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_default_originate_rmap_cmd_vtysh); + install_element (BGP_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_lsa_hex_detail_cmd_vtysh); + install_element (VTY_NODE, &no_vty_login_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_igmp_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_in_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_route_map_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_router_preference_val_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_standard_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community4_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_lcommunity3_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_lcommunity4_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_rd_prefix_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_param3_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community2_exact_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_flooding_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_out_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_instance_all_rsclient_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_lsp_gen_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_suppress_ra_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_pref_tag_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_normal_cmd_vtysh); + install_element (CONFIG_NODE, &debug_static_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_out_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_route_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_shortcut_cmd_vtysh); + install_element (OSPF_NODE, &ospf_network_area_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_as_in_prefix_filter_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_rev_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_all_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_in_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_addr_vrf_all_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_tag_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_te_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community3_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags2_tag_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_gen_interval_l1_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_vrf_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_range_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_keepalive_cmd_vtysh); + install_element (ISIS_NODE, &isis_mpls_te_inter_as_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_prefix_list_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_bestpath_aspath_ignore_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_tags_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_rd_tags_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (RMAP_NODE, &no_match_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_addr_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_brouter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_regexp_cmd_vtysh); + install_element (OSPF_NODE, &ospf_auto_cost_reference_bandwidth_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community_list_exact_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_mpls_te_interface_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_rsclient_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_in_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_dampening_flap_stats_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_transmit_delay_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_source_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_reachable_time_val_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_metric_l1_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_summary_only_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_rsclient_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community4_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_rsclient_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (RMAP_NODE, &set_community_none_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_lsa_hex_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_prefix_list_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_cost_u32_inet4_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_message_sendrecv_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_any_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv4_safi_summary_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_mroute_source_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_lcommunity3_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_out_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_any_mask_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_fpm_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_redistribute_type_metric_routemap_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_spfevents_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_seq_ge_le_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (RMAP_NODE, &no_set_pathlimit_ttl_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_rsclient_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_summary_cmd_vtysh); + install_element (RMAP_NODE, &no_set_metric_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_neighbor_id_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_view_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_holdtime_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_stub_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_standard_any_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_prefix_longer_cmd_vtysh); + install_element (INTERFACE_NODE, &no_tunnel_protection_cmd_vtysh); + install_element (BGP_NODE, &neighbor_remote_as_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_dead_interval_seconds_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_out_cmd_vtysh); + install_element (BGP_NODE, &neighbor_timers_connect_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_community_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_te_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_tag_distance2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_flap_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_distance_vrf_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_authentication_args_addr_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_longer_cmd_vtysh); + install_element (CONFIG_NODE, &debug_igmp_events_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_rd_neighbor_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_community_list_arg_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_network_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_inter_external_intra_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_summary_only_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbor_routes_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_ifmtu_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_summary_name_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_bestpath_med2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_prefix_longer_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_adj_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_router_id_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_spf_time_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_redistribute_type_routemap_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_rip_zebra_cmd_vtysh); + install_element (INTERFACE_NODE, &no_csnp_interval_l1_arg_cmd_vtysh); + install_element (RMAP_NODE, &rmap_onmatch_goto_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_description_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community2_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_soft_in_cmd_vtysh); + install_element (RMAP_NODE, &no_set_weight_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_prefix_cmd_vtysh); + install_element (RMAP_NODE, &set_aspath_prepend_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_authentication_key_chain_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_filter_list_cmd_vtysh); + install_element (BGP_NODE, &bgp_confederation_peers_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &key_string_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_activate_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_mtu_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_lcommunity2_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_offlink_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_cost_u32_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_spftrigg_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_neighbor_prefix_counts_cmd_vtysh); + install_element (CONFIG_NODE, &ip_multicast_routing_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_authentication_key_chain2_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_normal_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_detail_cmd_vtysh); + install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_metric_rmap_cmd_vtysh); + install_element (INTERFACE_NODE, &no_psnp_interval_l1_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_igmp_packets_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_vrf_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_summary_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_default_cost_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_external_in_prefix_filter_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (CONFIG_NODE, &ip_as_path_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_redistribute_type_metric_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_address_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_spf_time_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_day_month_day_month_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_backdoor_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_flags_pref_cmd_vtysh); + install_element (RMAP_NODE, &set_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_hello_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_ava_bw_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_enable_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_paths_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_homeagent_preference_val_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_tag_distance_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_maxpaths_arg_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_statistics_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_address_prefix_list_val_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ripng_packet_direct_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (CONFIG_NODE, &no_vrf_netns_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (BGP_NODE, &bgp_distance_source_access_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_rsclient_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_pref_tag_vrf_cmd_vtysh); + install_element (BGP_NODE, &old_ipv6_aggregate_address_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_mroute_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_ibgp_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_mask_cmd_vtysh); + install_element (BGP_NODE, &bgp_enforce_first_as_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_neighbors_peer_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_metric_l2_cmd_vtysh); + install_element (VIEW_NODE, &show_version_ospf6_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_authentication_key_addr_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_access_list_remark_arg_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_priority_addr_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_access_list_cmd_vtysh); + install_element (RMAP_NODE, &no_set_community_none_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_external_soft_in_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_send_community_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (ENABLE_NODE, &show_debugging_nhrp_cmd_vtysh); + install_element (CONFIG_NODE, &ip_lcommunity_list_name_standard2_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_irdp_address_preference_cmd_vtysh); + install_element (ISIS_NODE, &area_passwd_clear_snpauth_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_lcommunity_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_bgp_distance_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_maxpaths_ibgp_cmd_vtysh); + install_element (INTERFACE_NODE, &psnp_interval_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (BGP_NODE, &bgp_bestpath_aspath_confed_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_route_map_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_expanded_cmd_vtysh); + install_element (RMAP_NODE, &no_set_aspath_prepend_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_mpls_te_router_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_abr_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_instance_peer_rsclient_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_default_ipv4_unicast_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_reachable_time_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community_list_exact_cmd_vtysh); + install_element (BGP_NODE, &bgp_fast_external_failover_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_description_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_param2_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community4_exact_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_passwd_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_nht_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_redistribute_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_advertise_interval_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_gen_interval_l2_arg_cmd_vtysh); + install_element (CONFIG_NODE, &no_route_map_cmd_vtysh); + install_element (RMAP_NODE, &match_ip_address_cmd_vtysh); + install_element (ENABLE_NODE, &no_terminal_monitor_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_router_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_route_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_zebra_packet_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_in_prefix_filter_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_out_cmd_vtysh); + install_element (RMAP_NODE, &no_set_lcommunity_delete_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_err_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ospf6_ifmtu_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_next_hop_prefix_list_val_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_multicast_mode_noarg_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_kernel_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_igmp_join_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_mask_natural_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_intra_inter_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_summary_as_set_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_out_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ripng_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_priority_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_neighbor_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_cmd_vtysh); + install_element (ISIS_NODE, &no_isis_mpls_te_inter_as_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_prefix_longer_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_regexp_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_out_cmd_vtysh); + install_element (ENABLE_NODE, &show_bgp_statistics_vpnv4_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_routes_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_cluster_id_arg_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_le_cmd_vtysh); + install_element (ENABLE_NODE, &show_zebra_client_summary_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_send_community_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_adv_router_linkstate_id_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_flags_pref_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_redistribute_ipv4_metric_rmap_cmd_vtysh); + install_element (RMAP_NODE, &no_match_local_pref_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_day_month_month_day_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community3_exact_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_rsclient_summary_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_seq_le_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_zebra_sendrecv_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_brouter_area_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_summary_as_set_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_instance_ipv4_summary_cmd_vtysh); + install_element (CONFIG_NODE, &debug_nhrp_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_rsclient_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community3_exact_cmd_vtysh); + install_element (RIPNG_NODE, &no_if_ipv6_rmap_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags2_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_summary_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_zebra_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_neighbor_int_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_mask_natural_backdoor_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_safi_summary_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_upd_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_authentication_string_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_lcommunity2_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_route_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_ifname_prefix_detail_cmd_vtysh); + install_element (OSPF6_NODE, &no_area_range_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_vrf_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_filter_list_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_default_metric_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_mtu_ignore_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_statistics_cmd_vtysh); + install_element (INTERFACE_NODE, &no_bandwidth_if_val_cmd_vtysh); + install_element (BGP_NODE, &bgp_distance_source_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_ra_lifetime_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ripng_packet_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_authentication_key_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_enforce_multihop_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_expanded_all_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_authentication_mode_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_standard_any_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_router_cmd_vtysh); + install_element (BGP_NODE, &neighbor_ebgp_multihop_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_prefix_longer_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_sequence_number_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_lcommunity2_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community_all_cmd_vtysh); + install_element (ISIS_NODE, &no_spf_interval_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_stub_no_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_filter_list_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_tag_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_as_soft_in_cmd_vtysh); + install_element (CONFIG_NODE, &debug_igmp_trace_cmd_vtysh); + install_element (ISIS_NODE, &no_isis_mpls_te_on_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_param1_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &no_key_chain_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_host_mask_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_host_host_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_default_metric_val_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_external_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_sources_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community2_exact_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community_list_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_route_cmd_vtysh); + install_element (RMAP_NODE, &match_metric_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_tag_distance2_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_vrf_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_rsclient_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_ism_sub_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_encap_network_cmd_vtysh); + install_element (OSPF_NODE, &no_capability_opaque_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_mroute_source_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_as4_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_summary_cmd_vtysh); + install_element (RMAP_NODE, &no_set_vpnv4_nexthop_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_cmd_vtysh); + install_element (RIP_NODE, &no_rip_allow_ecmp_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l2_arg_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (VIEW_NODE, &show_debugging_pim_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_name_seq_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_access_list_remark_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (RMAP_NODE, &no_set_originator_id_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbor_received_routes_cmd_vtysh); + install_element (OSPF_NODE, &ospf_mpls_te_inter_as_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_damp_set_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_host_any_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (ISIS_NODE, &isis_mpls_te_router_addr_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_id_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_mask_natural_route_map_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_prefix_pathtype_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_packet_dump_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_advertised_route_cmd_vtysh); + install_element (RIP_NODE, &rip_redistribute_type_metric_routemap_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_summary_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community3_exact_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_events_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_neighbor_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_rsclient_summary_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_tag_distance2_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_le_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_events_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_priority_addr_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_zebra_cmd_vtysh); + install_element (ENABLE_NODE, &debug_igmp_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_as_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_dead_interval_cmd_vtysh); + install_element (VIEW_NODE, &show_database_detail_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_out_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_brouter_router_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_address_cmd_vtysh); + install_element (BGP_NODE, &bgp_default_local_preference_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_dampening_address_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_spftrigg_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_rsclient_route_cmd_vtysh); + install_element (CONFIG_NODE, &debug_mroute_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_nsm_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_route_pathtype_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_route_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_delay_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_longer_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_prefix_list_name_prefix_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_network_route_map_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_ge_le_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_mask_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (OSPF_NODE, &ospf_distance_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_delay_mm_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_send_version_1_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_neighbors_peer_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_split_horizon_poisoned_reverse_cmd_vtysh); + install_element (RIP_NODE, &rip_distance_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_lcommunity_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_neighbor_detail_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_lcommunity3_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community4_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_disable_connected_check_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_rip_packet_direct_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbor_flap_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_match_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (ENABLE_NODE, &show_ipv6_mroute_vrf_all_cmd_vtysh); + install_element (RMAP_NODE, &no_match_community_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_tag_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_neighbor_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_summary_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_password_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_ism_cmd_vtysh); + install_element (CONFIG_NODE, &ip_community_list_standard2_cmd_vtysh); + install_element (INTERFACE_NODE, &if_nhrp_flags_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community2_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_packet_send_recv_detail_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_refresh_interval_l1_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_description_arg_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_database_type_adv_router_cmd_vtysh); + install_element (INTERFACE_NODE, &if_no_nhrp_mtu_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (RMAP_NODE, &no_match_origin_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_summary_prefix_vrf_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_redistribute_ipv4_rmap_metric_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_all_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_as_soft_out_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_redistribute_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_route_source_prefix_list_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_keepalive_cmd_vtysh); + install_element (ENABLE_NODE, &show_ip_access_list_name_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_lcommunity2_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_community_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community_list_cmd_vtysh); + install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community2_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_bgp_distance_source_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_send_community_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_use_bw_cmd_vtysh); + install_element (CONFIG_NODE, &dump_bgp_all_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_router_isis_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_priority_l2_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_hello_interval_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_timers_val_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_distance2_vrf_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (RMAP_NODE, &match_ecommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_attr_info_cmd_vtysh); + install_element (RMAP_NODE, &rmap_call_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_le_ge_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_rsclient_cmd_vtysh); + install_element (RMAP_NODE, &no_rmap_continue_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_packet_send_recv_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_maxpaths_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_activate_cmd_vtysh); + install_element (RMAP_NODE, &rmap_onmatch_next_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_spf_database_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_filter_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community4_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_lcommunity_list_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_route_map_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_unrsv_bw_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbor_routes_cmd_vtysh); + install_element (INTERFACE_NODE, &no_csnp_interval_l2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_neighbor_advertised_routes_cmd_vtysh); + install_element (BGP_NODE, &bgp_deterministic_med_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_month_day_month_day_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_mask_backdoor_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community3_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_router_detail_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community2_cmd_vtysh); + install_element (BGP_NODE, &bgp_bestpath_med_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_authentication_cmd_vtysh); + install_element (OSPF_NODE, &capability_opaque_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_confederation_peers_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_cost_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_multicast_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_hello_interval_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_lcommunity4_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_soft_out_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_vrf_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community3_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_rsclient_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv4_safi_rsclient_prefix_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_default_local_preference_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_lsa_hex_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_always_compare_med_cmd_vtysh); + install_element (BGP_IPV6_NODE, &ipv6_bgp_network_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_dampening_dampd_paths_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_message_digest_key_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community4_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_community2_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_as_soft_in_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_lsa_hex_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_update_cmd_vtysh); + install_element (INTERFACE_NODE, &if_nhrp_map_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_neighbor_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_weight_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_timers_throttle_spf_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_client_to_client_reflection_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_tag_distance_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_extcommunity_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_neighbor_detail_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_nssa_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbors_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (BGP_NODE, &neighbor_password_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_zebra_nht_cmd_vtysh); + install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_ssmpingd_cmd_vtysh); + install_element (INTERFACE_NODE, &linkdetect_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_cmd_vtysh); + install_element (RIP_NODE, &rip_redistribute_type_metric_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_standard_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_irdp_shutdown_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_id_router_detail_cmd_vtysh); + install_element (RMAP_NODE, &no_rmap_onmatch_goto_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_route_map_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_pref_tag_vrf_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_range_advertise_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_topology_l1_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_lupd_cmd_vtysh); + install_element (ISIS_NODE, &area_passwd_md5_snpauth_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_summary_only_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ipv6_address_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ripng_status_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_passwd_arg_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbors_cmd_vtysh); + install_element (INTERFACE_NODE, &no_psnp_interval_l2_arg_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_authentication_message_digest_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_rsclient_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_filter_list_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_day_month_day_month_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_protocol_vrf_all_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community_exact_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_fsm_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_mask_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv4_safi_rsclient_summary_cmd_vtysh); + install_element (BGP_NODE, &bgp_bestpath_aspath_multipath_relax_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_pim_interfaces_cmd_vtysh); + install_element (INTERFACE_NODE, &if_no_nhrp_flags_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_area_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_redistribute_routemap_cmd_vtysh); + install_element (CONFIG_NODE, &ip_community_list_name_standard_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_prefix_longer_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_distance2_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ssmpingd_cmd_vtysh); + install_element (RMAP_NODE, &set_origin_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_pref_tag_cmd_vtysh); + install_element (OSPF_NODE, &ospf_max_metric_router_lsa_shutdown_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_graceful_restart_stalepath_time_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_hello_interval_l1_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_events_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_nsm_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_distance_vrf_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_cost_u32_inet4_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_day_month_month_day_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_duration_month_day_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_packet_all_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_addr_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_nortaddr_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community3_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_authentication_key_cmd_vtysh); + install_element (INTERFACE_NODE, &no_csnp_interval_l2_arg_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community2_cmd_vtysh); + install_element (BGP_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (ISIS_NODE, &lsp_refresh_interval_l1_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags2_tag_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_zebra_sendrecv_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_neighbor_damp_cmd_vtysh); + install_element (ENABLE_NODE, &rmap_show_name_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &send_lifetime_duration_day_month_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_summary_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_pref_vrf_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_metric_rmap_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_neighbor_received_routes_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_mroute_vrf_cmd_vtysh); + install_element (RIP_NODE, &no_rip_distance_source_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_lcommunity2_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_neighbors_peer_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_summary_as_set_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_groups_retransmissions_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_bgp_distance_source_access_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_preference_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_sequence_number_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_adv_router_detail_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_homeagent_preference_cmd_vtysh); + install_element (BGP_NODE, &neighbor_port_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_zebra_cmd_vtysh); + install_element (RIP_NODE, &rip_passive_interface_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_interface_area_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_lcommunity4_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_md5_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_self_originated_detail_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_zebra_events_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_memory_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbor_received_prefix_filter_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community3_cmd_vtysh); + install_element (BGP_NODE, &bgp_damp_unset_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_lcommunity4_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_database_type_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_vrf_all_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_prefix_list_name_seq_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (RMAP_NODE, &rmap_continue_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_flags_pref_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_route_pathtype_cmd_vtysh); + install_element (ISIS_NODE, &area_passwd_clear_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_out_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_tag_distance2_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_expanded_all_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_out_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community3_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_multicast_mode_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_packet_direct_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_in_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_strict_capability_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_neighbors_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_in_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_mask_route_map_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ipv6_address_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_join_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_neighbor_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_nsm_sub_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_mask_as_set_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_rd_route_cmd_vtysh); + install_element (CONFIG_NODE, &ip_lcommunity_list_standard_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_vpn_rd_route_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_md5_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_passive_interface_cmd_vtysh); + install_element (RIP_NODE, &no_rip_redistribute_type_metric_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_gen_interval_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_upd_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_intra_inter_external_cmd_vtysh); + install_element (BGP_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (OSPF_NODE, &ospf_neighbor_poll_interval_priority_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_rsclient_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_tag_vrf_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_igmp_query_max_response_time_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_flap_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_external_soft_in_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_timers_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_rsclient_route_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_packets_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_cmd_vtysh); + install_element (VIEW_NODE, &show_database_arg_detail_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbor_advertised_route_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_vrf_cmd_vtysh); + install_element (RMAP_NODE, &set_lcommunity_none_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_nsm_sub_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_neighbor_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_neighbor_routes_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_lcommunity4_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_distance_vrf_cmd_vtysh); + install_element (RMAP_NODE, &match_ip_address_prefix_list_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_offset_list_ifname_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_debug_messages_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_pim_oil_cmd_vtysh); + install_element (INTERFACE_NODE, &if_no_nhrp_holdtime_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_tag_distance_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_lcommunity2_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_lcommunity4_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_as_set_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_pref_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (RMAP_NODE, &ospf6_routemap_no_set_metric_type_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_neighbor_received_prefix_filter_cmd_vtysh); + install_element (OSPF_NODE, &ospf_timers_min_ls_arrival_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_lcommunity3_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags2_tag_vrf_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_inter_external_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_neighbor_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (ISIS_NODE, &max_lsp_lifetime_l1_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_pim_trace_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_neighbor_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_log_adjacency_changes_detail_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_lsa_sub_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_log_adjacency_changes_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_lcommunity3_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_list_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_interval_l2_arg_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_default_metric_cmd_vtysh); + install_element (OSPF6_NODE, &area_import_list_cmd_vtysh); + install_element (RMAP_NODE, &set_local_pref_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_network_cmd_vtysh); + install_element (CONFIG_NODE, &debug_rip_packet_direct_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_seq_ge_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_neighbor_detail_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ipv6_next_hop_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ospf6_cost_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community4_exact_cmd_vtysh); + install_element (OSPF_NODE, &ospf_neighbor_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_passive_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_neighbor_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_route_source_prefix_list_cmd_vtysh); + install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_rmap_metric_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_regexp_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_max_metric_router_lsa_shutdown_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_community3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_lcommunity_all_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_any_host_cmd_vtysh); + install_element (RMAP_NODE, &set_atomic_aggregate_cmd_vtysh); + install_element (CONFIG_NODE, &bgp_config_type_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_route_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community2_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_regexp_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_filter_list_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_host_host_cmd_vtysh); + install_element (BGP_NODE, &bgp_client_to_client_reflection_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_pref_tag_cmd_vtysh); + install_element (ZEBRA_NODE, &ripng_redistribute_ripng_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_ra_lifetime_val_cmd_vtysh); + install_element (ISIS_NODE, &no_max_lsp_lifetime_arg_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_protocol_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_network_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_send_version_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_tag_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_nht_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_spfevents_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rpf_vrf_all_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_pim_zebra_cmd_vtysh); + install_element (ENABLE_NODE, &test_igmp_receive_report_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_mask_as_set_summary_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_update_source_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_in_prefix_filter_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_confederation_identifier_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_authentication_string2_cmd_vtysh); + install_element (OSPF_NODE, &ospf_default_information_originate_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_maxpaths_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community_all_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_debug_misc_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_prefix_cmd_vtysh); + install_element (BGP_NODE, &neighbor_peer_group_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_range_advertise_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_message_digest_key_cmd_vtysh); + install_element (ENABLE_NODE, &show_ip_nhrp_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_damp_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_tag_distance_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rpf_addr_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_neighbor_poll_interval_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community2_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_interface_arg_cmd_vtysh); + install_element (RMAP_NODE, &match_aspath_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_forwarding_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_refresh_interval_l2_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &if_nhrp_network_id_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_external_out_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_in_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_default_originate_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_mask_summary_only_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_damp_set3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_prefix_pathtype_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_igmp_trace_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_adv_router_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_nht_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_lcommunity2_cmd_vtysh); + install_element (CONFIG_NODE, &no_bgp_config_type_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_md5_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_prefix_longer_cmd_vtysh); + install_element (ENABLE_NODE, &test_pim_receive_upcall_cmd_vtysh); + install_element (BGP_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (RIP_NODE, &no_rip_passive_interface_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_aggregate_address_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_community4_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community3_exact_cmd_vtysh); + install_element (ISIS_NODE, &spf_interval_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_interval_l1_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_database_type_self_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_out_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_network_mask_natural_cmd_vtysh); + install_element (ISIS_NODE, &no_net_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (CONFIG_NODE, &ip_ssmpingd_cmd_vtysh); + install_element (RMAP_NODE, &set_metric_rtt_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_adv_router_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_name_expanded_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_maxpaths_ibgp_arg_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_any_host_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (RMAP_NODE, &match_community_exact_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_authentication_addr_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_flap_statistics_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_jp_override_interval_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_events_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_prefix_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_prefix_vrf_all_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_igmp_query_interval_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &encap_network_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_network_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_as_path_access_list_all_cmd_vtysh); + install_element (CONFIG_NODE, &ip_mroute_dist_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_in_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_prefix_longer_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_route_cmd_vtysh); + install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_metric_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_in_prefix_filter_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_flags_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_brouter_area_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_upstream_rpf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_rsclient_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbors_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_distance_source_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_local_membership_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_distance_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_retransmit_interval_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_hello_multiplier_l1_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_flap_filter_list_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_priority_l1_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_mtu_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_ifname_prefix_match_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_receive_version_num_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_lcommunity3_cmd_vtysh); + install_element (ENABLE_NODE, &test_pim_receive_hello_cmd_vtysh); + install_element (BGP_NODE, &bgp_damp_unset2_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_area_spf_tree_cmd_vtysh); + install_element (RMAP_NODE, &set_ipv6_nexthop_local_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (RMAP_NODE, &set_metric_cmd_vtysh); + install_element (ISIS_NODE, &no_area_passwd_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (RMAP_NODE, &no_match_community_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community_exact_cmd_vtysh); + install_element (ISIS_NODE, &net_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_fpm_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv4_safi_summary_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_send_community_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community3_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_route_cmd_vtysh); + install_element (CONFIG_NODE, &ip_extcommunity_list_expanded_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_lcommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_rsclient_route_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_activate_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_network_mask_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (VIEW_NODE, &show_database_arg_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_rmap_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_activate_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_ttl_security_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv6_neighbors_peer_cmd_vtysh); + install_element (CONFIG_NODE, &ip_lcommunity_list_standard2_cmd_vtysh); + install_element (BGP_NODE, &neighbor_local_as_no_prepend_replace_as_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_minadvertinterval_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_encap_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_flooding_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_prefix_list_name_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_neighbor_flap_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_dead_interval_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_cost_cmd_vtysh); + install_element (RIP_NODE, &rip_default_information_originate_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_nht_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_passive_interface_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_rsclient_summary_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_summary_1w_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_in_prefix_filter_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_timers_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_packets_filter_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_homeagent_config_flag_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_graceful_restart_restart_time_cmd_vtysh); + install_element (INTERFACE_NODE, &if_nhrp_holdtime_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_simulate_spf_tree_root_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_addr_vrf_all_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_standard_all_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_group_soft_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_ge_le_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_router_detail_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_rtevents_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_linkstate_id_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_neighbor_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_suppress_ra_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_packetdump_recv_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_igmp_events_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_vrf_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_rsclient_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community2_exact_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_csum_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_distance_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_neighbor_received_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_summary_only_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_neighbor_advertised_route_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_packetdump_recv_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_metric_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_ge_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_nssa_cmd_vtysh); + install_element (RMAP_NODE, &set_ipv6_nexthop_peer_cmd_vtysh); + install_element (OSPF_NODE, &ospf_neighbor_poll_interval_cmd_vtysh); + install_element (VTY_NODE, &vty_restricted_mode_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_lsp_sched_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_advertised_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community4_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_summary_only_cmd_vtysh); + install_element (ISIS_NODE, &area_lsp_mtu_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_update_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_snp_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_gen_interval_l2_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_rsclient_route_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_nssa_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_lsp_sched_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_authentication_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_rfc1583_flag_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_name_standard_all_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_err_cmd_vtysh); + install_element (RMAP_NODE, &no_set_community_delete_val_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); + install_element (RIP_NODE, &no_rip_redistribute_type_routemap_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &no_key_string_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_out_cmd_vtysh); + install_element (INTERFACE_NODE, &if_no_nhrp_map_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_out_cmd_vtysh); + install_element (BGP_NODE, &old_no_ipv6_aggregate_address_summary_only_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ripng_packet_direct_cmd_vtysh); + install_element (VIEW_NODE, &ipv6_mbgp_neighbor_advertised_route_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_flags_pref_tag_vrf_cmd_vtysh); + install_element (BGP_NODE, &bgp_damp_set_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv4_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_route_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_tag_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_lsa_sub_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_interface_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_neighbor_detail_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_summary_as_set_cmd_vtysh); + install_element (RMAP_NODE, &no_set_local_pref_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_aggregate_address_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_forwarding_cmd_vtysh); + install_element (ISIS_NODE, &no_max_lsp_lifetime_l2_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community4_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_distance_ospf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_group_out_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_flap_regexp_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_pref_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_interface_name_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_asbr_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_rtaddr_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_border_routers_cmd_vtysh); + install_element (RMAP_NODE, &set_aspath_prepend_lastas_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_month_day_month_day_cmd_vtysh); + install_element (RIP_NODE, &rip_offset_list_cmd_vtysh); + install_element (ENABLE_NODE, &debug_static_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_send_version_num_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (RMAP_NODE, &match_community_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_address_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_prefix_vrf_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_log_adjacency_changes_cmd_vtysh); + install_element (RMAP_NODE, &no_set_atomic_aggregate_cmd_vtysh); + install_element (ENABLE_NODE, &clear_zebra_fpm_stats_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_tag_distance_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_next_hop_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_isis_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_lcommunity_list_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_metric_l2_arg_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_asbr_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_out_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_event_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_default_cost_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_ism_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_id_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ripng_packet_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_instance_peer_rsclient_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_distance_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_rsclient_cmd_vtysh); + install_element (OSPF6_NODE, &no_area_export_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_instance_rsclient_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_neighbor_advertised_route_cmd_vtysh); + install_element (BGP_NODE, &neighbor_route_map_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_pim_packetdump_recv_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_rd_route_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_mask_as_set_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_maxpaths_ibgp_arg_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_rsclient_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_pref_cmd_vtysh); + install_element (ISIS_NODE, &isis_default_originate_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_packetdump_send_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_damp_unset_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_lsp_gen_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_rd_route_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_rsclient_summary_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_passwd_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_network_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_encap_summary_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_lupd_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_external_in_cmd_vtysh); + install_element (INTERFACE_NODE, &no_linkdetect_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_in_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ipv6_prefix_list_name_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_redistribute_type_metric_routemap_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_flags_pref_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_brouter_router_cmd_vtysh); + install_element (BGP_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_NODE, &bgp_bestpath_aspath_ignore_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_route_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_distance_vrf_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ripng_events_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ecommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_database_type_id_self_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_packet_dump_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community2_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_authentication_args_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_addr_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_cmd_vtysh); + install_element (BGP_NODE, &bgp_maxpaths_ibgp_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_views_cmd_vtysh); + install_element (RMAP_NODE, &match_tag_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_lcommunity_all_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_maxbw_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_summary_cmd_vtysh); + install_element (RIP_NODE, &no_rip_redistribute_type_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbor_prefix_counts_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (RIP_NODE, &no_rip_route_cmd_vtysh); + install_element (RMAP_NODE, &no_set_aspath_prepend_val_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_as_path_access_list_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_expanded_all_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_normal_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_prefix_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_authtype_args_authkey_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_allow_martians_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_pim_events_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_rsclient_summary_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_bestpath_aspath_multipath_relax_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_static_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_allow_martians_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_interface_cmd_vtysh); + install_element (ISIS_NODE, &spf_interval_l2_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_vpnv4_soft_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_snp_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_rsclient_route_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_mask_as_set_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags2_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_instance_summary_cmd_vtysh); + install_element (ISIS_NODE, &no_max_lsp_lifetime_l1_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_interface_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_lcommunity4_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_export_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_shortcut_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_rev_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_route_map_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_authkey_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_rsclient_prefix_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_distance_ospf6_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_out_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_sequence_number_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged4_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_mtu_ignore_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_te_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_interval_l1_arg_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_description_arg_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_rsclient_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_managed_config_flag_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_tag_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_linkstate_id_detail_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_vpn_summary_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_delay_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_hello_padding_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_allow_ecmp_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_in_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_lcommunity_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_exact_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_offlink_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_assert_internal_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_pim_drprio_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mroute_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_lsa_hex_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_split_horizon_cmd_vtysh); + install_element (VIEW_NODE, &ipv6_bgp_neighbor_received_routes_cmd_vtysh); + install_element (ISIS_NODE, &no_isis_redistribute_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rip_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_delay_var_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_fsm_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_network_mask_natural_route_map_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_database_type_id_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbor_damp_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_network_mask_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rip_status_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rpf_addr_vrf_all_cmd_vtysh); + install_element (BGP_NODE, &bgp_router_id_cmd_vtysh); + install_element (BGP_NODE, &neighbor_shutdown_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_rd_neighbor_advertised_routes_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_out_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_instance_neighbors_peer_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_network_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_message_sendrecv_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_in_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_broadcast_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_mask_cmd_vtysh); + install_element (BGP_NODE, &old_no_ipv6_bgp_network_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_brouter_cmd_vtysh); + install_element (RMAP_NODE, &no_set_tag_val_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_shutdown_cmd_vtysh); + install_element (RMAP_NODE, &match_ip_next_hop_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv4_rsclient_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv4_safi_rsclient_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_distance_cmd_vtysh); + install_element (ISIS_NODE, &no_lsp_refresh_interval_arg_cmd_vtysh); + install_element (RMAP_NODE, &no_set_metric_type_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_pim_packets_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_intra_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbors_peer_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_filter_cmd_vtysh); + install_element (RMAP_NODE, &no_rmap_onmatch_next_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_tag_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_router_id_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_rip_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_rip_zebra_cmd_vtysh); + install_element (RIP_NODE, &no_rip_default_metric_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_lcommunity3_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_maxadvertinterval_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_graceful_restart_restart_time_val_cmd_vtysh); + install_element (BGP_NODE, &bgp_damp_set2_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_igmp_trace_cmd_vtysh); + install_element (ISIS_NODE, &is_type_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_rsclient_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_authentication_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_detail_name_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_ripng_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_network_mask_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_name_expanded_all_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ecommunity_soo_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_rtevents_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_priority_cmd_vtysh); + install_element (RIP_NODE, &no_rip_distance_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ecommunity_soo_val_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_nssa_cmd_vtysh); + install_element (RMAP_NODE, &no_set_metric_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_host_any_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_res_bw_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_csum_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (BGP_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_adv_router_linkstate_id_detail_cmd_vtysh); + install_element (CONFIG_NODE, &nhrp_nflog_group_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (ISIS_NODE, &log_adj_changes_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community3_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_paths_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_in_prefix_filter_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_dead_interval_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_in_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_lcommunity2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_community2_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_address_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_nssa_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_detail_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_any_any_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (OSPF_NODE, &ospf_abr_type_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_flap_cmd_vtysh); + install_element (BGP_NODE, &neighbor_advertise_interval_cmd_vtysh); + install_element (ISIS_NODE, &no_is_type_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_distance_source_cmd_vtysh); + install_element (VIEW_NODE, &show_database_cmd_vtysh); + install_element (ZEBRA_NODE, &no_rip_redistribute_rip_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_flap_prefix_longer_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbor_received_prefix_filter_cmd_vtysh); + install_element (RMAP_NODE, &set_ip_nexthop_peer_cmd_vtysh); + install_element (ISIS_NODE, &no_spf_interval_l2_arg_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_interval_l2_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_irdp_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_enforce_first_as_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_pim_zebra_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_rsclient_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l1_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_network_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_md5_cmd_vtysh); + install_element (BGP_NODE, &neighbor_strict_capability_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_summary_as_set_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_mpls_te_router_cmd_vtysh); + install_element (RMAP_NODE, &rmap_description_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_timers_arg_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community3_exact_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (BGP_NODE, &neighbor_dont_capability_negotiate_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_topology_cmd_vtysh); + install_element (RMAP_NODE, &match_interface_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ipv6_address_val_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community4_exact_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_filter_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_spf_process_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_route_pathtype_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community2_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_route_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_fast_external_failover_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_router_id_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_interface_area_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_default_originate_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_dead_interval_addr_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_zebra_rib_cmd_vtysh); + install_element (OSPF_NODE, &ospf_distance_ospf_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_mroute_cmd_vtysh); + install_element (BGP_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_default_originate_rmap_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_param2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_statistics_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_duration_month_day_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_neighbor_received_routes_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_nhrp_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_auto_cost_reference_bandwidth_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (RMAP_NODE, &ospf6_routemap_set_forwarding_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_damp_flap_regexp_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_as_set_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_cidr_only_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_local_as_val2_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_seq_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_assert_winner_metric_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_soft_out_cmd_vtysh); + install_element (RIP_NODE, &rip_offset_list_ifname_cmd_vtysh); + install_element (CONFIG_NODE, &debug_rip_packet_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_authentication_mode_authlen_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged10_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_regexp_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_ibgp_arg_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_out_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_as_out_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_lcommunity_list_standard_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_prefix_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_update_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_mask_summary_only_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_groups_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_rib_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_multicast_routing_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rib_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_lcommunity_info_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_interface_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_as_soft_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_mask_backdoor_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_packet_send_recv_detail_cmd_vtysh); + install_element (KEYCHAIN_NODE, &no_key_chain_cmd_vtysh); + install_element (RMAP_NODE, &no_set_origin_val_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_priority_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_neighbor_advertised_routes_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_lcommunity4_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_authentication_key_cmd_vtysh); + install_element (OSPF6_NODE, &no_area_filter_list_cmd_vtysh); + install_element (ENABLE_NODE, &show_ip_access_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_cmd_vtysh); + install_element (RMAP_NODE, &no_match_metric_val_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_bgp_network_route_map_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_zebra_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_activate_cmd_vtysh); + install_element (VTY_NODE, &no_vty_access_class_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_mroute_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_external_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_local_as_val_cmd_vtysh); + install_element (ENABLE_NODE, &debug_pim_packets_filter_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_default_local_preference_val_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_transmit_delay_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_interface_detail_cmd_vtysh); + install_element (CONFIG_NODE, &fpm_remote_ip_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_tags_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_passive_interface_default_cmd_vtysh); + install_element (OSPF6_NODE, &area_export_list_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_spf_process_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_distance_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_log_adjacency_changes_detail_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_prefix_pathtype_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_seq_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community4_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_ospf_cmd_vtysh); + install_element (OSPF_NODE, &no_router_info_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_vpn_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_abr_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_zebra_sub_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_instance_ipv4_rsclient_summary_cmd_vtysh); + install_element (RMAP_NODE, &no_match_peer_val_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (ISIS_NODE, &area_passwd_md5_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_spfevents_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_in_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_arg_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community3_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_spftrigg_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ripng_split_horizon_poisoned_reverse_cmd_vtysh); + install_element (BGP_NODE, &bgp_bestpath_compare_router_id_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_range_substitute_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_ism_sub_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_pim_trace_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_filter_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_send_version_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_filter_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_damp_set2_cmd_vtysh); + install_element (RIP_NODE, &rip_redistribute_type_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_flap_address_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_route_source_cmd_vtysh); + install_element (RMAP_NODE, &no_match_aspath_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_flap_route_map_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_lcommunity_all_cmd_vtysh); + install_element (INTERFACE_NODE, &if_nhrp_reg_flags_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_community4_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_supernets_vrf_all_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_cmd_vtysh); + install_element (CONFIG_NODE, &no_bgp_multiple_instance_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_fsm_cmd_vtysh); + install_element (RMAP_NODE, &match_origin_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_lcommunity_list_cmd_vtysh); + install_element (OSPF_NODE, &ospf_mpls_te_on_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_interface_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_router_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_route_map_cmd_vtysh); + install_element (RMAP_NODE, &no_rmap_call_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ripng_events_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_bestpath_med_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_upstream_join_desired_cmd_vtysh); + install_element (CONFIG_NODE, &debug_pim_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_soft_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_distance2_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_bgp_view_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv6_prefix_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_mask_summary_only_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community3_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_neighbor_advertised_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_lcommunity4_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community4_exact_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_packet_send_recv_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_secondary_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_timers_min_ls_interval_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_access_list_any_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_view_rsclient_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_tag_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_soft_out_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_le_ge_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_cidr_only_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_lcommunity2_cmd_vtysh); + install_element (ISIS_NODE, &no_set_overload_bit_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_priority_l1_arg_cmd_vtysh); + install_element (RMAP_NODE, &no_match_tag_val_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_metric_l1_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (BGP_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_type_detail_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_extended_host_mask_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_fsm_cmd_vtysh); + install_element (INTERFACE_NODE, &psnp_interval_l1_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_mask_summary_as_set_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_peer_group_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv4_safi_rsclient_route_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_mroute_count_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ripng_packet_direct_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_upd_cmd_vtysh); + install_element (VTY_NODE, &vty_login_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_csum_cmd_vtysh); + install_element (RIP_NODE, &no_rip_neighbor_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_brouter_router_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_message_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_mask_host_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_igmp_query_max_response_time_dsec_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv6_neighbors_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_lcommunity3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community4_exact_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_redistribute_ipv4_rmap_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_redistribute_route_map_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_network_mask_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_soft_in_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_dampened_paths_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_peer_cmd_vtysh); + install_element (BGP_NODE, &bgp_distance_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_asbr_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_name_expanded_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_cmd_vtysh); + install_element (RMAP_NODE, &no_match_origin_val_cmd_vtysh); + install_element (ENABLE_NODE, &debug_rip_events_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_reachable_time_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_bestpath_aspath_confed_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_zebra_rib_q_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community2_exact_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_default_originate_cmd_vtysh); + install_element (RIP_NODE, &rip_allow_ecmp_cmd_vtysh); + install_element (RMAP_NODE, &no_match_lcommunity_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (OSPF_NODE, &ospf_default_metric_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_distance_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_prefix_list_summary_name_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_redistribute_type_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_peer_group_remote_as_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ripng_packet_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (CONFIG_NODE, &config_table_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_self_originated_linkstate_id_detail_cmd_vtysh); + install_element (OSPF_NODE, &ospf_compatible_rfc1583_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_self_originated_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_brouter_area_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_route_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_lsa_hex_detail_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_distance_source_access_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_summary_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_offset_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_mtu_ignore_addr_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_address_val_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (CONFIG_NODE, &router_id_vrf_cmd_vtysh); + install_element (BGP_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_igmp_cmd_vtysh); + install_element (ISIS_NODE, &isis_mpls_te_on_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_mask_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags2_cmd_vtysh); + install_element (CONFIG_NODE, &no_service_advanced_vty_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community_exact_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_soft_reconfiguration_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_padding_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_group_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_lcommunity4_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_interface_vrf_all_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_seq_le_ge_cmd_vtysh); + install_element (CONFIG_NODE, &debug_pim_events_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_neighbor_routes_cmd_vtysh); + install_element (ISIS_NODE, &lsp_gen_interval_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_pim_packetdump_send_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_instance_all_rsclient_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_lcommunity4_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_mtu_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_ipv6_bgp_distance2_cmd_vtysh); + install_element (OSPF_NODE, &ospf_max_metric_router_lsa_admin_cmd_vtysh); + install_element (VTY_NODE, &vty_ipv6_access_class_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (BGP_IPV4_NODE, &bgp_network_mask_route_map_cmd_vtysh); + install_element (RMAP_NODE, &no_set_lcommunity_val_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_as_set_summary_cmd_vtysh); + install_element (CONFIG_NODE, &ip_extcommunity_list_standard_cmd_vtysh); + install_element (RIP_NODE, &no_rip_timers_val_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community3_exact_cmd_vtysh); + install_element (RMAP_NODE, &set_weight_cmd_vtysh); + install_element (CONFIG_NODE, &default_linkdetect_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_name_standard_cmd_vtysh); + install_element (CONFIG_NODE, &ip_community_list_expanded_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_lcommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_afi_safi_view_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_network_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_cidr_only_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_retransmit_interval_addr_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (RMAP_NODE, &match_ipv6_next_hop_cmd_vtysh); + install_element (BGP_IPV6_NODE, &bgp_maxpaths_ibgp_cmd_vtysh); + install_element (ISIS_NODE, &no_metric_style_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (ISIS_NODE, &max_lsp_lifetime_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_route_pathtype_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_damp_unset2_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_offset_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_flags_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_summary_1w_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_route_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_tag_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_other_config_flag_cmd_vtysh); + install_element (VIEW_NODE, &show_debugging_nhrp_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community_exact_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community4_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_rsclient_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_activate_cmd_vtysh); + install_element (ISIS_NODE, &set_overload_bit_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ripng_events_cmd_vtysh); + install_element (BGP_NODE, &bgp_redistribute_ipv4_metric_rmap_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community2_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_nhrp_event_socket_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_standard_nomask_cmd_vtysh); + install_element (BGP_NODE, &neighbor_disable_connected_check_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_lcommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_lcommunity2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_lcommunity3_cmd_vtysh); + install_element (BGP_NODE, &neighbor_local_as_no_prepend_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_dampening_prefix_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_admin_grp_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_rsclient_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_ipv6_bgp_network_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_summary_cmd_vtysh); + install_element (RMAP_NODE, &set_community_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_prefix_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_range_not_advertise_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_priority_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_igmp_query_max_response_time_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged2_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_seq_le_ge_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_flags_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_homeagent_lifetime_val_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (BGP_NODE, &bgp_cluster_id32_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_in_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community_all_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_default_originate_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_route_pathtype_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_paths_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_le_ge_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_update_direct_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_tags_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_mask_any_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_rpf_cmd_vtysh); + install_element (CONFIG_NODE, &debug_pim_trace_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_zebra_sub_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_community3_cmd_vtysh); + install_element (CONFIG_NODE, &ip_protocol_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_capability_orf_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_nsm_sub_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_lcommunity3_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_self_originated_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_use_bw_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_le_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_rd_prefix_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_hello_interval_l2_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_route_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf6_lsa_hex_detail_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_rsclient_prefix_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ospf6_passive_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_memory_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_dr_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_route_pathtype_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv6_rsclient_summary_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_dead_interval_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_spfevents_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_neighbor_received_routes_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_mask_as_set_summary_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv6_rsclient_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_summary_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_lsa_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_rip_packet_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_timers_throttle_spf_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_instance_all_soft_in_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_cost_inet4_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags2_tag_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_distance_vrf_cmd_vtysh); + install_element (RMAP_NODE, &set_vpnv4_nexthop_cmd_vtysh); + install_element (INTERFACE_NODE, &if_no_nhrp_nhs_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_lcommunity_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_pref_tag_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_lcommunity_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_tag_distance2_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_expanded_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_in_prefix_filter_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_unsuppress_map_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_pref_tag_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &debug_mroute_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_rd_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_lcommunity4_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags2_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_rsclient_prefix_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_maxpaths_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_cmd_vtysh); + install_element (BGP_NODE, &old_ipv6_bgp_network_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_route_map_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_as4_segment_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community_list_exact_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_default_originate_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_as4_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_flap_prefix_longer_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_rsclient_route_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_seq_ge_le_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_hello_interval_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_events_cmd_vtysh); + install_element (CONFIG_NODE, &service_advanced_vty_cmd_vtysh); + install_element (BGP_IPV6_NODE, &ipv6_bgp_distance_source_access_list_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (KEYCHAIN_NODE, &no_key_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_adv_interval_config_option_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_ism_sub_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_zebra_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_other_config_flag_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_pim_hello_cmd_vtysh); + install_element (RMAP_NODE, &match_ipv6_address_cmd_vtysh); + install_element (RMAP_NODE, &no_set_origin_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_peer_rsclient_cmd_vtysh); + install_element (VIEW_NODE, &show_isis_interface_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_community3_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_external_in_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (OSPF_NODE, &router_ospf_id_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_prefix_list_seq_ge_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ripng_split_horizon_poisoned_reverse_cmd_vtysh); + install_element (RMAP_NODE, &no_set_community_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_expanded_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community3_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_route_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_route_map_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_spfstats_cmd_vtysh); + install_element (INTERFACE_NODE, &if_nhrp_mtu_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_range_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_split_horizon_poisoned_reverse_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_rsclient_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_lcommunity_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_igmp_query_max_response_time_dsec_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_as_set_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_community_cmd_vtysh); + install_element (RMAP_NODE, &set_ecommunity_rt_cmd_vtysh); + install_element (INTERFACE_NODE, &if_no_nhrp_network_id_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_community4_cmd_vtysh); + install_element (ENABLE_NODE, &debug_igmp_trace_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_vpn_summary_cmd_vtysh); + install_element (INTERFACE_NODE, &no_csnp_interval_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_packet_dump_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_receive_version_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_route_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ipv6_nexthop_local_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_route_pathtype_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_regexp_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_dampened_paths_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_community_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_as_in_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_lan_prune_delay_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_prefix_longer_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_view_route_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_extcommunity_list_name_standard_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_expanded_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_shutdown_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community_list_exact_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ecommunity_rt_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_nssa_no_summary_cmd_vtysh); + install_element (BGP_NODE, &bgp_log_neighbor_changes_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_neighbor_damp_cmd_vtysh); + install_element (INTERFACE_NODE, &no_psnp_interval_l1_arg_cmd_vtysh); + install_element (OSPF_NODE, &ospf_log_adjacency_changes_detail_cmd_vtysh); + install_element (ENABLE_NODE, &show_debugging_bgp_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_lcommunity_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_mpls_te_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_routes_cmd_vtysh); + install_element (RMAP_NODE, &ospf6_routemap_set_metric_type_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community3_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_events_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community4_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_spf_tree_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (BGP_IPV6_NODE, &bgp_redistribute_ipv6_rmap_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_afi_safi_route_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_cmd_vtysh); + install_element (RMAP_NODE, &no_set_lcommunity_delete_val_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_nht_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_router_preference_cmd_vtysh); + install_element (RMAP_NODE, &rmap_continue_index_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_tag_cmd_vtysh); + install_element (ZEBRA_NODE, &no_ripng_redistribute_ripng_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_encap_out_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_vpnv4_soft_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_access_list_remark_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_neighbor_flap_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_mask_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ipv6_nexthop_peer_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_address_cmd_vtysh); + install_element (BGP_NODE, &neighbor_allowas_in_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_distance2_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_cmd_vtysh); + install_element (VTY_NODE, &exec_timeout_min_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_message_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &vpnv4_network_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_peer_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_linkstate_id_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_rsclient_summary_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_pref_tag_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ripng_split_horizon_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_ge_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_route_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_vpnv4_network_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_inter_as_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_neighbor_detail_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_rsclient_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_name_standard_all_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_remove_private_as_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_zebra_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_zebra_rib_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community_exact_cmd_vtysh); + install_element (CONFIG_NODE, &ip_multicast_mode_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_route_map_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_noval_noauto_cmd_vtysh); + install_element (CONFIG_NODE, &debug_pim_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_standard_host_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_nsm_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbors_cmd_vtysh); + install_element (RMAP_NODE, &no_match_probability_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_summary_prefix_vrf_all_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_damp_unset_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_neighbor_advertised_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_prefix_list_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community2_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_summary_prefix_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_prefix_vrf_all_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_tag_distance2_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_prefix_cmd_vtysh); + install_element (RMAP_NODE, &ospf6_routemap_no_set_forwarding_cmd_vtysh); + install_element (RMAP_NODE, &set_metric_addsub_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community4_exact_cmd_vtysh); + install_element (RMAP_NODE, &no_match_ip_next_hop_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_remote_as_cmd_vtysh); + install_element (RMAP_NODE, &set_community_delete_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_as4_segment_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_neighbor_detail_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_nexthop_local_unchanged_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_in_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_log_adjacency_changes_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ripng_events_cmd_vtysh); + install_element (BGP_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_as4_segment_cmd_vtysh); + install_element (ISIS_NODE, &isis_redistribute_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_homeagent_config_flag_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_flags_vrf_cmd_vtysh); + install_element (RMAP_NODE, &match_lcommunity_cmd_vtysh); + install_element (INTERFACE_NODE, &shutdown_if_cmd_vtysh); + install_element (ISIS_NODE, &no_spf_interval_l1_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_seq_le_ge_cmd_vtysh); + install_element (INTERFACE_NODE, &bandwidth_if_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_metric_l2_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_priority_l1_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_in_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_flap_cidr_only_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_packet_all_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_as_set_cmd_vtysh); + install_element (RIP_NODE, &no_rip_default_metric_val_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_weight_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_supernets_vrf_cmd_vtysh); + install_element (BGP_NODE, &bgp_redistribute_ipv4_rmap_metric_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_flags_tag_distance_vrf_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (RIPNG_NODE, &ripng_offset_list_ifname_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_default_originate_rmap_cmd_vtysh); + install_element (BGP_NODE, &neighbor_capability_dynamic_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community4_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_mroute_dist_vrf_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (ISIS_NODE, &dynamic_hostname_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_dampened_paths_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &aggregate_address_mask_as_set_summary_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_max_metric_router_lsa_admin_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_nht_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_bgp_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_community4_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_dampening_address_mask_cmd_vtysh); + install_element (BGP_NODE, &neighbor_passive_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_view_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged3_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_extcommunity_list_arg_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_rsclient_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_route_cmd_vtysh); + install_element (CONFIG_NODE, &no_dump_bgp_all_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_hello_interval_addr_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_network_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbor_flap_cmd_vtysh); + install_element (RIP_NODE, &rip_route_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_threshold_restart_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_flooding_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_rip_authentication_key_chain_cmd_vtysh); + install_element (ENABLE_NODE, &debug_rip_packet_direct_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_router_isis_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_vrf_cmd_vtysh); + install_element (OSPF_NODE, &ospf_opaque_capable_cmd_vtysh); + install_element (RIP_NODE, &rip_network_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd_vtysh); + install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_remark_arg_cmd_vtysh); + install_element (INTERFACE_NODE, &no_psnp_interval_arg_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_pkt_loss_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_cost_u32_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_ipv6_neighbor_received_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_received_routes_cmd_vtysh); + install_element (BGP_IPV4_NODE, &aggregate_address_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_lcommunity3_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_as_set_summary_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_encap_in_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (INTERFACE_NODE, &isis_hello_multiplier_l2_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_passive_interface_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_rsclient_summary_cmd_vtysh); + install_element (BGP_NODE, &neighbor_weight_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_lcommunity_list_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_ifname_flags_pref_tag_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_address_label_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_peer_soft_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_capability_orf_prefix_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_local_as_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_route_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_soft_in_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_igmp_events_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_normal_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf_lsa_sub_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_in_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_vpnv4_soft_in_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_advertise_prefix_list_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_filter_list_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_keepalive_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_adv_router_linkstate_id_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_rd_tags_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_network_mask_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_ra_interval_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_in_prefix_filter_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_all_in_prefix_filter_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged8_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_prefix_cmd_vtysh); + install_element (ZEBRA_NODE, &no_redistribute_ospf6_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_router_cmd_vtysh); + install_element (BGP_NODE, &neighbor_send_community_cmd_vtysh); + install_element (BGP_NODE, &neighbor_default_originate_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_redistribute_ipv6_metric_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (BGP_NODE, &neighbor_enforce_multihop_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community3_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_debugging_ripng_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_ra_interval_cmd_vtysh); + install_element (ENABLE_NODE, &debug_bgp_keepalive_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_tag_distance_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_pim_packets_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_network_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged5_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_bgp_allow_martians_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_vpn_rd_route_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_soft_reconfiguration_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_prefix_longer_vrf_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_no_ip_pim_ssm_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_route_reflector_client_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_view_neighbor_received_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_advertised_route_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_pim_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbors_cmd_vtysh); + install_element (BGP_NODE, &old_no_ipv6_aggregate_address_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_ebgp_multihop_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_ospf6_cmd_vtysh); + install_element (RMAP_NODE, &no_set_aggregator_as_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_lcommunity4_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_default_originate_rmap_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_lcommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_summary_vrf_cmd_vtysh); + install_element (RMAP_NODE, &no_set_src_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community_list_exact_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_admin_grp_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_rev_rtaddr_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_igmp_trace_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_default_originate_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_prefix_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_range_cost_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (ZEBRA_NODE, &redistribute_ospf6_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_in_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_summary_only_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ripng_packet_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &link_params_metric_cmd_vtysh); + install_element (CONFIG_NODE, &debug_igmp_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_hello_interval_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_infinite_month_day_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_filter_list_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_circuit_type_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_all_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf6_brouter_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_cmd_vtysh); + install_element (CONFIG_NODE, &ip_extcommunity_list_standard2_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (RMAP_NODE, &no_set_lcommunity_none_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_prefix_pathtype_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_instance_all_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged5_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_igmp_querier_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_lcommunity_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_border_routers_detail_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_passive_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_adj_cmd_vtysh); + install_element (CONFIG_NODE, &no_route_map_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_tag_vrf_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_prefix_pathtype_cmd_vtysh); + install_element (BGP_IPV6_NODE, &ipv6_bgp_network_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_irdp_debug_disable_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_lcommunity4_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_lsa_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_lcommunity4_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_community_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_prefix_cmd_vtysh); + install_element (RMAP_NODE, &no_set_weight_val_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_rsclient_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_cmd_vtysh); + install_element (CONFIG_NODE, &ip_forwarding_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_rd_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_rsclient_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_vpn_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &no_access_list_standard_nomask_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_network_cmd_vtysh); + install_element (RMAP_NODE, &no_set_vpnv4_nexthop_val_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_routes_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_flags_pref_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_packet_send_recv_detail_cmd_vtysh); + install_element (CONFIG_NODE, &ip_mroute_dist_cmd_vtysh); + install_element (OSPF_NODE, &ospf_rfc1583_flag_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_attr_unchanged6_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_receive_version_1_cmd_vtysh); + install_element (OSPF_NODE, &ospf_timers_throttle_spf_cmd_vtysh); + install_element (CONFIG_NODE, &ip_prefix_list_description_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_transmitdelay_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_pref_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_rsclient_cmd_vtysh); + install_element (RMAP_NODE, &set_lcommunity_delete_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_tag_distance_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_mask_flags_distance_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (INTERFACE_NODE, &csnp_interval_cmd_vtysh); + install_element (OSPF_NODE, &ospf_neighbor_priority_cmd_vtysh); + install_element (BGP_NODE, &bgp_network_import_check_cmd_vtysh); + install_element (VIEW_NODE, &show_interface_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_route_flags_tag_cmd_vtysh); + install_element (VIEW_NODE, &ipv6_bgp_neighbor_advertised_route_cmd_vtysh); + install_element (BGP_NODE, &bgp_bestpath_med3_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_timers_connect_val_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_homeagent_lifetime_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_match_detail_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_out_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community4_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_soft_out_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_allowas_in_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_group_ipv4_soft_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_sequence_number_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_route_reflector_client_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_interface_prefix_match_cmd_vtysh); + install_element (BGP_NODE, &aggregate_address_mask_summary_as_set_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_lcommunity_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_bgp_maxpaths_ibgp_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_ipv4_soft_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_pim_zebra_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_summary_only_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_prefix_pathtype_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_access_list_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_lcommunity_all_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_filter_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_bgp_zebra_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_zebra_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_seq_le_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_ssmpingd_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_rsclient_route_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_distribute_list_out_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged1_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged7_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community2_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_tag_vrf_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_rsclient_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_rd_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_pref_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_route_supernets_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_neighbor_received_prefix_filter_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_soft_out_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_update_direct_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_as_set_summary_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_external_soft_out_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_route_map_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_cost_u32_inet4_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_type_cmd_vtysh); + install_element (OSPF6_NODE, &no_ospf6_stub_router_admin_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community3_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &bgp_network_mask_route_map_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_hello_interval_addr_cmd_vtysh); + install_element (BGP_NODE, &bgp_bestpath_med2_cmd_vtysh); + install_element (VIEW_NODE, &show_dmvpn_cmd_vtysh); + install_element (CONFIG_NODE, &log_commands_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_static_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_attr_unchanged3_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_regexp_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_range_advertise_cost_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_lcommunity4_cmd_vtysh); + install_element (BGP_NODE, &neighbor_local_as_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_lcommunity2_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_range_cost_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged2_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_pathtype_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_ipv6_all_soft_out_cmd_vtysh); + install_element (RIP_NODE, &no_rip_redistribute_type_metric_routemap_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_lcommunity2_cmd_vtysh); + install_element (INTERFACE_NODE, &csnp_interval_l1_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community2_exact_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_authentication_addr_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_ospf_te_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_zebra_nht_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_err_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_distribute_list_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged6_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ssmpingd_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_rsclient_summary_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_activate_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (ENABLE_NODE, &show_ipv6_access_list_name_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_ospf_hello_interval_cmd_vtysh); + install_element (CONFIG_NODE, &no_ipv6_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_lcommunity_list_cmd_vtysh); + install_element (RMAP_NODE, &no_match_metric_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_bestpath_compare_router_id_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_spfstats_cmd_vtysh); + install_element (BGP_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_route_pathtype_cmd_vtysh); + install_element (ISIS_NODE, &spf_interval_l1_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv4_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_tag_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_mask_summary_as_set_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_prefix_cmd_vtysh); + install_element (RIPNG_NODE, &no_ripng_allow_ecmp_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_peer_group_soft_out_cmd_vtysh); + install_element (ENABLE_NODE, &clear_nhrp_cmd_vtysh); + install_element (BGP_NODE, &neighbor_send_community_type_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_route_longer_detail_cmd_vtysh); + install_element (CONFIG_NODE, &debug_bgp_allow_martians_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_mroute_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged1_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_adv_interval_config_option_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_lcommunity_cmd_vtysh); + install_element (RIP_NODE, &no_rip_timers_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_ospf6_network_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (ENABLE_NODE, &debug_zebra_packet_direct_cmd_vtysh); + install_element (OSPF_NODE, &ospf_neighbor_priority_poll_interval_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_prefix_cmd_vtysh); + install_element (RMAP_NODE, &no_match_local_pref_val_cmd_vtysh); + install_element (CONFIG_NODE, &undebug_igmp_packets_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_abr_type_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community2_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv6_safi_summary_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_prefix_list_description_cmd_vtysh); + install_element (CONFIG_NODE, &ip_mroute_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_packet_send_recv_detail_cmd_vtysh); + install_element (BGP_NODE, &bgp_redistribute_ipv4_metric_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_route_map_cmd_vtysh); + install_element (OSPF_NODE, &ospf_distribute_list_out_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_spf_process_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged4_cmd_vtysh); + install_element (CONFIG_NODE, &debug_isis_lsp_sched_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_flap_cidr_only_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_route_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_lcommunity3_cmd_vtysh); + install_element (CONFIG_NODE, &no_fpm_remote_ip_cmd_vtysh); + install_element (VIEW_NODE, &show_database_detail_arg_cmd_vtysh); + install_element (RIP_NODE, &rip_timers_cmd_vtysh); + install_element (BGP_NODE, &neighbor_description_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (RMAP_NODE, &match_peer_cmd_vtysh); + install_element (INTERFACE_NODE, &ospf_message_digest_key_cmd_vtysh); + install_element (RMAP_NODE, &set_originator_id_cmd_vtysh); + install_element (OSPF_NODE, &ospf_passive_interface_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_community_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_vpn_neighbor_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community3_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_cost_u32_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged_cmd_vtysh); + install_element (CONFIG_NODE, &ip_mroute_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_ra_interval_msec_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_kernel_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_lsp_sched_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_priority_l2_arg_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_prefix_list_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_safi_damp_flap_prefix_list_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_cmd_vtysh); + install_element (INTERFACE_NODE, &no_isis_passive_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_val_noauto_cmd_vtysh); + install_element (ISIS_NODE, &no_max_lsp_lifetime_cmd_vtysh); + install_element (ENABLE_NODE, &debug_rip_packet_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ospf_event_cmd_vtysh); + install_element (ENABLE_NODE, &debug_ospf6_flooding_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_community_exact_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_community_all_cmd_vtysh); + install_element (CONFIG_NODE, &debug_igmp_packets_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_type_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_neighbors_peer_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv4_encap_neighbor_advertised_routes_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ospf_cost_u32_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_zebra_kernel_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_cluster_id_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_as_in_cmd_vtysh); + install_element (ENABLE_NODE, &show_debugging_isis_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_neighbor_advertised_route_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_community2_cmd_vtysh); + install_element (BGP_NODE, &neighbor_nexthop_self_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_lcommunity_all_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community2_exact_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ripng_zebra_cmd_vtysh); + install_element (BGP_NODE, &no_aggregate_address_as_set_cmd_vtysh); + install_element (RMAP_NODE, &no_set_metric_addsub_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_isis_packet_dump_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_flap_address_cmd_vtysh); + install_element (ENABLE_NODE, &clear_bgp_external_soft_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_dampening_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_received_prefix_filter_cmd_vtysh); + install_element (BGP_NODE, &neighbor_prefix_list_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_area_vlink_authtype_authkey_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_community_exact_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_confederation_identifier_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_default_information_originate_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_igmp_join_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_in_prefix_filter_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_isis_err_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_set_peer_group_cmd_vtysh); + install_element (RMAP_NODE, &no_set_ipv6_nexthop_global_val_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_pref_cmd_vtysh); + install_element (BGP_NODE, &neighbor_route_server_client_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_community2_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_bgp_filter_list_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_lcommunity_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_prefix_longer_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_abr_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_prefix_longer_vrf_all_cmd_vtysh); + install_element (BGP_IPV6_NODE, &no_neighbor_default_originate_cmd_vtysh); + install_element (VIEW_NODE, &show_hostname_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_nd_ra_interval_val_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_as_ipv4_soft_out_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community2_exact_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_external_inter_intra_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_attr_unchanged9_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_restart_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_pim_join_cmd_vtysh); + install_element (VIEW_NODE, &ipv6_mbgp_neighbor_received_routes_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_safi_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_protocol_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged8_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_bgp_as4_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_neighbor_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_distance2_vrf_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_summary_as_set_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_view_rsclient_route_cmd_vtysh); + install_element (ENABLE_NODE, &show_zebra_client_cmd_vtysh); + install_element (ENABLE_NODE, &no_debug_igmp_packets_cmd_vtysh); + install_element (CONFIG_NODE, &debug_ripng_zebra_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ip_ospf_cost_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_self_originated_linkstate_id_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv4_prefix_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ospf6_advertise_prefix_list_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_maximum_prefix_threshold_cmd_vtysh); + install_element (BGP_NODE, &bgp_cluster_id_cmd_vtysh); + install_element (BGP_IPV6_NODE, &neighbor_unsuppress_map_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_neighbor_flap_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_self_originated_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_zebra_events_cmd_vtysh); + install_element (INTERFACE_NODE, &no_ipv6_ospf6_network_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (INTERFACE_NODE, &interface_ip_pim_hello_hold_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_attr_unchanged_cmd_vtysh); + install_element (CONFIG_NODE, &debug_zebra_packet_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged9_cmd_vtysh); + install_element (OSPF_NODE, &no_ospf_max_metric_router_lsa_startup_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_access_list_exact_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_peer_encap_out_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_vlink_param3_cmd_vtysh); + install_element (BGP_VPNV6_NODE, &no_neighbor_route_server_client_cmd_vtysh); + install_element (ISIS_NODE, &no_set_attached_bit_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_ipv4_neighbor_prefix_counts_cmd_vtysh); + install_element (LINK_PARAMS_NODE, &no_link_params_res_bw_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_ospf_database_type_id_adv_router_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_maximum_prefix_cmd_vtysh); + install_element (KEYCHAIN_KEY_NODE, &accept_lifetime_month_day_day_month_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community4_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_damp_flap_prefix_list_cmd_vtysh); + install_element (CONFIG_NODE, &ip_extcommunity_list_name_standard2_cmd_vtysh); + install_element (INTERFACE_NODE, &ipv6_nd_prefix_prefix_cmd_vtysh); + install_element (OSPF_NODE, &ospf_log_adjacency_changes_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_vpn_neighbor_advertised_routes_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (OSPF_NODE, &pce_neighbor_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_ip_bgp_prefix_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_summary_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_attr_unchanged7_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags2_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_remove_private_as_cmd_vtysh); + install_element (RMAP_NODE, &no_set_community_delete_cmd_vtysh); + install_element (BGP_IPV6M_NODE, &neighbor_set_peer_group_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_nexthop_self_cmd_vtysh); + install_element (CONFIG_NODE, &access_list_extended_any_any_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_ipv4_in_prefix_filter_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_community_exact_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_network_mask_natural_route_map_cmd_vtysh); + install_element (VIEW_NODE, &show_ip_bgp_flap_cidr_only_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags2_vrf_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_ipv6_encap_neighbor_advertised_routes_cmd_vtysh); + install_element (OSPF_NODE, &no_pce_domain_cmd_vtysh); + install_element (BGP_IPV4_NODE, &no_bgp_maxpaths_cmd_vtysh); + install_element (OSPF_NODE, &ospf_area_import_list_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_split_horizon_cmd_vtysh); + install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_rsclient_prefix_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_ifname_flags_pref_tag_vrf_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_external_in_cmd_vtysh); + install_element (ENABLE_NODE, &undebug_igmp_trace_cmd_vtysh); + install_element (ENABLE_NODE, &debug_isis_upd_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &no_neighbor_default_originate_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_ipv6_summary_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_view_afi_safi_community4_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_instance_all_ipv4_soft_cmd_vtysh); + install_element (OSPF6_NODE, &ospf6_distance_ospf6_inter_intra_external_cmd_vtysh); + install_element (BGP_VPNV4_NODE, &neighbor_maximum_prefix_threshold_warning_cmd_vtysh); + install_element (BGP_IPV4M_NODE, &neighbor_maximum_prefix_warning_cmd_vtysh); + install_element (BGP_NODE, &no_bgp_rr_allow_outbound_policy_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_mbgp_community4_cmd_vtysh); + install_element (BGP_IPV4_NODE, &neighbor_distribute_list_cmd_vtysh); + install_element (ISIS_NODE, &no_area_lsp_mtu_arg_cmd_vtysh); + install_element (CONFIG_NODE, &no_router_id_cmd_vtysh); + install_element (ENABLE_NODE, &clear_ip_bgp_all_ipv4_soft_out_cmd_vtysh); + install_element (INTERFACE_NODE, &tunnel_source_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_igmp_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_community_list_name_expanded_all_cmd_vtysh); + install_element (CONFIG_NODE, &ip_route_mask_flags_distance_vrf_cmd_vtysh); + install_element (CONFIG_NODE, &ipv6_route_tag_vrf_cmd_vtysh); + install_element (OSPF6_NODE, &area_filter_list_cmd_vtysh); + install_element (CONFIG_NODE, &no_ip_route_flags_distance2_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf6_spf_database_cmd_vtysh); + install_element (BGP_NODE, &neighbor_allowas_in_arg_cmd_vtysh); + install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_val_cmd_vtysh); + install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged10_cmd_vtysh); + install_element (RMAP_NODE, &no_set_community_val_cmd_vtysh); + install_element (ENABLE_NODE, &show_bgp_statistics_cmd_vtysh); + install_element (VIEW_NODE, &show_ipv6_route_summary_prefix_vrf_all_cmd_vtysh); + install_element (CONFIG_NODE, &no_debug_ospf_zebra_sub_cmd_vtysh); + install_element (VIEW_NODE, &show_bgp_instance_summary_cmd_vtysh); + install_element (INTERFACE_NODE, &ip_rip_receive_version_2_cmd_vtysh); + install_element (BGP_NODE, &bgp_graceful_restart_restart_time_cmd_vtysh); +} diff --git a/tests/test-commands.c b/tests/test-commands.c index 18b3b50..302f274 100644 --- a/tests/test-commands.c +++ b/tests/test-commands.c @@ -27,6 +27,11 @@ * 02111-1307, USA. */ + /* Example use for testing: + * ./testcommands -e 0 < testcommands.in | \ + * diff -au - testcommands.refout + */ + #define REALLY_NEED_PLAIN_GETOPT 1 #include @@ -91,6 +96,12 @@ static struct cmd_node bgp_vpnv4_node = "%s(config-router-af)# " }; +static struct cmd_node bgp_vpnv6_node = +{ + BGP_VPNV6_NODE, + "%s(config-router-af-vpnv6)# ", +}; + static struct cmd_node bgp_ipv4_node = { BGP_IPV4_NODE, @@ -115,6 +126,18 @@ static struct cmd_node bgp_ipv6m_node = "%s(config-router-af)# " }; +static struct cmd_node bgp_encap_node = +{ + BGP_ENCAP_NODE, + "%s(config-router-af-encap)# ", +}; + +static struct cmd_node bgp_encapv6_node = +{ + BGP_ENCAPV6_NODE, + "%s(config-router-af-encapv6)# ", +}; + static struct cmd_node ospf_node = { OSPF_NODE, @@ -151,6 +174,14 @@ static struct cmd_node keychain_key_node = "%s(config-keychain-key)# " }; +static struct cmd_node link_params_node = +{ + LINK_PARAMS_NODE, + "%s(config-link-params)# ", +}; + + + static int test_callback(struct cmd_element *cmd, struct vty *vty, int argc, const char *argv[]) { @@ -210,10 +241,13 @@ test_init(void) install_node (&rmap_node, NULL); install_node (&zebra_node, NULL); install_node (&bgp_vpnv4_node, NULL); + install_node (&bgp_vpnv6_node, NULL); install_node (&bgp_ipv4_node, NULL); install_node (&bgp_ipv4m_node, NULL); install_node (&bgp_ipv6_node, NULL); install_node (&bgp_ipv6m_node, NULL); + install_node (&bgp_encap_node, NULL); + install_node (&bgp_encapv6_node, NULL); install_node (&ospf_node, NULL); install_node (&ripng_node, NULL); install_node (&ospf6_node, NULL); @@ -222,7 +256,9 @@ test_init(void) install_node (&keychain_key_node, NULL); install_node (&isis_node, NULL); install_node (&vty_node, NULL); - + install_node (&link_params_node, NULL); + //install_node (&zebra_if_defaults_node, NULL); + test_init_cmd(); for (node = 0; node < vector_active(cmdvec); node++) diff --git a/tests/test-sig.c b/tests/test-sig.c index f24da96..febfd08 100644 --- a/tests/test-sig.c +++ b/tests/test-sig.c @@ -57,7 +57,6 @@ struct quagga_signal_t sigs[] = }; struct thread_master *master; -struct thread t; int main (void) @@ -71,8 +70,7 @@ main (void) zlog_set_level (NULL, ZLOG_DEST_STDOUT, LOG_DEBUG); zlog_set_level (NULL, ZLOG_DEST_MONITOR, ZLOG_DISABLED); - while (thread_fetch (master, &t)) - thread_call (&t); + thread_main (master); exit (0); } diff --git a/tests/test-timer-correctness.c b/tests/test-timer-correctness.c index e523929..1327f00 100644 --- a/tests/test-timer-correctness.c +++ b/tests/test-timer-correctness.c @@ -113,7 +113,6 @@ static int cmp_timeval(const void* a, const void *b) int main(int argc, char **argv) { int i, j; - struct thread t; struct timeval **alarms; master = thread_master_create(); @@ -190,8 +189,7 @@ int main(int argc, char **argv) } XFREE(MTYPE_TMP, alarms); - while (thread_fetch(master, &t)) - thread_call(&t); + thread_main (master); return 0; } diff --git a/tools/.gitignore b/tools/.gitignore deleted file mode 100644 index dd5bf7c..0000000 --- a/tools/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.arch-inventory -.arch-ids - -*~ -*.loT - diff --git a/tools/mrlg.txt b/tools/mrlg.txt deleted file mode 100644 index 0ebf7ee..0000000 --- a/tools/mrlg.txt +++ /dev/null @@ -1,5 +0,0 @@ -The Multi-Router Looking Glass (MRLG) CGI script now lives at: - - http://mrlg.op-sec.us/ - -Please obtain the latest version from there. diff --git a/vtysh/.gitignore b/vtysh/.gitignore deleted file mode 100644 index 5856eac..0000000 --- a/vtysh/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -Makefile -Makefile.in -*.o -vtysh -tags -TAGS -.deps -vtysh_cmd.c -.nfs* -extract.pl -.libs -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/vtysh/Makefile.in b/vtysh/Makefile.in new file mode 100644 index 0000000..8f7b7b0 --- /dev/null +++ b/vtysh/Makefile.in @@ -0,0 +1,779 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = vtysh$(EXEEXT) +subdir = vtysh +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = extract.pl +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(examplesdir)" +PROGRAMS = $(bin_PROGRAMS) +am_vtysh_OBJECTS = vtysh_main.$(OBJEXT) vtysh.$(OBJEXT) \ + vtysh_user.$(OBJEXT) vtysh_config.$(OBJEXT) +nodist_vtysh_OBJECTS = vtysh_cmd.$(OBJEXT) +vtysh_OBJECTS = $(am_vtysh_OBJECTS) $(nodist_vtysh_OBJECTS) +vtysh_DEPENDENCIES = ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(vtysh_SOURCES) $(nodist_vtysh_SOURCES) +DIST_SOURCES = $(vtysh_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/extract.pl.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ @CURSES@ @LIBPAM@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +AM_CFLAGS = $(WERROR) +vtysh_SOURCES = vtysh_main.c vtysh.c vtysh_user.c vtysh_config.c +nodist_vtysh_SOURCES = vtysh_cmd.c +CLEANFILES = vtysh_cmd.c +noinst_HEADERS = vtysh.h vtysh_user.h +vtysh_LDADD = ../lib/libzebra.la @LIBCAP@ @LIBREADLINE@ +examplesdir = $(exampledir) +dist_examples_DATA = vtysh.conf.sample +EXTRA_DIST = extract.pl +vtysh_cmd_FILES = $(top_srcdir)/bgpd/*.c $(top_srcdir)/isisd/*.c \ + $(top_srcdir)/ospfd/*.c $(top_srcdir)/ospf6d/*.c \ + $(top_srcdir)/ripd/*.c $(top_srcdir)/ripngd/*.c \ + $(top_srcdir)/pimd/pim_cmd.c \ + $(top_srcdir)/nhrpd/nhrp_vty.c \ + $(top_srcdir)/lib/keychain.c $(top_srcdir)/lib/routemap.c \ + $(top_srcdir)/lib/filter.c $(top_srcdir)/lib/plist.c \ + $(top_srcdir)/lib/distribute.c $(top_srcdir)/lib/if_rmap.c \ + $(top_srcdir)/lib/vrf.c \ + $(top_srcdir)/lib/vty.c $(top_srcdir)/zebra/debug.c \ + $(top_srcdir)/zebra/interface.c \ + $(top_srcdir)/zebra/irdp_interface.c \ + $(top_srcdir)/zebra/rtadv.c $(top_srcdir)/zebra/zebra_vty.c \ + $(top_srcdir)/zebra/zserv.c $(top_srcdir)/zebra/router-id.c \ + $(top_srcdir)/zebra/zebra_routemap.c \ + $(top_srcdir)/zebra/zebra_fpm.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu vtysh/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu vtysh/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +extract.pl: $(top_builddir)/config.status $(srcdir)/extract.pl.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +vtysh$(EXEEXT): $(vtysh_OBJECTS) $(vtysh_DEPENDENCIES) $(EXTRA_vtysh_DEPENDENCIES) + @rm -f vtysh$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vtysh_OBJECTS) $(vtysh_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +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@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-dist_examplesDATA + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-dist_examplesDATA + +.PRECIOUS: Makefile + + +vtysh_cmd.c: $(vtysh_cmd_FILES) extract.pl + ./extract.pl $(vtysh_cmd_FILES) > 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/extract.pl b/vtysh/extract.pl new file mode 100755 index 0000000..3936090 --- /dev/null +++ b/vtysh/extract.pl @@ -0,0 +1,243 @@ +#! /usr/bin/perl +## +## vtysh/extract.pl. Generated from extract.pl.in by configure. +## +## Virtual terminal interface shell command extractor. +## Copyright (C) 2000 Kunihiro Ishiguro +## +## 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. +## + +print < +#include "command.h" +#include "vtysh.h" + +EOF + +$ignore{'"interface IFNAME"'} = "ignore"; +$ignore{'"interface IFNAME " "vrf <0-65535>"'} = "ignore"; +$ignore{'"link-params"'} = "ignore"; +$ignore{'"ip vrf NAME"'} = "ignore"; +$ignore{'"router rip"'} = "ignore"; +$ignore{'"router ripng"'} = "ignore"; +$ignore{'"router ospf"'} = "ignore"; +$ignore{'"router ospf <0-65535>"'} = "ignore"; +$ignore{'"router ospf6"'} = "ignore"; +$ignore{'"router bgp " "<1-4294967295>"'} = "ignore"; +$ignore{'"router bgp " "<1-4294967295>" " view WORD"'} = "ignore"; +$ignore{'"router isis WORD"'} = "ignore"; +$ignore{'"router zebra"'} = "ignore"; +$ignore{'"address-family ipv4"'} = "ignore"; +$ignore{'"address-family ipv4 (unicast|multicast)"'} = "ignore"; +$ignore{'"address-family ipv6"'} = "ignore"; +$ignore{'"address-family ipv6 (unicast|multicast)"'} = "ignore"; +$ignore{'"address-family vpnv4"'} = "ignore"; +$ignore{'"address-family vpnv4 unicast"'} = "ignore"; +$ignore{'"address-family vpnv6"'} = "ignore"; +$ignore{'"address-family vpnv6 unicast"'} = "ignore"; +$ignore{'"address-family ipv4 vrf NAME"'} = "ignore"; +$ignore{'"address-family encap"'} = "ignore"; +$ignore{'"address-family encapv4"'} = "ignore"; +$ignore{'"address-family encapv6"'} = "ignore"; +$ignore{'"exit-address-family"'} = "ignore"; +$ignore{'"exit-link-params"'} = "ignore"; +$ignore{'"vnc defaults"'} = "ignore"; +$ignore{'"vnc nve-group NAME"'} = "ignore"; +$ignore{'"exit-vnc"'} = "ignore"; +$ignore{'"key chain WORD"'} = "ignore"; +$ignore{'"key <0-2147483647>"'} = "ignore"; +$ignore{'"route-map WORD (deny|permit) <1-65535>"'} = "ignore"; +$ignore{'"show route-map"'} = "ignore"; +$ignore{'"line vty"'} = "ignore"; +$ignore{'"who"'} = "ignore"; +$ignore{'"terminal monitor"'} = "ignore"; +$ignore{'"terminal no monitor"'} = "ignore"; +$ignore{'"show history"'} = "ignore"; + +my $cli_stomp = 0; + +foreach (@ARGV) { + $file = $_; + + open (FH, "gcc -E -DHAVE_CONFIG_H -DVTYSH_EXTRACT_PL -DHAVE_IPV6 -I.. -I./ -I./.. -I../lib -I../lib -I../isisd/topology $file |"); + local $/; undef $/; + $line = ; + close (FH); + + @defun = ($line =~ /(?:DEFUN|ALIAS)\s*\((.+?)\);?\s?\s?\n/sg); + @install = ($line =~ /install_element\s*\(\s*[0-9A-Z_]+,\s*&[^;]*;\s*\n/sg); + + # DEFUN process + foreach (@defun) { + my (@defun_array); + @defun_array = split (/,/); + $defun_array[0] = ''; + + + # Actual input command string. + $str = "$defun_array[2]"; + $str =~ s/^\s+//g; + $str =~ s/\s+$//g; + + # Get VTY command structure. This is needed for searching + # install_element() command. + $cmd = "$defun_array[1]"; + $cmd =~ s/^\s+//g; + $cmd =~ s/\s+$//g; + + # $protocol is VTYSH_PROTO format for redirection of user input + if ($file =~ /lib\/keychain\.c$/) { + $protocol = "VTYSH_RIPD"; + } + elsif ($file =~ /lib\/routemap\.c$/) { + $protocol = "VTYSH_RIPD|VTYSH_RIPNGD|VTYSH_OSPFD|VTYSH_OSPF6D|VTYSH_BGPD|VTYSH_ZEBRA"; + } + elsif ($file =~ /lib\/filter\.c$/) { + $protocol = "VTYSH_ALL"; + } + elsif ($file =~ /lib\/vrf\.c$/) { + $protocol = "VTYSH_ZEBRA"; + } + elsif ($file =~ /lib\/plist\.c$/) { + if ($defun_array[1] =~ m/ipv6/) { + $protocol = "VTYSH_RIPNGD|VTYSH_OSPF6D|VTYSH_BGPD|VTYSH_ZEBRA"; + } else { + $protocol = "VTYSH_RIPD|VTYSH_OSPFD|VTYSH_BGPD|VTYSH_ZEBRA"; + } + } + elsif ($file =~ /lib\/distribute\.c$/) { + if ($defun_array[1] =~ m/ipv6/) { + $protocol = "VTYSH_RIPNGD"; + } else { + $protocol = "VTYSH_RIPD"; + } + } + elsif ($file =~ /lib\/if_rmap\.c$/) { + if ($defun_array[1] =~ m/ipv6/) { + $protocol = "VTYSH_RIPNGD"; + } else { + $protocol = "VTYSH_RIPD"; + } + } + elsif ($file =~ /lib\/vty\.c$/) { + $protocol = "VTYSH_ALL"; + } + else { + ($protocol) = ($file =~ /^.*\/([a-z0-9]+)\/[a-zA-Z0-9_\-]+\.c$/); + $protocol = "VTYSH_" . uc $protocol; + } + + # Append _vtysh to structure then build DEFUN again + $defun_array[1] = $cmd . "_vtysh"; + $defun_body = join (", ", @defun_array); + + # $cmd -> $str hash for lookup + if (exists($cmd2str{$cmd})) { + warn "Duplicate CLI Function: $cmd\n"; + warn "\tFrom cli: $cmd2str{$cmd} to New cli: $str\n"; + warn "\tOriginal Protocol: $cmd2proto{$cmd} to New Protocol: $protocol\n"; + $cli_stomp++; + } + $cmd2str{$cmd} = $str; + $cmd2defun{$cmd} = $defun_body; + $cmd2proto{$cmd} = $protocol; + } + + # install_element() process + foreach (@install) { + my (@element_array); + @element_array = split (/,/); + + # Install node + $enode = $element_array[0]; + $enode =~ s/^\s+//g; + $enode =~ s/\s+$//g; + ($enode) = ($enode =~ /([0-9A-Z_]+)$/); + + # VTY command structure. + ($ecmd) = ($element_array[1] =~ /&([^\)]+)/); + $ecmd =~ s/^\s+//g; + $ecmd =~ s/\s+$//g; + + # Register $ecmd + if (defined ($cmd2str{$ecmd}) + && ! defined ($ignore{$cmd2str{$ecmd}})) { + my ($key); + $key = $enode . "," . $cmd2str{$ecmd}; + $ocmd{$key} = $ecmd; + $odefun{$key} = $cmd2defun{$ecmd}; + push (@{$oproto{$key}}, $cmd2proto{$ecmd}); + } + } +} + +my $bad_cli_stomps = 102; +# Currently we have $bad_cli_stomps. This was determined by +# running this script and counting up the collisions from what +# was returned. +# +# When we have cli commands that map to the same function name, we +# can introduce subtle bugs due to code not being called when +# we think it is. +# +# If extract.pl fails with a error message and you've been +# modifying the cli, then go back and fix your code to +# not have cli command function collisions. +# +# If you've removed a cli overwrite, you can safely subtract +# one from $bad_cli_stomps. If you've added to the problem +# please fix your code before submittal +if ($cli_stomp != $bad_cli_stomps) { + warn "Expected $bad_cli_stomps command line stomps, but got $cli_stomp instead\n"; + exit $cli_stomp; +} + +# Check finaly alive $cmd; +foreach (keys %odefun) { + my ($node, $str) = (split (/,/)); + my ($cmd) = $ocmd{$_}; + $live{$cmd} = $_; +} + +# Output DEFSH +foreach (keys %live) { + my ($proto); + my ($key); + $key = $live{$_}; + $proto = join ("|", @{$oproto{$key}}); + printf "DEFSH ($proto$odefun{$key})\n\n"; +} + +# Output install_element +print <buf); exit (1); } diff --git a/vtysh/vtysh_user.c b/vtysh/vtysh_user.c index 584b61f..ad0c79d 100644 --- a/vtysh/vtysh_user.c +++ b/vtysh/vtysh_user.c @@ -59,6 +59,8 @@ vtysh_pam (const char *user) /* Is user really user? */ if (ret == PAM_SUCCESS) ret = pam_authenticate (pamh, 0); + if (ret != PAM_SUCCESS) + printf("Not authenticated. Check /etc/pam.d/quagga.\n"); /* printf ("ret %d\n", ret); */ #if 0 diff --git a/watchquagga/.gitignore b/watchquagga/.gitignore deleted file mode 100644 index b6226d5..0000000 --- a/watchquagga/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -Makefile -Makefile.in -*.o -watchquagga -tags -TAGS -.deps -.nfs* -*.lo -*.la -*.libs -.arch-inventory -.arch-ids -*~ -*.loT - diff --git a/watchquagga/Makefile.in b/watchquagga/Makefile.in new file mode 100644 index 0000000..48be273 --- /dev/null +++ b/watchquagga/Makefile.in @@ -0,0 +1,690 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = watchquagga$(EXEEXT) +subdir = watchquagga +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" +PROGRAMS = $(sbin_PROGRAMS) +am_watchquagga_OBJECTS = watchquagga.$(OBJEXT) +watchquagga_OBJECTS = $(am_watchquagga_OBJECTS) +watchquagga_DEPENDENCIES = ../lib/libzebra.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(watchquagga_SOURCES) +DIST_SOURCES = $(watchquagga_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSTATEDIR=\"$(localstatedir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +AM_CFLAGS = $(WERROR) +watchquagga_SOURCES = watchquagga.c +watchquagga_LDADD = ../lib/libzebra.la @LIBCAP@ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu watchquagga/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu watchquagga/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +watchquagga$(EXEEXT): $(watchquagga_OBJECTS) $(watchquagga_DEPENDENCIES) $(EXTRA_watchquagga_DEPENDENCIES) + @rm -f watchquagga$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(watchquagga_OBJECTS) $(watchquagga_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/watchquagga.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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) +installdirs: + for dir in "$(DESTDIR)$(sbindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool clean-sbinPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-sbinPROGRAMS install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# 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/watchquagga/watchquagga.c b/watchquagga/watchquagga.c index 9bd7a5f..130f9fe 100644 --- a/watchquagga/watchquagga.c +++ b/watchquagga/watchquagga.c @@ -1386,14 +1386,9 @@ main(int argc, char **argv) progname, QUAGGA_VERSION, buf, mode_str[gs.mode]); } } - - { - struct thread thread; - - while (thread_fetch (master, &thread)) - thread_call (&thread); - } - + + thread_main (master); + /* Not reached. */ return 0; } diff --git a/zebra/.gitignore b/zebra/.gitignore deleted file mode 100644 index df703b6..0000000 --- a/zebra/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -Makefile -Makefile.in -*.o -zebra -zebra.conf -client -testzebra -tags -TAGS -.deps -.nfs* -.libs -.arch-inventory -.arch-ids -*~ -*.loT diff --git a/zebra/Makefile.in b/zebra/Makefile.in new file mode 100644 index 0000000..deecb1e --- /dev/null +++ b/zebra/Makefile.in @@ -0,0 +1,893 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 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@ + +# +# Automake fragment intended to be shared by Makefile.am files in the +# tree. +# + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +sbin_PROGRAMS = zebra$(EXEEXT) +noinst_PROGRAMS = testzebra$(EXEEXT) +subdir = zebra +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_sys_weak_alias.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_examples_DATA) \ + $(noinst_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)" +PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS) +am_testzebra_OBJECTS = test_main.$(OBJEXT) zebra_rib.$(OBJEXT) \ + interface.$(OBJEXT) connected.$(OBJEXT) debug.$(OBJEXT) \ + zebra_vty.$(OBJEXT) kernel_null.$(OBJEXT) \ + redistribute_null.$(OBJEXT) ioctl_null.$(OBJEXT) \ + misc_null.$(OBJEXT) zebra_rnh_null.$(OBJEXT) +testzebra_OBJECTS = $(am_testzebra_OBJECTS) +am__DEPENDENCIES_1 = +testzebra_DEPENDENCIES = ../lib/libzebra.la $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am__zebra_SOURCES_DIST = zserv.c main.c interface.c connected.c \ + zebra_rib.c zebra_routemap.c redistribute.c debug.c rtadv.c \ + zebra_snmp.c zebra_vty.c irdp_main.c irdp_interface.c \ + irdp_packet.c router-id.c zebra_fpm.c zebra_rnh.c \ + zebra_fpm_netlink.c zebra_fpm_protobuf.c zebra_fpm_dt.c +@HAVE_NETLINK_TRUE@am__objects_1 = zebra_fpm_netlink.$(OBJEXT) +@HAVE_PROTOBUF_TRUE@am__objects_2 = zebra_fpm_protobuf.$(OBJEXT) +@DEV_BUILD_TRUE@am__objects_3 = zebra_fpm_dt.$(OBJEXT) +am_zebra_OBJECTS = zserv.$(OBJEXT) main.$(OBJEXT) interface.$(OBJEXT) \ + connected.$(OBJEXT) zebra_rib.$(OBJEXT) \ + zebra_routemap.$(OBJEXT) redistribute.$(OBJEXT) \ + debug.$(OBJEXT) rtadv.$(OBJEXT) zebra_snmp.$(OBJEXT) \ + zebra_vty.$(OBJEXT) irdp_main.$(OBJEXT) \ + irdp_interface.$(OBJEXT) irdp_packet.$(OBJEXT) \ + router-id.$(OBJEXT) zebra_fpm.$(OBJEXT) zebra_rnh.$(OBJEXT) \ + $(am__objects_1) $(am__objects_2) $(am__objects_3) +zebra_OBJECTS = $(am_zebra_OBJECTS) +am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +@HAVE_PROTOBUF_TRUE@am__DEPENDENCIES_3 = \ +@HAVE_PROTOBUF_TRUE@ $(top_srcdir)/qpb/libquagga_pb.la \ +@HAVE_PROTOBUF_TRUE@ $(am__DEPENDENCIES_1) +@HAVE_PROTOBUF_TRUE@am__DEPENDENCIES_4 = \ +@HAVE_PROTOBUF_TRUE@ $(top_srcdir)/fpm/libfpm_pb.la \ +@HAVE_PROTOBUF_TRUE@ $(am__DEPENDENCIES_3) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(testzebra_SOURCES) $(zebra_SOURCES) +DIST_SOURCES = $(testzebra_SOURCES) $(am__zebra_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +DATA = $(dist_examples_DATA) +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/../common.am $(srcdir)/Makefile.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BGPD = @BGPD@ +CARES_CFLAGS = @CARES_CFLAGS@ +CARES_LIBS = @CARES_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFDATE = @CONFDATE@ +CONFIG_ARGS = @CONFIG_ARGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES = @CURSES@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOC = @DOC@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GAWK = @GAWK@ +GREP = @GREP@ +HAVE_LIBPCREPOSIX = @HAVE_LIBPCREPOSIX@ +IF_METHOD = @IF_METHOD@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +IOCTL_METHOD = @IOCTL_METHOD@ +IPFORWARD = @IPFORWARD@ +ISISD = @ISISD@ +ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@ +ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@ +ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@ +KERNEL_METHOD = @KERNEL_METHOD@ +LATEXMK = @LATEXMK@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCAP = @LIBCAP@ +LIBM = @LIBM@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBREADLINE = @LIBREADLINE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_REGEX = @LIB_REGEX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NETSNMP_CONFIG = @NETSNMP_CONFIG@ +NHRPD = @NHRPD@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OSPF6D = @OSPF6D@ +OSPFAPI = @OSPFAPI@ +OSPFCLIENT = @OSPFCLIENT@ +OSPFD = @OSPFD@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANDOC = @PANDOC@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PDFLATEX = @PDFLATEX@ +PERL = @PERL@ +PIMD = @PIMD@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PROTOBUF_C_CFLAGS = @PROTOBUF_C_CFLAGS@ +PROTOBUF_C_LIBS = @PROTOBUF_C_LIBS@ +PROTOC_C = @PROTOC_C@ +RANLIB = @RANLIB@ +RIPD = @RIPD@ +RIPNGD = @RIPNGD@ +RTREAD_METHOD = @RTREAD_METHOD@ +RT_METHOD = @RT_METHOD@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOLARIS = @SOLARIS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VTYSH = @VTYSH@ +WATCHQUAGGA = @WATCHQUAGGA@ +WEAK_ALIAS = @WEAK_ALIAS@ +WEAK_ALIAS_CROSSFILE = @WEAK_ALIAS_CROSSFILE@ +WERROR = @WERROR@ +ZEBRA = @ZEBRA@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_group = @enable_group@ +enable_user = @enable_user@ +enable_vty_group = @enable_vty_group@ +exampledir = @exampledir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgsrcdir = @pkgsrcdir@ +pkgsrcrcdir = @pkgsrcrcdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +quagga_statedir = @quagga_statedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Uncomment to use an non-system version of libprotobuf-c. +# +# Q_PROTOBUF_C_CLIENT_INCLUDES = -I$(top_srcdir)/third-party/protobuf-c/src +# Q_PROTOBUF_C_CLIENT_LDOPTS = $(top_builddir)/third-party/protobuf-c/src/libprotobuf-c.la +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_C_CLIENT_INCLUDES = +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_C_CLIENT_LDOPTS = -lprotobuf-c +@HAVE_PROTOBUF_TRUE@Q_PROTOC = protoc +@HAVE_PROTOBUF_TRUE@Q_PROTOC_C = protoc-c +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_CFILES = $(filter %.pb-c.c,$(SOURCES)) +@HAVE_PROTOBUF_TRUE@Q_PROTOBUF_SRCS = $(Q_PROTOBUF_CFILES) $(Q_PROTOBUF_HFILES) + +# +# Information about how to link to various libraries. +# +@HAVE_PROTOBUF_TRUE@Q_QUAGGA_PB_CLIENT_LDOPTS = $(top_srcdir)/qpb/libquagga_pb.la $(Q_PROTOBUF_C_CLIENT_LDOPTS) +@HAVE_PROTOBUF_TRUE@Q_FPM_PB_CLIENT_LDOPTS = $(top_srcdir)/fpm/libfpm_pb.la $(Q_QUAGGA_PB_CLIENT_LDOPTS) +Q_CLEANFILES = $(Q_PROTOBUF_SRCS) +Q_BUILT_SRCS = $(Q_PROTOBUF_SRCS) +AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_builddir)/lib +INSTALL_SDATA = @INSTALL@ -m 600 +ipforward = @IPFORWARD@ +if_method = @IF_METHOD@ +rt_method = @RT_METHOD@ +rtread_method = @RTREAD_METHOD@ +kernel_method = @KERNEL_METHOD@ +ioctl_method = @IOCTL_METHOD@ +otherobj = $(ioctl_method) $(ipforward) $(if_method) \ + $(rt_method) $(rtread_method) $(kernel_method) + +@HAVE_NETLINK_TRUE@othersrc = zebra_fpm_netlink.c +@HAVE_PROTOBUF_TRUE@protobuf_srcs = zebra_fpm_protobuf.c +@DEV_BUILD_TRUE@dev_srcs = zebra_fpm_dt.c +AM_CFLAGS = $(WERROR) +zebra_SOURCES = \ + zserv.c main.c interface.c connected.c zebra_rib.c zebra_routemap.c \ + redistribute.c debug.c rtadv.c zebra_snmp.c zebra_vty.c \ + irdp_main.c irdp_interface.c irdp_packet.c router-id.c zebra_fpm.c \ + zebra_rnh.c \ + $(othersrc) $(protobuf_srcs) $(dev_srcs) + +testzebra_SOURCES = test_main.c zebra_rib.c interface.c connected.c debug.c \ + zebra_vty.c \ + kernel_null.c redistribute_null.c ioctl_null.c misc_null.c zebra_rnh_null.c + +noinst_HEADERS = \ + connected.h ioctl.h rib.h rt.h zserv.h redistribute.h debug.h rtadv.h \ + interface.h ipforward.h irdp.h router-id.h kernel_socket.h \ + rt_netlink.h zebra_fpm.h zebra_fpm_private.h \ + ioctl_solaris.h zebra_rnh.h + +zebra_LDADD = $(otherobj) ../lib/libzebra.la $(LIBCAP) $(Q_FPM_PB_CLIENT_LDOPTS) +testzebra_LDADD = ../lib/libzebra.la $(LIBCAP) +zebra_DEPENDENCIES = $(otherobj) +EXTRA_DIST = if_ioctl.c if_ioctl_solaris.c if_netlink.c \ + if_sysctl.c ipforward_proc.c \ + ipforward_solaris.c ipforward_sysctl.c rt_netlink.c \ + rt_socket.c rtread_netlink.c rtread_sysctl.c \ + rtread_getmsg.c kernel_socket.c kernel_netlink.c \ + ioctl.c ioctl_solaris.c \ + GNOME-SMI GNOME-PRODUCT-ZEBRA-MIB + +quaggaconfdir = $(sysconfdir) +examplesdir = $(exampledir) +dist_examples_DATA = zebra.conf.sample +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../common.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu zebra/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu zebra/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/../common.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +testzebra$(EXEEXT): $(testzebra_OBJECTS) $(testzebra_DEPENDENCIES) $(EXTRA_testzebra_DEPENDENCIES) + @rm -f testzebra$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testzebra_OBJECTS) $(testzebra_LDADD) $(LIBS) + +zebra$(EXEEXT): $(zebra_OBJECTS) $(zebra_DEPENDENCIES) $(EXTRA_zebra_DEPENDENCIES) + @rm -f zebra$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(zebra_OBJECTS) $(zebra_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +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_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irdp_interface.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irdp_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irdp_packet.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kernel_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redistribute.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redistribute_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/router-id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtadv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_fpm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_fpm_dt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_fpm_netlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_fpm_protobuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_rib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_rnh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_rnh_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zebra_routemap.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@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-libtool clean-noinstPROGRAMS \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_examplesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS clean-sbinPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-sbinPROGRAMS + +.PRECIOUS: Makefile + + +# Rules +@HAVE_PROTOBUF_TRUE@%.pb.h: %.proto +@HAVE_PROTOBUF_TRUE@ $(Q_PROTOC) $(PROTOBUF_INCLUDES) --cpp_out=$(top_srcdir) $(top_srcdir)/$(PROTOBUF_PACKAGE)/$^ + +@HAVE_PROTOBUF_TRUE@%.pb-c.c %.pb-c.h: %.proto +@HAVE_PROTOBUF_TRUE@ $(Q_PROTOC_C) $(PROTOBUF_INCLUDES) --c_out=$(top_srcdir) $(top_srcdir)/$(PROTOBUF_PACKAGE)/$^ + +client : client_main.o ../lib/libzebra.la + $(CC) -g -o client client_main.o ../liblzebra.la $(LIBS) $(LIB_IPV6) + +# 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/client_main.c b/zebra/client_main.c deleted file mode 100644 index 75c8867..0000000 --- a/zebra/client_main.c +++ /dev/null @@ -1,230 +0,0 @@ -/* - * $Quagga: $Format:%an, %ai, %h$ $ - * - * GNU Zebra client test main routine. - * Copyright (C) 1997 Kunihiro Ishiguro - * - * 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 - -#include "prefix.h" -#include "stream.h" -#include "zclient.h" -#include "thread.h" -#include "table.h" -#include "zebra/rib.h" -#include "zebra/zserv.h" - -struct thread *master; - -/* Zebra client structure. */ -struct zclient *zclient = NULL; - -/* Zebra socket. */ -int sock; - -/* IPv4 route add and delete test. */ -void -zebra_test_ipv4 (int command, int type, char *prefix, char *gateway, - u_char distance) -{ - struct zapi_ipv4 api; - struct prefix_ipv4 p; - struct in_addr gate; - struct in_addr *gpnt; - - str2prefix_ipv4 (prefix, &p); - inet_aton (gateway, &gate); - gpnt = &gate; - - api.vrf_id = VRF_DEFAULT; - api.type = type; - api.flags = 0; - - api.message = 0; - SET_FLAG (api.message, ZAPI_MESSAGE_NEXTHOP); - api.nexthop_num = 1; - api.nexthop = &gpnt; - api.ifindex_num = 0; - if (distance) - { - SET_FLAG (api.message, ZAPI_MESSAGE_DISTANCE); - api.distance = distance; - } - - - switch (command) - { - case ZEBRA_IPV4_ROUTE_ADD: - zapi_ipv4_add (zclient, &p, &api); - break; - case ZEBRA_IPV4_ROUTE_DELETE: - zapi_ipv4_delete (zclient, &p, &api); - break; - } -} - -#ifdef HAVE_IPV6 -/* IPv6 route add and delete test. */ -void -zebra_test_v6 (int sock) -{ - struct prefix_ipv6 p; - struct in6_addr nexthop; - - str2prefix_ipv6 ("3ffe:506::2/128", &p); - inet_pton (AF_INET6, "::1", &nexthop); - - /* zebra_ipv6_add (sock, ZEBRA_ROUTE_STATIC, 0, &p, &nexthop, 1); */ - - sleep (5); - /* zebra_ipv6_delete (sock, ZEBRA_ROUTE_STATIC, 0, &p, &nexthop, 1); */ -} -#endif /* HAVE_IPV6 */ - -/* Print out usage and exit. */ -void -usage_exit () -{ - fprintf (stderr, "Usage: client filename\n"); - exit (1); -} - -struct zebra_info -{ - char *str; - int type; -} zebra_type[] = -{ - { "static", ZEBRA_ROUTE_STATIC }, - { "rip", ZEBRA_ROUTE_RIP }, - { "ripng", ZEBRA_ROUTE_RIPNG }, - { "babel", ZEBRA_ROUTE_BABEL }, - { "ospf", ZEBRA_ROUTE_OSPF }, - { "ospf6", ZEBRA_ROUTE_OSPF6 }, - { "bgp", ZEBRA_ROUTE_BGP }, - { "nhrp", ZEBRA_ROUTE_NHRP }, - { NULL, 0 } -}; - -/* Zebra route simulator. */ -void -zebra_sim (FILE *fp) -{ - char buf[BUFSIZ]; - char distance_str[BUFSIZ]; - u_char distance; - - while (fgets (buf, sizeof buf, fp)) - { - int i; - int ret; - int type; - char str[BUFSIZ], command[BUFSIZ], prefix[BUFSIZ], gateway[BUFSIZ]; - - distance = 0; - - if (*buf == '#') - continue; - - type = ZEBRA_ROUTE_STATIC; - - ret = sscanf (buf, "%s %s %s %s %s\n", command, str, prefix, gateway, - distance_str); - - if (ret == 5) - { - distance = atoi (distance_str); - } - else - { - ret = sscanf (buf, "%s %s %s %s\n", command, str, prefix, gateway); - - if (ret != 4) - continue; - } - - for (i = 0; i < 10; i++) - { - if (!zebra_type[i].str) - break; - if (strcmp (zebra_type[i].str, str) == 0) - { - type = zebra_type[i].type; - break; - } - } - - if (strcmp (command, "add") == 0) - { - zebra_test_ipv4 (ZEBRA_IPV4_ROUTE_ADD, type, prefix, gateway, - distance); - printf ("%s", buf); - continue; - } - - if (strcmp (command, "del") == 0) - { - zebra_test_ipv4 (ZEBRA_IPV4_ROUTE_DELETE, type, prefix, gateway, - distance); - printf ("%s", buf); - continue; - } - } -} - -/* Test zebra client main routine. */ -int -main (int argc, char **argv) -{ - struct thread_master *master; - FILE *fp; - - if (argc == 1) - usage_exit (); - - master = thread_master_create (); - /* Establish connection to zebra. */ - zclient = zclient_new (master); - zclient->enable = 1; -#ifdef HAVE_TCP_ZEBRA - zclient->sock = zclient_socket (); -#else - zclient->sock = zclient_socket_un (ZEBRA_SERV_PATH); -#endif /* HAVE_TCP_ZEBRA */ - - /* Open simulation file. */ - fp = fopen (argv[1], "r"); - if (fp == NULL) - { - fprintf (stderr, "can't open %s\n", argv[1]); - exit (1); - } - - /* Do main work. */ - zebra_sim (fp); - - sleep (100); - - fclose (fp); - close (sock); - - return 0; -} diff --git a/zebra/interface.c b/zebra/interface.c index f8b946f..ebb03ae 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -1143,7 +1143,7 @@ DEFUN (show_interface_name, show_interface_name_cmd, "show interface IFNAME", SHOW_STR "Interface status and configuration\n" - "Inteface name\n") + "Interface name\n") { struct interface *ifp; vrf_id_t vrf_id = VRF_DEFAULT; @@ -1178,7 +1178,7 @@ ALIAS (show_interface_name, "show interface IFNAME " VRF_CMD_STR, SHOW_STR "Interface status and configuration\n" - "Inteface name\n" + "Interface name\n" VRF_CMD_HELP_STR) /* Show specified interface to vty. */ @@ -1186,7 +1186,7 @@ DEFUN (show_interface_name_vrf_all, show_interface_name_vrf_all_cmd, "show interface IFNAME " VRF_ALL_CMD_STR, SHOW_STR "Interface status and configuration\n" - "Inteface name\n" + "Interface name\n" VRF_ALL_CMD_HELP_STR) { struct interface *ifp; @@ -1706,7 +1706,7 @@ DEFUN (no_link_params_metric, no_link_params_metric_cmd, "no metric", NO_STR - "Disbale Link Metric on this interface\n") + "Disable Link Metric on this interface\n") { struct interface *ifp = (struct interface *) vty->index; @@ -1861,7 +1861,7 @@ DEFUN (no_link_params_admin_grp, no_link_params_admin_grp_cmd, "no admin-grp", NO_STR - "Disbale Administrative group membership on this interface\n") + "Disable Administrative group membership on this interface\n") { struct interface *ifp = (struct interface *) vty->index; @@ -2031,7 +2031,7 @@ DEFUN (no_link_params_delay, no_link_params_delay_cmd, "no delay", NO_STR - "Disbale Unidirectional Average, Min & Max Link Delay on this interface\n") + "Disable Unidirectional Average, Min & Max Link Delay on this interface\n") { struct interface *ifp = (struct interface *) vty->index; struct if_link_params *iflp = if_link_params_get (ifp); @@ -2072,7 +2072,7 @@ DEFUN (no_link_params_delay_var, no_link_params_delay_var_cmd, "no delay-variation", NO_STR - "Disbale Unidirectional Delay Variation on this interface\n") + "Disable Unidirectional Delay Variation on this interface\n") { struct interface *ifp = (struct interface *) vty->index; @@ -2112,7 +2112,7 @@ DEFUN (no_link_params_pkt_loss, no_link_params_pkt_loss_cmd, "no packet-loss", NO_STR - "Disbale Unidirectional Link Packet Loss on this interface\n") + "Disable Unidirectional Link Packet Loss on this interface\n") { struct interface *ifp = (struct interface *) vty->index; @@ -2158,7 +2158,7 @@ DEFUN (no_link_params_res_bw, no_link_params_res_bw_cmd, "no res-bw", NO_STR - "Disbale Unidirectional Residual Bandwidth on this interface\n") + "Disable Unidirectional Residual Bandwidth on this interface\n") { struct interface *ifp = (struct interface *) vty->index; @@ -2204,7 +2204,7 @@ DEFUN (no_link_params_ava_bw, no_link_params_ava_bw_cmd, "no ava-bw", NO_STR - "Disbale Unidirectional Available Bandwidth on this interface\n") + "Disable Unidirectional Available Bandwidth on this interface\n") { struct interface *ifp = (struct interface *) vty->index; @@ -2250,7 +2250,7 @@ DEFUN (no_link_params_use_bw, no_link_params_use_bw_cmd, "no use-bw", NO_STR - "Disbale Unidirectional Utilised Bandwidth on this interface\n") + "Disable Unidirectional Utilised Bandwidth on this interface\n") { struct interface *ifp = (struct interface *) vty->index; diff --git a/zebra/irdp_packet.c b/zebra/irdp_packet.c index 0d31050..afe035b 100644 --- a/zebra/irdp_packet.c +++ b/zebra/irdp_packet.c @@ -102,7 +102,7 @@ parse_irdp_packet(char *p, if (len != iplen) { - zlog_err ("IRDP: RX length doesnt match IP length"); + zlog_err ("IRDP: RX length doesn't match IP length"); return; } @@ -113,7 +113,7 @@ parse_irdp_packet(char *p, return; } - /* XXX: RAW doesnt receive link-layer, surely? ??? */ + /* XXX: RAW doesn't receive link-layer, surely? ??? */ /* Check so we don't checksum packets longer than oure RX_BUF - (ethlen + len of IP-header) 14+20 */ if (iplen > IRDP_RX_BUF-34) diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 64c6cbb..9cd6332 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -476,7 +476,7 @@ ifm_read (struct if_msghdr *ifm) if (ifnlen && (strncmp (ifp->name, ifname, IFNAMSIZ) != 0) ) { if (IS_ZEBRA_DEBUG_KERNEL) - zlog_debug ("%s: ifp name %s doesnt match sdl name %s", + zlog_debug ("%s: ifp name %s doesn't match sdl name %s", __func__, ifp->name, ifname); ifp = NULL; } diff --git a/zebra/main.c b/zebra/main.c index 35cb159..e34ff76 100644 --- a/zebra/main.c +++ b/zebra/main.c @@ -295,7 +295,6 @@ main (int argc, char **argv) int daemon_mode = 0; char *config_file = NULL; char *progname; - struct thread thread; char *zserv_path = NULL; char *fpm_format = NULL; @@ -489,10 +488,8 @@ main (int argc, char **argv) /* Print banner. */ zlog_notice ("Zebra %s starting: vty@%d", QUAGGA_VERSION, vty_port); + + thread_main (zebrad.master); - while (thread_fetch (zebrad.master, &thread)) - thread_call (&thread); - - /* Not reached... */ return 0; } diff --git a/zebra/redistribute.c b/zebra/redistribute.c index a7a6b25..6d466ac 100644 --- a/zebra/redistribute.c +++ b/zebra/redistribute.c @@ -182,11 +182,11 @@ zebra_redistribute (struct zserv *client, int type, vrf_id_t vrf_id) } void -redistribute_add (struct prefix *p, struct rib *rib) +redistribute_add (struct prefix *p, struct rib *rib, struct rib *rib_old) { struct listnode *node, *nnode; struct zserv *client; - + for (ALL_LIST_ELEMENTS (zebrad.client_list, node, nnode, client)) { if ((is_default (p) && @@ -204,6 +204,21 @@ redistribute_add (struct prefix *p, struct rib *rib) zsend_route_multipath (ZEBRA_IPV6_ROUTE_ADD, client, p, rib); } } + else if (rib_old && vrf_bitmap_check (client->redist[rib_old->type], + rib_old->vrf_id)) + { + /* redistribute_add has implicit withdraw semantics, so there + * may be an old route already redistributed that is being updated. + * + * However, if the new route is of a type that is /not/ redistributed + * to the client, then we must ensure the old route is explicitly + * withdrawn. + */ + if (p->family == AF_INET) + zsend_route_multipath (ZEBRA_IPV4_ROUTE_DELETE, client, p, rib_old); + if (p->family == AF_INET6) + zsend_route_multipath (ZEBRA_IPV6_ROUTE_DELETE, client, p, rib_old); + } } } diff --git a/zebra/redistribute.h b/zebra/redistribute.h index ce84009..196d7c3 100644 --- a/zebra/redistribute.h +++ b/zebra/redistribute.h @@ -34,7 +34,7 @@ extern void zebra_redistribute_default_add (int, struct zserv *, int, extern void zebra_redistribute_default_delete (int, struct zserv *, int, vrf_id_t); -extern void redistribute_add (struct prefix *, struct rib *); +extern void redistribute_add (struct prefix *, struct rib *new, struct rib *old); extern void redistribute_delete (struct prefix *, struct rib *); extern void zebra_interface_up_update (struct interface *); diff --git a/zebra/redistribute_null.c b/zebra/redistribute_null.c index 5584d12..99272b6 100644 --- a/zebra/redistribute_null.c +++ b/zebra/redistribute_null.c @@ -44,7 +44,7 @@ void zebra_redistribute_default_delete (int a, struct zserv *b, int c, { return; } #endif -void redistribute_add (struct prefix *a, struct rib *b) +void redistribute_add (struct prefix *a, struct rib *b, struct rib *c) { return; } #ifdef HAVE_SYS_WEAK_ALIAS_PRAGMA #pragma weak redistribute_delete = redistribute_add diff --git a/zebra/test_main.c b/zebra/test_main.c index 09f53ad..3dd02bc 100644 --- a/zebra/test_main.c +++ b/zebra/test_main.c @@ -273,7 +273,6 @@ main (int argc, char **argv) int daemon_mode = 0; char *config_file = NULL; char *progname; - struct thread thread; /* Set umask before anything for security */ umask (0027); @@ -388,8 +387,7 @@ main (int argc, char **argv) /* Print banner. */ zlog_notice ("Zebra %s starting: vty@%d", QUAGGA_VERSION, vty_port); - while (thread_fetch (zebrad.master, &thread)) - thread_call (&thread); + thread_main (zebrad.master); /* Not reached... */ return 0; diff --git a/zebra/testrib.conf b/zebra/testrib.conf deleted file mode 100644 index 0df7dc2..0000000 --- a/zebra/testrib.conf +++ /dev/null @@ -1,76 +0,0 @@ -! -! Zebra configuration saved from vty -! 2007/04/01 17:46:48 -! -password foo -log stdout -service advanced-vty -! -debug zebra rib -debug zebra kernel -! -interface eth0 - ip address 10.0.0.1/24 - ipv6 address 1::0:1/64 - state up -! -interface eth1 - ip address 10.0.1.1/24 - ipv6 address 1::1:1/64 -! -interface eth2 - ip address 10.0.2.1/24 - ipv6 address 1::2:1/64 -! -! Unnumbered -interface foo1 - ip address 192.168.1.1/32 - ipv6 address 2::1:1/128 -! -interface foo0 - ip address 192.168.1.1/32 - ip address 192.168.1.1/24 label foo - ipv6 address 2::1:1/128 - state up -! - -! statics that should be subsumed by connected routes, according to interface -! state -ip route 10.0.0.0/24 10.0.1.254 -ip route 10.0.1.0/24 10.0.2.254 -ip route 10.0.2.0/24 10.0.0.254 -ipv6 route 1::0:0/64 1::1:f -ipv6 route 1::1:0/64 1::2:f -ipv6 route 1::2:0/64 1::0:f - -! null route -ip route 10.1.0.1/32 null0 -ipv6 route 100::1:1/128 null0 - -! normalish routes -ip route 1.1.2.0/24 10.0.0.2 -ipv6 route 80::/64 1::0:e - -! different admin distances -ip route 1.1.0.2/32 10.0.0.3 10 -ip route 1.1.0.2/32 10.0.0.4 20 -ip route 1.1.0.2/32 10.0.1.3 30 - -ipv6 route 90::1/128 1::0:a 10 -ipv6 route 90::1/128 1::0:b 20 -ipv6 route 90::1/128 1::1:c 30 - -! multiple-nexthop + distance -ip route 1.1.0.2/32 10.0.0.5 10 -ipv6 route 90::1/128 1::0:d 10 - -! a recursive route, potentially. -ip route 1.1.3.0/24 10.0.0.2 -! double recursive, potentially -ip route 1.1.0.1/32 1.1.3.1 -! -ip route 1.1.1.0/24 1.1.2.2 - -line vty - exec-timeout 0 0 -! diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 9ca0290..857abca 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -1320,7 +1320,7 @@ rib_process (struct route_node *rn) { /* Install new or replace existing redistributed entry */ SET_FLAG (new_selected->flags, ZEBRA_FLAG_SELECTED); - redistribute_add (&rn->p, new_selected); + redistribute_add (&rn->p, new_selected, old_selected); } }