From 90f52bf990791ea73479ffc50fc1eb3450de443a Mon Sep 17 00:00:00 2001 From: Chris Luke Date: Mon, 12 Sep 2016 08:55:13 -0400 Subject: Refactor pre-Doxy siphon scripts; VPP-396 - Modularize the code to make the Siphon process easier to maintain. - Move much of the output rendering into Jinja2 templates. - Add syscfg siphon type for startup config documentation. - Add sample syscfg documentation. - Add clicfg and syscfg preamble docs, adapted from their wiki pages. - Fix sorting of CLI items across multiple directories. Change-Id: Ib8288fe005adfea68ceed75a38ff8eba25d3cc79 Signed-off-by: Chris Luke --- doxygen/siphon-process | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 doxygen/siphon-process (limited to 'doxygen/siphon-process') diff --git a/doxygen/siphon-process b/doxygen/siphon-process new file mode 100755 index 00000000..ea9df96f --- /dev/null +++ b/doxygen/siphon-process @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Filter for .siphon files that are generated by other filters. +# The idea is to siphon off certain initializers so that we can better +# auto-document the contents of that initializer. + +import os, sys, argparse, logging +import siphon + +DEFAULT_LOGFILE = None +DEFAULT_LOGLEVEL = "info" +DEFAULT_SIPHON ="clicmd" +DEFAULT_OUTPUT = None +DEFAULT_TEMPLATES = os.path.dirname(__file__) + "/siphon_templates" + +ap = argparse.ArgumentParser() +ap.add_argument("--log-file", default=DEFAULT_LOGFILE, + help="Log file [%s]" % DEFAULT_LOGFILE) +ap.add_argument("--log-level", default=DEFAULT_LOGLEVEL, + choices=["debug", "info", "warning", "error", "critical"], + help="Logging level [%s]" % DEFAULT_LOGLEVEL) + +ap.add_argument("--type", '-t', metavar="siphon_type", default=DEFAULT_SIPHON, + choices=siphon.process.siphons.keys(), + help="Siphon type to process [%s]" % DEFAULT_SIPHON) +ap.add_argument("--output", '-o', metavar="file", default=DEFAULT_OUTPUT, + help="Output file (uses stdout if not defined) [%s]" % DEFAULT_OUTPUT) +ap.add_argument("--templates", metavar="directory", default=DEFAULT_TEMPLATES, + help="Path to render templates directory [%s]" % DEFAULT_TEMPLATES) +ap.add_argument("input", nargs='+', metavar="input_file", + help="Input .siphon files") +args = ap.parse_args() + +logging.basicConfig(filename=args.log_file, + level=getattr(logging, args.log_level.upper(), None)) +log = logging.getLogger("siphon_process") + +# Determine where to send the generated output +if args.output is None: + out = sys.stdout +else: + out = open(args.output, "w+") + +# Get our processor +klass = siphon.process.siphons[args.type] +processor = klass(template_directory=args.templates) + +# Load the input files +processor.load_json(args.input) + +# Process the data +processor.process(out=out) + +# All done -- cgit 1.2.3-korg From c3f92adf6be41263eb466e074e4136d29b50b59a Mon Sep 17 00:00:00 2001 From: Chris Luke Date: Wed, 5 Oct 2016 15:45:19 -0400 Subject: Add support for using documentation siphons in multiple ways Experiental support for generating multiple output formats from the same siphoned data. Adds a contrived example to generate a plain list of all CLI commands (the "itemlist" format). Eventually we can consider moving the tempate procesisng into the Output class as well as a way to override how the data is traversed (ordered). Change-Id: I77629a74a8fa0c7e583993469dc50491f72f13e7 Signed-off-by: Chris Luke --- doxygen/Makefile | 36 ++++-- doxygen/siphon-process | 6 +- doxygen/siphon/process.py | 79 +++++++++---- doxygen/siphon_templates/clicmd/index_entry.md | 17 --- doxygen/siphon_templates/clicmd/index_header.md | 130 --------------------- doxygen/siphon_templates/clicmd/item_format.md | 59 ---------- doxygen/siphon_templates/default/index_entry.md | 16 --- doxygen/siphon_templates/default/index_section.md | 18 --- doxygen/siphon_templates/default/item_format.md | 16 --- doxygen/siphon_templates/default/item_header.md | 18 --- .../itemlist/clicmd/item_format.itemlist | 17 +++ .../itemlist/default/index_entry.itemlist | 15 +++ .../itemlist/default/index_header.itemlist | 15 +++ .../itemlist/default/index_section.itemlist | 15 +++ .../itemlist/default/item_format.itemlist | 16 +++ .../itemlist/default/item_header.itemlist | 15 +++ .../itemlist/syscfg/item_format.itemlist | 17 +++ .../markdown/clicmd/index_entry.md | 17 +++ .../markdown/clicmd/index_header.md | 130 +++++++++++++++++++++ .../markdown/clicmd/item_format.md | 59 ++++++++++ .../markdown/default/index_entry.md | 16 +++ .../markdown/default/index_section.md | 18 +++ .../markdown/default/item_format.md | 16 +++ .../markdown/default/item_header.md | 18 +++ .../markdown/syscfg/index_header.md | 111 ++++++++++++++++++ .../markdown/syscfg/item_format.md | 42 +++++++ doxygen/siphon_templates/syscfg/index_header.md | 111 ------------------ doxygen/siphon_templates/syscfg/item_format.md | 42 ------- 28 files changed, 626 insertions(+), 459 deletions(-) delete mode 100644 doxygen/siphon_templates/clicmd/index_entry.md delete mode 100644 doxygen/siphon_templates/clicmd/index_header.md delete mode 100644 doxygen/siphon_templates/clicmd/item_format.md delete mode 100644 doxygen/siphon_templates/default/index_entry.md delete mode 100644 doxygen/siphon_templates/default/index_section.md delete mode 100644 doxygen/siphon_templates/default/item_format.md delete mode 100644 doxygen/siphon_templates/default/item_header.md create mode 100644 doxygen/siphon_templates/itemlist/clicmd/item_format.itemlist create mode 100644 doxygen/siphon_templates/itemlist/default/index_entry.itemlist create mode 100644 doxygen/siphon_templates/itemlist/default/index_header.itemlist create mode 100644 doxygen/siphon_templates/itemlist/default/index_section.itemlist create mode 100644 doxygen/siphon_templates/itemlist/default/item_format.itemlist create mode 100644 doxygen/siphon_templates/itemlist/default/item_header.itemlist create mode 100644 doxygen/siphon_templates/itemlist/syscfg/item_format.itemlist create mode 100644 doxygen/siphon_templates/markdown/clicmd/index_entry.md create mode 100644 doxygen/siphon_templates/markdown/clicmd/index_header.md create mode 100644 doxygen/siphon_templates/markdown/clicmd/item_format.md create mode 100644 doxygen/siphon_templates/markdown/default/index_entry.md create mode 100644 doxygen/siphon_templates/markdown/default/index_section.md create mode 100644 doxygen/siphon_templates/markdown/default/item_format.md create mode 100644 doxygen/siphon_templates/markdown/default/item_header.md create mode 100644 doxygen/siphon_templates/markdown/syscfg/index_header.md create mode 100644 doxygen/siphon_templates/markdown/syscfg/item_format.md delete mode 100644 doxygen/siphon_templates/syscfg/index_header.md delete mode 100644 doxygen/siphon_templates/syscfg/item_format.md (limited to 'doxygen/siphon-process') diff --git a/doxygen/Makefile b/doxygen/Makefile index 7031e84d..92fa3635 100644 --- a/doxygen/Makefile +++ b/doxygen/Makefile @@ -121,6 +121,7 @@ SIPHONS ?= clicmd syscfg SIPHON_FILES = $(addprefix $(SIPHON_INPUT)/,$(addsuffix .siphon,$(SIPHONS))) SIPHON_DOCS = $(addprefix $(SIPHON_OUTPUT)/,$(addsuffix .md,$(SIPHONS))) +SIPHON_ITEMLIST = $(addprefix $(SIPHON_OUTPUT)/,$(addsuffix .itemlist,$(filter clicmd,$(SIPHONS)))) $(BR)/.doxygen-bootstrap.ok: Makefile @echo "Checking whether dependencies for Doxygen are installed..." @@ -200,24 +201,37 @@ $(SIPHON_FILES): $(BR)/.doxygen-bootstrap.ok \ --output="$(SIPHON_INPUT)" \ "@$(SIPHON_INPUT)/files" -# Process the .siphon source fragments and render them into doxygen flavored -# markdown documentation -.DELETE_ON_ERROR: $(SIPHON_DOCS) -$(SIPHON_OUTPUT)/%.md: $(SIPHON_INPUT)/%.siphon \ +# Evaluate this to build a siphon doc output target for each desired +# output type: +# $(eval $(call siphon-process,file_extension,output_type_name)) +define siphon-process +$(SIPHON_OUTPUT)/%.$(1): $(SIPHON_INPUT)/%.siphon \ $(DOXY_DIR)/siphon-process \ $(wildcard $(DOXY_DIR)/siphon/*.py) \ - $(wildcard $(DOXY_DIR)/siphon_templates/*/*.md) - @echo "Processing siphon from $(notdir $<)..." + $(wildcard $(DOXY_DIR)/siphon_templates/$(2)/*/*.$(1)) + @echo "Processing siphon for $(2) from $$(notdir $$<)..." @set -e; \ cd "$(WS_ROOT)"; \ $(DOXY_DIR)/siphon-process \ - --type=$(basename $(notdir $<)) \ - --output="$@" \ - "$<" + --type=$$(basename $$(notdir $$<)) \ + --format=$(2) \ + --output="$$@" \ + "$$<" +endef + +# Process the .siphon source fragments and render them into doxygen flavored +# markdown documentation +.DELETE_ON_ERROR: $(SIPHON_DOCS) +$(eval $(call siphon-process,md,markdown)) + +# Process the .siphon source fragments and render them into a list of cli +# commands. +.DELETE_ON_ERROR: $(SIPHON_ITEMLIST) +$(eval $(call siphon-process,itemlist,itemlist)) -# This target can be used just to generate the siphoned docs +# This target can be used just to generate the siphoned things .PHONY: doxygen-siphon -doxygen-siphon: $(SIPHON_DOCS) +doxygen-siphon: $(SIPHON_DOCS) $(SIPHON_ITEMLIST) # Generate the doxygen docs .PHONY: doxygen diff --git a/doxygen/siphon-process b/doxygen/siphon-process index ea9df96f..698da882 100755 --- a/doxygen/siphon-process +++ b/doxygen/siphon-process @@ -23,6 +23,7 @@ import siphon DEFAULT_LOGFILE = None DEFAULT_LOGLEVEL = "info" DEFAULT_SIPHON ="clicmd" +DEFAULT_FORMAT = "markdown" DEFAULT_OUTPUT = None DEFAULT_TEMPLATES = os.path.dirname(__file__) + "/siphon_templates" @@ -36,6 +37,9 @@ ap.add_argument("--log-level", default=DEFAULT_LOGLEVEL, ap.add_argument("--type", '-t', metavar="siphon_type", default=DEFAULT_SIPHON, choices=siphon.process.siphons.keys(), help="Siphon type to process [%s]" % DEFAULT_SIPHON) +ap.add_argument("--format", '-f', default=DEFAULT_FORMAT, + choices=siphon.process.formats.keys(), + help="Output format to generate [%s]" % DEFAULT_FORMAT) ap.add_argument("--output", '-o', metavar="file", default=DEFAULT_OUTPUT, help="Output file (uses stdout if not defined) [%s]" % DEFAULT_OUTPUT) ap.add_argument("--templates", metavar="directory", default=DEFAULT_TEMPLATES, @@ -56,7 +60,7 @@ else: # Get our processor klass = siphon.process.siphons[args.type] -processor = klass(template_directory=args.templates) +processor = klass(template_directory=args.templates, format=args.format) # Load the input files processor.load_json(args.input) diff --git a/doxygen/siphon/process.py b/doxygen/siphon/process.py index 34e829c5..f3119ea8 100644 --- a/doxygen/siphon/process.py +++ b/doxygen/siphon/process.py @@ -20,6 +20,9 @@ import logging, os,sys, cgi, json, jinja2, HTMLParser """Mapping of known processors to their classes""" siphons = {} +"""Mapping of known output formats to their classes""" +formats = {} + """Generate rendered output for siphoned data.""" class Siphon(object): @@ -51,28 +54,36 @@ class Siphon(object): """Template environment, if we're using templates""" _tplenv = None - def __init__(self, template_directory=None): + def __init__(self, template_directory, format): super(Siphon, self).__init__() self.log = logging.getLogger("siphon.process.%s" % self.name) - if template_directory is not None: - self.template_directory = template_directory - searchpath = [ - template_directory + "/" + self.name, - template_directory + "/" + "default", - ] - loader = jinja2.FileSystemLoader(searchpath=searchpath) - self._tplenv = jinja2.Environment( - loader=loader, - trim_blocks=True, - keep_trailing_newline=True) - - # Convenience, get a reference to the internal escape and - # unescape methods in cgi and HTMLParser. These then become - # available to templates to use, if needed. - self._h = HTMLParser.HTMLParser() - self.escape = cgi.escape - self.unescape = self._h.unescape + # Get our output format details + fmt_klass = formats[format] + fmt = fmt_klass() + self._format = fmt + + # Sort out the template search path + def _tpldir(name): + return os.sep.join((template_directory, fmt.name, name)) + + self.template_directory = template_directory + searchpath = [ + _tpldir(self.name), + _tpldir("default"), + ] + loader = jinja2.FileSystemLoader(searchpath=searchpath) + self._tplenv = jinja2.Environment( + loader=loader, + trim_blocks=True, + keep_trailing_newline=True) + + # Convenience, get a reference to the internal escape and + # unescape methods in cgi and HTMLParser. These then become + # available to templates to use, if needed. + self._h = HTMLParser.HTMLParser() + self.escape = cgi.escape + self.unescape = self._h.unescape # Output renderers @@ -157,7 +168,7 @@ class Siphon(object): """Template processor""" def template(self, name, **kwargs): - tpl = self._tplenv.get_template(name + ".md") + tpl = self._tplenv.get_template(name + self._format.extension) return tpl.render( this=self, **kwargs) @@ -270,3 +281,31 @@ class Siphon(object): # Deliver the accumulated body output out.write(contents) + + +"""Output format class""" +class Format(object): + + """Name of this output format""" + name = None + + """Expected file extension of templates that build this format""" + extension = None + + +"""Markdown output format""" +class FormatMarkdown(Format): + name = "markdown" + extension = ".md" + +# Register 'markdown' +formats["markdown"] = FormatMarkdown + + +"""Itemlist output format""" +class FormatItemlist(Format): + name = "itemlist" + extension = ".itemlist" + +# Register 'itemlist' +formats["itemlist"] = FormatItemlist diff --git a/doxygen/siphon_templates/clicmd/index_entry.md b/doxygen/siphon_templates/clicmd/index_entry.md deleted file mode 100644 index 1fa9ec9b..00000000 --- a/doxygen/siphon_templates/clicmd/index_entry.md +++ /dev/null @@ -1,17 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} -{% set v = item['value'] %} -{{ "* [%s](@ref %s)" % (v['path'], meta["label"]) }} diff --git a/doxygen/siphon_templates/clicmd/index_header.md b/doxygen/siphon_templates/clicmd/index_header.md deleted file mode 100644 index 4167f4dc..00000000 --- a/doxygen/siphon_templates/clicmd/index_header.md +++ /dev/null @@ -1,130 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} -# Debug CLI {{'{#'}}clicmd} - -The VPP network stack comes equipped with a set of commands that are useful -for debugging. - -The easiest way to access the CLI (with proper permissions) is to use the -vppctl command: - -``` -sudo vppctl -``` - -The CLI parser matches static keyword strings, eventually invoking an action -function. Unambiguous partial keyword matching always occurs. The action -functions consume input until satisfied or until they fail. This model makes -for easy coding, but does not guarantee useful "help" output. It's up to the -CLI command writer to add useful help strings. - -You can find the source code of CLI commands by searching for instances of the -@c VLIB_CLI_COMMAND macro in the code source files. - -Please help maintain and improve this document to make and keep these commands -clear and useful! - -@todo Document where to modify this CLI intro text. - - -## Debug and Telnet CLI - -The debug CLI is enabled with the unix interactive parameter or startup -configuration option. This causes VPP to start without daemonizing and -presents a command line interface on the terminal where it is run. - -The Telnet CLI is enabled with the `cli-listen localhost:5002` option which -will cause VPP to listen for TCP connections on the localhost address port -@c 5002. A Telnet client can then connect to this port (for example, `telnet -localhost 5002`) and will receive a command line prompt. - -This configuration will enable both mechanisms: - -``` -unix { - interactive - cli-listen localhost:5002 -} -``` - -The debug CLI can operate in line mode, which may be useful when running -inside an IDE like Emacs. This is enabled with the option -`unix cli-line-mode`. Several other options exist that alter how this -CLI works, see the @ref syscfg section for details. - -The CLI starts with a banner graphic (which can be disabled) and a prompt. The -prompt will typically read `vpp` for a release version of VPP and `DBGvpp#` -for a development version with debugging enabled, for example: - - _______ _ _ _____ ___ - __/ __/ _ \ (_)__ | | / / _ \/ _ \ - _/ _// // / / / _ \ | |/ / ___/ ___/ - /_/ /____(_)_/\___/ |___/_/ /_/ - - vpp# - -versus: - - _______ _ _ _____ ___ - __/ __/ _ \ (_)__ | | / / _ \/ _ \ - _/ _// // / / / _ \ | |/ / ___/ ___/ - /_/ /____(_)_/\___/ |___/_/ /_/ - - DBGvpp# - -This prompt can be configured with the `unix cli-prompt` setting and the -banner is disabled with `unix cli-no-banner`. - -## CLI features - -The CLI has several editing features that make it easy to use. - -- Cursor keys left/right will move the cursor within a command line; - typing will insert at the cursor; erase will erase at the cursor. - -- Ctrl-left/right will search for the start of the next word to - the left or right. -- Home/end will jump the cursor to the start and end of the line. -- Cursor keys up/down and ^P/^N iterate through the command history - buffer. Lines from the history buffer may be edited. New commands - are added to the end of the buffer when executed; though - duplicates of the previous command are not added. -- ^U erases the line contents from the left of the cursor to the - start. -- ^K erases the contents from the cursor to the end. -- ^S/^R will search the command history forwards or in reverse for - a command; start typing for matches to auto complete. -- ^L will clear the screen (if supported by the terminal) and repaint - the prompt and any current line. The cursor position is also - retained. -- The CLI can be closed with the quit command. Alternatively, ^D on - an empty input line will also close the session. Closing the debug - session will also shutdown VPP. - -Output that exceeds the length of a terminal page will be buffered, up to a -limit. - -- Space or page-down displays the next page. -- Enter or down-arrow displays the next line. -- Page-up goes back a page. -- Up-arrow goes up a line. -- Home/end jump to the start/end of the buffered output. -- The key q quits the pager. Space and enter will also quit the - pager if the end of the buffer has been reached. - -## Index of CLI commands - -[TOC] diff --git a/doxygen/siphon_templates/clicmd/item_format.md b/doxygen/siphon_templates/clicmd/item_format.md deleted file mode 100644 index 288dae40..00000000 --- a/doxygen/siphon_templates/clicmd/item_format.md +++ /dev/null @@ -1,59 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} -{% set v = item['value'] %} -{{ "@section %s %s" % (meta['label'], v['path']) }} -{% if 'short_help' in v %} - -### Summary/usage - -{% set str = v['short_help'] %} -{% set period = "." if str[-1] != "." else "" %} -{% set prefix = " " if "[" in str or "<" in str or "|" in str else "" %} -{% set str = this.unescape(str) %} -{{ "%s%s%s" % (prefix, str, period) }} -{% endif %} -{% if 'long_help' in v %} -{# This is seldom used and will likely be deprecated #} - -### Long help - -{{ v['long_help'] }} -{% endif %} -{% if 'siphon_block' in item['meta'] %} -{% set sb = item["meta"]["siphon_block"] %} -{% if sb %} -{# Extracted from the code in /*? ... ?*/ blocks #} - -### Description - -{{ sb }} -{% endif %} -{% endif %} -{% if 'name' in meta or 'function' in v %} -{# Gives some developer-useful linking #} - -### Declaration and implementation -{% if "name" in meta %} - -{{ "Declaration: @ref %s (@ref %s line %d)" % - (meta['name'], meta["file"], item["meta"]["line_start"]) }} -{% endif %} -{% if "function" in v %} - -{{ "Implementation: @ref %s." % v["function"] }} -{% endif %} -{% endif %} - diff --git a/doxygen/siphon_templates/default/index_entry.md b/doxygen/siphon_templates/default/index_entry.md deleted file mode 100644 index 479dcdb2..00000000 --- a/doxygen/siphon_templates/default/index_entry.md +++ /dev/null @@ -1,16 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} -{{ "* [%s](@ref %s)" % (item["name"], meta["label"]) }} diff --git a/doxygen/siphon_templates/default/index_section.md b/doxygen/siphon_templates/default/index_section.md deleted file mode 100644 index 3c9d2b47..00000000 --- a/doxygen/siphon_templates/default/index_section.md +++ /dev/null @@ -1,18 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} - -@subpage {{ this.page_label(group) }} - diff --git a/doxygen/siphon_templates/default/item_format.md b/doxygen/siphon_templates/default/item_format.md deleted file mode 100644 index ed1b1bf7..00000000 --- a/doxygen/siphon_templates/default/item_format.md +++ /dev/null @@ -1,16 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} -{{ raise NotImplementedError }} diff --git a/doxygen/siphon_templates/default/item_header.md b/doxygen/siphon_templates/default/item_header.md deleted file mode 100644 index 0c21e51f..00000000 --- a/doxygen/siphon_templates/default/item_header.md +++ /dev/null @@ -1,18 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} - -{{ "@page %s %s" % (this.page_label(group), this.page_title(group)) }} - diff --git a/doxygen/siphon_templates/itemlist/clicmd/item_format.itemlist b/doxygen/siphon_templates/itemlist/clicmd/item_format.itemlist new file mode 100644 index 00000000..195c3780 --- /dev/null +++ b/doxygen/siphon_templates/itemlist/clicmd/item_format.itemlist @@ -0,0 +1,17 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{# Just output the command path #} +{{ item['value']['path'] }} diff --git a/doxygen/siphon_templates/itemlist/default/index_entry.itemlist b/doxygen/siphon_templates/itemlist/default/index_entry.itemlist new file mode 100644 index 00000000..3b2494fb --- /dev/null +++ b/doxygen/siphon_templates/itemlist/default/index_entry.itemlist @@ -0,0 +1,15 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} diff --git a/doxygen/siphon_templates/itemlist/default/index_header.itemlist b/doxygen/siphon_templates/itemlist/default/index_header.itemlist new file mode 100644 index 00000000..3b2494fb --- /dev/null +++ b/doxygen/siphon_templates/itemlist/default/index_header.itemlist @@ -0,0 +1,15 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} diff --git a/doxygen/siphon_templates/itemlist/default/index_section.itemlist b/doxygen/siphon_templates/itemlist/default/index_section.itemlist new file mode 100644 index 00000000..3b2494fb --- /dev/null +++ b/doxygen/siphon_templates/itemlist/default/index_section.itemlist @@ -0,0 +1,15 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} diff --git a/doxygen/siphon_templates/itemlist/default/item_format.itemlist b/doxygen/siphon_templates/itemlist/default/item_format.itemlist new file mode 100644 index 00000000..ed1b1bf7 --- /dev/null +++ b/doxygen/siphon_templates/itemlist/default/item_format.itemlist @@ -0,0 +1,16 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{{ raise NotImplementedError }} diff --git a/doxygen/siphon_templates/itemlist/default/item_header.itemlist b/doxygen/siphon_templates/itemlist/default/item_header.itemlist new file mode 100644 index 00000000..3b2494fb --- /dev/null +++ b/doxygen/siphon_templates/itemlist/default/item_header.itemlist @@ -0,0 +1,15 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} diff --git a/doxygen/siphon_templates/itemlist/syscfg/item_format.itemlist b/doxygen/siphon_templates/itemlist/syscfg/item_format.itemlist new file mode 100644 index 00000000..02320519 --- /dev/null +++ b/doxygen/siphon_templates/itemlist/syscfg/item_format.itemlist @@ -0,0 +1,17 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{# Just output the item name #} +{{ item['name'] }} diff --git a/doxygen/siphon_templates/markdown/clicmd/index_entry.md b/doxygen/siphon_templates/markdown/clicmd/index_entry.md new file mode 100644 index 00000000..1fa9ec9b --- /dev/null +++ b/doxygen/siphon_templates/markdown/clicmd/index_entry.md @@ -0,0 +1,17 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{% set v = item['value'] %} +{{ "* [%s](@ref %s)" % (v['path'], meta["label"]) }} diff --git a/doxygen/siphon_templates/markdown/clicmd/index_header.md b/doxygen/siphon_templates/markdown/clicmd/index_header.md new file mode 100644 index 00000000..4167f4dc --- /dev/null +++ b/doxygen/siphon_templates/markdown/clicmd/index_header.md @@ -0,0 +1,130 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +# Debug CLI {{'{#'}}clicmd} + +The VPP network stack comes equipped with a set of commands that are useful +for debugging. + +The easiest way to access the CLI (with proper permissions) is to use the +vppctl command: + +``` +sudo vppctl +``` + +The CLI parser matches static keyword strings, eventually invoking an action +function. Unambiguous partial keyword matching always occurs. The action +functions consume input until satisfied or until they fail. This model makes +for easy coding, but does not guarantee useful "help" output. It's up to the +CLI command writer to add useful help strings. + +You can find the source code of CLI commands by searching for instances of the +@c VLIB_CLI_COMMAND macro in the code source files. + +Please help maintain and improve this document to make and keep these commands +clear and useful! + +@todo Document where to modify this CLI intro text. + + +## Debug and Telnet CLI + +The debug CLI is enabled with the unix interactive parameter or startup +configuration option. This causes VPP to start without daemonizing and +presents a command line interface on the terminal where it is run. + +The Telnet CLI is enabled with the `cli-listen localhost:5002` option which +will cause VPP to listen for TCP connections on the localhost address port +@c 5002. A Telnet client can then connect to this port (for example, `telnet +localhost 5002`) and will receive a command line prompt. + +This configuration will enable both mechanisms: + +``` +unix { + interactive + cli-listen localhost:5002 +} +``` + +The debug CLI can operate in line mode, which may be useful when running +inside an IDE like Emacs. This is enabled with the option +`unix cli-line-mode`. Several other options exist that alter how this +CLI works, see the @ref syscfg section for details. + +The CLI starts with a banner graphic (which can be disabled) and a prompt. The +prompt will typically read `vpp` for a release version of VPP and `DBGvpp#` +for a development version with debugging enabled, for example: + + _______ _ _ _____ ___ + __/ __/ _ \ (_)__ | | / / _ \/ _ \ + _/ _// // / / / _ \ | |/ / ___/ ___/ + /_/ /____(_)_/\___/ |___/_/ /_/ + + vpp# + +versus: + + _______ _ _ _____ ___ + __/ __/ _ \ (_)__ | | / / _ \/ _ \ + _/ _// // / / / _ \ | |/ / ___/ ___/ + /_/ /____(_)_/\___/ |___/_/ /_/ + + DBGvpp# + +This prompt can be configured with the `unix cli-prompt` setting and the +banner is disabled with `unix cli-no-banner`. + +## CLI features + +The CLI has several editing features that make it easy to use. + +- Cursor keys left/right will move the cursor within a command line; + typing will insert at the cursor; erase will erase at the cursor. + +- Ctrl-left/right will search for the start of the next word to + the left or right. +- Home/end will jump the cursor to the start and end of the line. +- Cursor keys up/down and ^P/^N iterate through the command history + buffer. Lines from the history buffer may be edited. New commands + are added to the end of the buffer when executed; though + duplicates of the previous command are not added. +- ^U erases the line contents from the left of the cursor to the + start. +- ^K erases the contents from the cursor to the end. +- ^S/^R will search the command history forwards or in reverse for + a command; start typing for matches to auto complete. +- ^L will clear the screen (if supported by the terminal) and repaint + the prompt and any current line. The cursor position is also + retained. +- The CLI can be closed with the quit command. Alternatively, ^D on + an empty input line will also close the session. Closing the debug + session will also shutdown VPP. + +Output that exceeds the length of a terminal page will be buffered, up to a +limit. + +- Space or page-down displays the next page. +- Enter or down-arrow displays the next line. +- Page-up goes back a page. +- Up-arrow goes up a line. +- Home/end jump to the start/end of the buffered output. +- The key q quits the pager. Space and enter will also quit the + pager if the end of the buffer has been reached. + +## Index of CLI commands + +[TOC] diff --git a/doxygen/siphon_templates/markdown/clicmd/item_format.md b/doxygen/siphon_templates/markdown/clicmd/item_format.md new file mode 100644 index 00000000..288dae40 --- /dev/null +++ b/doxygen/siphon_templates/markdown/clicmd/item_format.md @@ -0,0 +1,59 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{% set v = item['value'] %} +{{ "@section %s %s" % (meta['label'], v['path']) }} +{% if 'short_help' in v %} + +### Summary/usage + +{% set str = v['short_help'] %} +{% set period = "." if str[-1] != "." else "" %} +{% set prefix = " " if "[" in str or "<" in str or "|" in str else "" %} +{% set str = this.unescape(str) %} +{{ "%s%s%s" % (prefix, str, period) }} +{% endif %} +{% if 'long_help' in v %} +{# This is seldom used and will likely be deprecated #} + +### Long help + +{{ v['long_help'] }} +{% endif %} +{% if 'siphon_block' in item['meta'] %} +{% set sb = item["meta"]["siphon_block"] %} +{% if sb %} +{# Extracted from the code in /*? ... ?*/ blocks #} + +### Description + +{{ sb }} +{% endif %} +{% endif %} +{% if 'name' in meta or 'function' in v %} +{# Gives some developer-useful linking #} + +### Declaration and implementation +{% if "name" in meta %} + +{{ "Declaration: @ref %s (@ref %s line %d)" % + (meta['name'], meta["file"], item["meta"]["line_start"]) }} +{% endif %} +{% if "function" in v %} + +{{ "Implementation: @ref %s." % v["function"] }} +{% endif %} +{% endif %} + diff --git a/doxygen/siphon_templates/markdown/default/index_entry.md b/doxygen/siphon_templates/markdown/default/index_entry.md new file mode 100644 index 00000000..479dcdb2 --- /dev/null +++ b/doxygen/siphon_templates/markdown/default/index_entry.md @@ -0,0 +1,16 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{{ "* [%s](@ref %s)" % (item["name"], meta["label"]) }} diff --git a/doxygen/siphon_templates/markdown/default/index_section.md b/doxygen/siphon_templates/markdown/default/index_section.md new file mode 100644 index 00000000..3c9d2b47 --- /dev/null +++ b/doxygen/siphon_templates/markdown/default/index_section.md @@ -0,0 +1,18 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} + +@subpage {{ this.page_label(group) }} + diff --git a/doxygen/siphon_templates/markdown/default/item_format.md b/doxygen/siphon_templates/markdown/default/item_format.md new file mode 100644 index 00000000..ed1b1bf7 --- /dev/null +++ b/doxygen/siphon_templates/markdown/default/item_format.md @@ -0,0 +1,16 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{{ raise NotImplementedError }} diff --git a/doxygen/siphon_templates/markdown/default/item_header.md b/doxygen/siphon_templates/markdown/default/item_header.md new file mode 100644 index 00000000..0c21e51f --- /dev/null +++ b/doxygen/siphon_templates/markdown/default/item_header.md @@ -0,0 +1,18 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} + +{{ "@page %s %s" % (this.page_label(group), this.page_title(group)) }} + diff --git a/doxygen/siphon_templates/markdown/syscfg/index_header.md b/doxygen/siphon_templates/markdown/syscfg/index_header.md new file mode 100644 index 00000000..5d338a04 --- /dev/null +++ b/doxygen/siphon_templates/markdown/syscfg/index_header.md @@ -0,0 +1,111 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +# Startup Configuration {{'{#'}}syscfg} + +The VPP network stack comes with several configuration options that can be +provided either on the command line or in a configuration file. + +Specific applications built on the stack have been known to require a dozen +arguments, depending on requirements. This section describes commonly-used +options and parameters. + +You can find command-line argument parsers in the source code by searching for +instances of the `VLIB_CONFIG_FUNCTION` macro. The invocation +`VLIB_CONFIG_FUNCTION(foo_config, "foo")` will cause the function +`foo_config` to receive all the options and values supplied in a parameter +block named "`foo`", for example: `foo { arg1 arg2 arg3 ... }`. + +@todo Tell the nice people where this document lives so that the might +help improve it! + +## Command-line arguments + +Parameters are grouped by a section name. When providing more than one +parameter to a section all parameters for that section must be wrapped in +curly braces. + +``` +/usr/bin/vpp unix { interactive cli-listen 127.0.0.1:5002 } +``` + +Which will produce output similar to this: + + + _______ _ _ _____ ___ + __/ __/ _ \ (_)__ | | / / _ \/ _ \ + _/ _// // / / / _ \ | |/ / ___/ ___/ + /_/ /____(_)_/\___/ |___/_/ /_/ + + vpp# + +When providing only one such parameter the braces are optional. For example, +the following command argument, `unix interactive` does not have braces: + +``` +/usr/bin/vpp unix interactive +``` + +The command line can be presented as a single string or as several; anything +given on the command line is concatenated with spaces into a single string +before parsing. + +VPP applications must be able to locate their own executable images. The +simplest way to ensure this will work is to invoke a VPP application by giving +its absolute path; for example: `/usr/bin/vpp `. At startup, VPP +applications parse through their own ELF-sections (primarily) to make lists +of init, configuration, and exit handlers. + +When developing with VPP, in _gdb_ it's often sufficient to start an application +like this at the `(gdb)` prompt: + +``` +run unix interactive +``` + +## Configuration file + +It is also possible to supply parameters in a startup configuration file the +path of which is provided to the VPP application on its command line. + +The format of the configuration file is a simple text file with the same +content as the command line but with the benefit of being able to use newlines +to make the content easier to read. For example: + +``` +unix { + nodaemon + log /tmp/vpp.log + full-coredump + cli-listen localhost:5002 +} +api-trace { + on +} +dpdk { + dev 0000:03:00.0 +} +``` + +VPP is then instructed to load this file with the `-c` option: + +``` +/usr/bin/vpp -c /etc/vpp/startup.conf +``` + +## Index of startup command sections + +[TOC] + diff --git a/doxygen/siphon_templates/markdown/syscfg/item_format.md b/doxygen/siphon_templates/markdown/syscfg/item_format.md new file mode 100644 index 00000000..53136115 --- /dev/null +++ b/doxygen/siphon_templates/markdown/syscfg/item_format.md @@ -0,0 +1,42 @@ +{# +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#} +{% set v = item['value'] %} +{{ "@section %s %s" % (meta['label'], item['name']) }} +{% if 'siphon_block' in item['meta'] %} +{% set sb = item["meta"]["siphon_block"] %} +{% if sb %} +{# Extracted from the code in /*? ... ?*/ blocks #} + +### Description + +{{ sb }} +{% endif %} +{% endif %} +{% if "name" in meta or "function" in item %} +{# Gives some developer-useful linking #} + +### Declaration and implementation +{% if "name" in meta %} + +{{ "Declaration: @ref %s (@ref %s line %d)" % + (meta['name'], meta["file"], item["meta"]["line_start"]) }} +{% endif %} +{% if "function" in item %} + +{{ "Implementation: @ref %s." % item["function"] }} +{% endif %} +{% endif %} + diff --git a/doxygen/siphon_templates/syscfg/index_header.md b/doxygen/siphon_templates/syscfg/index_header.md deleted file mode 100644 index 5d338a04..00000000 --- a/doxygen/siphon_templates/syscfg/index_header.md +++ /dev/null @@ -1,111 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} -# Startup Configuration {{'{#'}}syscfg} - -The VPP network stack comes with several configuration options that can be -provided either on the command line or in a configuration file. - -Specific applications built on the stack have been known to require a dozen -arguments, depending on requirements. This section describes commonly-used -options and parameters. - -You can find command-line argument parsers in the source code by searching for -instances of the `VLIB_CONFIG_FUNCTION` macro. The invocation -`VLIB_CONFIG_FUNCTION(foo_config, "foo")` will cause the function -`foo_config` to receive all the options and values supplied in a parameter -block named "`foo`", for example: `foo { arg1 arg2 arg3 ... }`. - -@todo Tell the nice people where this document lives so that the might -help improve it! - -## Command-line arguments - -Parameters are grouped by a section name. When providing more than one -parameter to a section all parameters for that section must be wrapped in -curly braces. - -``` -/usr/bin/vpp unix { interactive cli-listen 127.0.0.1:5002 } -``` - -Which will produce output similar to this: - - - _______ _ _ _____ ___ - __/ __/ _ \ (_)__ | | / / _ \/ _ \ - _/ _// // / / / _ \ | |/ / ___/ ___/ - /_/ /____(_)_/\___/ |___/_/ /_/ - - vpp# - -When providing only one such parameter the braces are optional. For example, -the following command argument, `unix interactive` does not have braces: - -``` -/usr/bin/vpp unix interactive -``` - -The command line can be presented as a single string or as several; anything -given on the command line is concatenated with spaces into a single string -before parsing. - -VPP applications must be able to locate their own executable images. The -simplest way to ensure this will work is to invoke a VPP application by giving -its absolute path; for example: `/usr/bin/vpp `. At startup, VPP -applications parse through their own ELF-sections (primarily) to make lists -of init, configuration, and exit handlers. - -When developing with VPP, in _gdb_ it's often sufficient to start an application -like this at the `(gdb)` prompt: - -``` -run unix interactive -``` - -## Configuration file - -It is also possible to supply parameters in a startup configuration file the -path of which is provided to the VPP application on its command line. - -The format of the configuration file is a simple text file with the same -content as the command line but with the benefit of being able to use newlines -to make the content easier to read. For example: - -``` -unix { - nodaemon - log /tmp/vpp.log - full-coredump - cli-listen localhost:5002 -} -api-trace { - on -} -dpdk { - dev 0000:03:00.0 -} -``` - -VPP is then instructed to load this file with the `-c` option: - -``` -/usr/bin/vpp -c /etc/vpp/startup.conf -``` - -## Index of startup command sections - -[TOC] - diff --git a/doxygen/siphon_templates/syscfg/item_format.md b/doxygen/siphon_templates/syscfg/item_format.md deleted file mode 100644 index 53136115..00000000 --- a/doxygen/siphon_templates/syscfg/item_format.md +++ /dev/null @@ -1,42 +0,0 @@ -{# -# Copyright (c) 2016 Comcast Cable Communications Management, LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#} -{% set v = item['value'] %} -{{ "@section %s %s" % (meta['label'], item['name']) }} -{% if 'siphon_block' in item['meta'] %} -{% set sb = item["meta"]["siphon_block"] %} -{% if sb %} -{# Extracted from the code in /*? ... ?*/ blocks #} - -### Description - -{{ sb }} -{% endif %} -{% endif %} -{% if "name" in meta or "function" in item %} -{# Gives some developer-useful linking #} - -### Declaration and implementation -{% if "name" in meta %} - -{{ "Declaration: @ref %s (@ref %s line %d)" % - (meta['name'], meta["file"], item["meta"]["line_start"]) }} -{% endif %} -{% if "function" in item %} - -{{ "Implementation: @ref %s." % item["function"] }} -{% endif %} -{% endif %} - -- cgit 1.2.3-korg