aboutsummaryrefslogtreecommitdiffstats
path: root/metis/documentation
diff options
context:
space:
mode:
authormichele papalini <micpapal+fdio@cisco.com>2017-02-23 17:01:34 +0100
committerMichele Papalini <micpapal+fdio@cisco.com>2017-02-23 17:23:19 +0000
commitc580a00aac271a524e5a75b35f4b91c174ed227b (patch)
treefeddc15a9f1a4eb319d950f8d6330ac2b91e3d99 /metis/documentation
parent9b30fc10fb1cbebe651e5a107e8ca5b24de54675 (diff)
Initial commit: sb-forwarder, metis.
Change-Id: I65ee3c851a6901929ef4417ad80d34bca0dce445 Signed-off-by: michele papalini <micpapal+fdio@cisco.com>
Diffstat (limited to 'metis/documentation')
-rw-r--r--metis/documentation/.gitignore1
-rw-r--r--metis/documentation/Makefile.am33
-rw-r--r--metis/documentation/Makefile.notautomake40
-rw-r--r--metis/documentation/manpage-source/Makefile.am80
-rw-r--r--metis/documentation/manpage-source/README21
-rw-r--r--metis/documentation/manpage-source/metis.cfg.sgml360
-rw-r--r--metis/documentation/manpage-source/metis_control.sgml164
-rw-r--r--metis/documentation/manpage-source/metis_daemon.sgml260
-rw-r--r--metis/documentation/manpage/HOWTO-ForwarderConfig188
-rw-r--r--metis/documentation/manpage/Makefile.am26
-rw-r--r--metis/documentation/manpage/metis.cfg.5202
-rw-r--r--metis/documentation/manpage/metis.cfg.5.html468
-rw-r--r--metis/documentation/manpage/metis.cfg.5.pdfbin0 -> 11340 bytes
-rw-r--r--metis/documentation/manpage/metis.cfg.5.txt241
-rw-r--r--metis/documentation/manpage/metis_control.179
-rw-r--r--metis/documentation/manpage/metis_control.1.html280
-rw-r--r--metis/documentation/manpage/metis_control.1.pdfbin0 -> 6514 bytes
-rw-r--r--metis/documentation/manpage/metis_control.1.txt87
-rw-r--r--metis/documentation/manpage/metis_daemon.1138
-rw-r--r--metis/documentation/manpage/metis_daemon.1.html405
-rw-r--r--metis/documentation/manpage/metis_daemon.1.pdfbin0 -> 8628 bytes
-rw-r--r--metis/documentation/manpage/metis_daemon.1.txt159
-rw-r--r--metis/documentation/metis.doctags2535
-rw-r--r--metis/documentation/metis.doxygen2420
-rw-r--r--metis/documentation/stylesheet.css47
25 files changed, 8234 insertions, 0 deletions
diff --git a/metis/documentation/.gitignore b/metis/documentation/.gitignore
new file mode 100644
index 00000000..50a829db
--- /dev/null
+++ b/metis/documentation/.gitignore
@@ -0,0 +1 @@
+metis-documentation
diff --git a/metis/documentation/Makefile.am b/metis/documentation/Makefile.am
new file mode 100644
index 00000000..b11c8010
--- /dev/null
+++ b/metis/documentation/Makefile.am
@@ -0,0 +1,33 @@
+#
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# 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.
+#
+
+include ../config.mk
+
+SUBDIRS = manpage-source manpage
+
+docs: doxygen-metis
+
+doxygen-metis: metis.doxygen
+ ${DOXYGEN_BIN} -s metis.doxygen
+ ${LONGBOW_DOXYGEN_BIN_REPORT} -a --doxygenlog metis-doxygen.log
+
+website: longbow.log
+ $(MAKE) -C Jekyll
+
+# The Doxygen output directory removed here is set in metis.doxygen
+clobber: clean
+ ${RM} -rf metis-documentation
+
+CLEANFILES=metis-doxygen.log
diff --git a/metis/documentation/Makefile.notautomake b/metis/documentation/Makefile.notautomake
new file mode 100644
index 00000000..eb45786e
--- /dev/null
+++ b/metis/documentation/Makefile.notautomake
@@ -0,0 +1,40 @@
+DOXYGEN=/Applications/Doxygen.app/Contents/Resources/doxygen
+INSTALLDIR=.
+
+# This needs to be the same filename that is in gh-pages branch, ./Makefile
+GHPAGES=/tmp/metis-gh-pages.tgz
+
+all: doc
+
+score: all
+ (cd Jekyll/Libccnx/metis/latex ; make) | grep "Output.*pages" | tail -1 > metis.score
+ (echo Jekyll/Libccnx/metis/*.html | wc -w) >> metis.score
+
+clean:
+ make -C Jekyll clean
+ rm -rf Jekyll/Libccnx/metis/
+ ${RM} doxygen.log metis.score
+
+help:
+ @echo "make doc Make the documentation"
+ @echo "make install Make a tar file containing the documentation suitable for a gh-page site."
+ @echo "make jekyll Make the Jekyll website (implicit when making 'doc')"
+ @echo "make all The same as make doc"
+
+doc: site metis
+
+metis: doxygen-metis.conf
+ ${DOXYGEN} doxygen-metis.conf >& doxygen.log
+
+install: doc
+ make -C Jekyll clean build
+ (cd Jekyll/Libccnx/_site; tar czf ${GHPAGES} . )
+ @echo Now git checkout gh-pages and type make install
+
+site:
+ $(MAKE) -C Jekyll
+
+serve:
+ $(MAKE) -C Jekyll serve
+
+clobber: clean
diff --git a/metis/documentation/manpage-source/Makefile.am b/metis/documentation/manpage-source/Makefile.am
new file mode 100644
index 00000000..c130a91d
--- /dev/null
+++ b/metis/documentation/manpage-source/Makefile.am
@@ -0,0 +1,80 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# 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.
+#
+include ../../config.mk
+
+.PHONY: manpages
+
+SUBDIRS =
+
+OUTDIR= ../manpage
+
+MAN = $(OUTDIR)/metis_daemon.1 $(OUTDIR)/metis_control.1 $(OUTDIR)/metis.cfg.5
+TXT = $(OUTDIR)/metis_daemon.1.txt $(OUTDIR)/metis_control.1.txt $(OUTDIR)/metis.cfg.5.txt
+HTML = $(OUTDIR)/metis_daemon.1.html $(OUTDIR)/metis_control.1.html $(OUTDIR)/metis.cfg.5.html
+PDF = $(OUTDIR)/metis_daemon.1.pdf $(OUTDIR)/metis_control.1.pdf $(OUTDIR)/metis.cfg.5.pdf
+
+all:
+ @echo "usage: make manpages"
+
+manpages: $(TXT) $(MAN) $(HTML) $(PDF)
+
+$(OUTDIR):
+ mkdir -p $(OUTDIR)
+
+######
+$(OUTDIR)/metis_daemon.1: metis_daemon.sgml $(OUTDIR)
+ docbook-to-man $< > $@
+
+$(OUTDIR)/metis_daemon.1.txt: $(OUTDIR)/metis_daemon.1 $(OUTDIR)
+ groff -man -Tutf8 $< > $@
+
+$(OUTDIR)/metis_daemon.1.html: $(OUTDIR)/metis_daemon.1 $(OUTDIR)
+ groff -man -Thtml $< > $@
+
+$(OUTDIR)/metis_daemon.1.pdf: $(OUTDIR)/metis_daemon.1 $(OUTDIR)
+ groff -man -Tps $< | ps2pdf - $@
+
+######
+$(OUTDIR)/metis_control.1: metis_control.sgml $(OUTDIR)
+ docbook-to-man $< > $@
+
+$(OUTDIR)/metis_control.1.txt: $(OUTDIR)/metis_control.1 $(OUTDIR)
+ groff -man -Tascii $< > $@
+
+$(OUTDIR)/metis_control.1.html: $(OUTDIR)/metis_control.1 $(OUTDIR)
+ groff -man -Thtml $< > $@
+
+$(OUTDIR)/metis_control.1.pdf: $(OUTDIR)/metis_control.1 $(OUTDIR)
+ groff -man -Tps $< | ps2pdf - $@
+
+######
+$(OUTDIR)/metis.cfg.5: metis.cfg.sgml $(OUTDIR)
+ docbook-to-man $< > $@
+
+$(OUTDIR)/metis.cfg.5.txt: $(OUTDIR)/metis.cfg.5 $(OUTDIR)
+ groff -man -Tascii $< > $@
+
+$(OUTDIR)/metis.cfg.5.html: $(OUTDIR)/metis.cfg.5 $(OUTDIR)
+ groff -man -Thtml $< > $@
+
+$(OUTDIR)/metis.cfg.5.pdf: $(OUTDIR)/metis.cfg.5 $(OUTDIR)
+ groff -man -Tps $< | ps2pdf - $@
+
+
+######
+#clobber: clean
+# ${RM} -rf $(OUTDIR)
+#
+#CLEANFILES=$(TXT) $(MAN) $(HTML)
+
diff --git a/metis/documentation/manpage-source/README b/metis/documentation/manpage-source/README
new file mode 100644
index 00000000..1aa7e48d
--- /dev/null
+++ b/metis/documentation/manpage-source/README
@@ -0,0 +1,21 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# 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.
+#
+
+To process, it requires the following ubuntu packages installed:
+
+ docbook docbook-to-man groff
+
+On other platforms, you can get software from http://www.docbook.org/, but
+we have not tested docbook-to-man on Mac.
+
diff --git a/metis/documentation/manpage-source/metis.cfg.sgml b/metis/documentation/manpage-source/metis.cfg.sgml
new file mode 100644
index 00000000..1cfee7d5
--- /dev/null
+++ b/metis/documentation/manpage-source/metis.cfg.sgml
@@ -0,0 +1,360 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
+<!-- -->
+<!-- Copyright (c) 2017 Cisco and/or its affiliates. -->
+<!-- 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. -->
+<!-- -->
+<!-- -->
+
+<refentry>
+<refmeta>
+ <refentrytitle>
+ <filename>metis.cfg</filename>
+ </refentrytitle>
+ <manvolnum>5</manvolnum>
+</refmeta>
+
+<refnamediv>
+ <refname>
+ <filename>metis.cfg</filename>
+ </refname>
+ <refpurpose>
+<filename>metis.cfg</filename> is an example of a configuation file usable with
+<citerefentry><refentrytitle>metis_daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+though there is nothing special about the actual filename. Each line of the configuration file is also usable with
+<citerefentry><refentrytitle>metis_control</refentrytitle><manvolnum>1</manvolnum></citerefentry>. This
+document specifies all available command lines used to configure and query Metis.
+
+All commands have a 'help', so typing 'help command' will display on-line help.
+
+In a configuration file, lines beginning with '#' are comments.
+ </refpurpose>
+</refnamediv>
+
+<refsect1>
+ <title>ADD COMMANDS</title>
+ <variablelist>
+ <varlistentry>
+ <term>add connection ether <replaceable class="parameter">symbolic</replaceable> <replaceable class="parameter">dmac</replaceable> <replaceable class="parameter">interface</replaceable></term>
+ <listitem>
+ <para>
+ Adds an Ethernet connection on <replaceable class="parameter">interface</replaceable> to the given destination MAC address.
+ The <replaceable class="parameter">symbolic</replaceable> name is a symbolic name for the connection, which may be used in
+ later commands, such as <command>add route</command>.
+ There must be an Ethernet Listener on the specified interface (see <command>add listener</command>), and the connection
+ will use the same EtherType as the Listener. The <replaceable class="parameter">dmac</replaceable> destination MAC address
+ is in hexidecimal with optional "-" or ":" separators.
+ </para>
+ <para>
+ A connection is a target for a later route assignment or for use as an ingress identifier in the PIT. When using a broadcast
+ or group address for a connection, an Interest routed over that connection will be broadcast. Many receivers may respond.
+ When Metis receives a broadcast Interest it uses the unicast source MAC for the reverse route -- it will automatically create
+ a new connection for the source node and put that in the PIT entry, so a Content Object answering the broadcast Interest will
+ only be unicast to the previous hop.
+ </para>
+ <para>
+ add connection ether conn7 e8-06-88-cd-28-de em3
+ </para>
+ <para>
+ add connection ether bcast0 FFFFFFFFFFFF eth0
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>add connection (tcp|udp) <replaceable class="parameter">symbolic</replaceable> <replaceable class="parameter">remote_ip</replaceable> <replaceable class="parameter">remote_port</replaceable> <replaceable class="parameter">local_ip</replaceable> <replaceable class="parameter">local_port</replaceable></term>
+ <listitem>
+ <para>
+ Opens a connection to the specific <replaceable class="parameter">remote_ip</replaceable> (which may be a hostname, though you do not have control over IPv4 or IPv6 in this case) on <replaceable class="parameter">remote_port</replaceable>. The local endpoint is given by <replaceable class="parameter">local_ip</replaceable> <replaceable class="parameter">local_port</replaceable>. While the <replaceable class="parameter">local_ip</replaceable> <replaceable class="parameter">local_port</replaceable> are technically optional parameters, the system's choice of local address may not be what one expects or may be a different protocols (4 or 6). The default port is 9695.
+ </para>
+ <para>
+ A TCP connection will go through a TCP connection establishment and will not register as UP until the remote side accepts. If one side goes down, the TCP connection will not auto-restart if it becomes availble again.
+ </para>
+ <para>
+ A UDP connection will start in the UP state and will not go DOWN unless there is a serious network error.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Opens a connection to 1.1.1.1 on port 1200 from the local address 2.2.2.2 port 1300</term>
+ <listitem>
+ <para>
+ add connection tcp conn0 1.1.1.1 1200 2.2.2.2 1300
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>opens connection to IPv6 address on port 1300</term>
+ <listitem>
+ <para>
+ add connection udp barney2 fe80::aa20:66ff:fe00:314a 1300
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>add listener (tcp|udp) <replaceable class="parameter">symbolic</replaceable> <replaceable class="parameter">ip_address</replaceable> <replaceable class="parameter">port</replaceable></term>
+ <term>add listener ether <replaceable class="parameter">symbolic</replaceable> <replaceable class="parameter">interfaceName</replaceable> <replaceable class="parameter">ethertype</replaceable></term>
+ <term>add listener local <replaceable class="parameter">symbolic</replaceable> <replaceable class="parameter">path</replaceable></term>
+ <listitem>
+ <para>
+ Adds a protocol listener to accept packets of a given protocol (TCP or UDP or Ethernet).
+ The <replaceable class="parameter">symbolic</replaceable> name represents the listener and will be used in future commands
+ such as access list restrictions. If using a configuration file on <command>metis_daemon</command>, you must include
+ a listener on localhost for local applications to use.
+ </para>
+ <para>
+ The <replaceable class="parameter">ip_address</replaceable> is the IPv4 or IPv6 local address to bind to.
+ The <replaceable class="parameter">port</replaceable> is the TCP or UDP port to bind to.
+ </para>
+ <para>
+ The <replaceable class="parameter">interfaceName</replaceable> is the interface to open a raw socket on (e.g. "eth0").
+ The <replaceable class="parameter">ethertype</replaceable> is the EtherType to use, represented as a 0x hex number (e.g. 0x0801)
+ or an integer (e.g. 2049).
+ </para>
+ <para>
+ The <replaceable class="parameter">path</replaceable> parameter specifies the file path to a unix domain socket. Metis
+ will create this file and remove it when it exits.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Listens to 192.168.1.7 on tcp port 9695 with a symbolic name 'homenet'</term>
+ <listitem>
+ <para>
+ add listener tcp homenet 192.168.1.7 9695
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Listens to IPv6 localhost on udp port 9695</term>
+ <listitem>
+ <para>
+ add listener udp localhost6 ::1 9695
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Listens to interface 'en0' on ethertype 0x0801</term>
+ <listitem>
+ <para>
+ add listener ether nic0 en0 0x0801
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>add route <replaceable class="parameter">symbolic</replaceable> <replaceable class="parameter">prefix</replaceable> <replaceable class="parameter">prefix</replaceable></term>
+ <listitem>
+ <para>
+ Adds a static route to a given <replaceable class="parameter">prefix</replaceable> to the FIB for longest match.
+ </para>
+ <para>
+ Currently, the <replaceable class="parameter">symbolic</replaceable> and <replaceable class="parameter">cost</replaceable> are not used.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+</refsect1>
+
+<refsect1>
+ <title>LIST COMMANDS</title>
+ <variablelist>
+ <varlistentry>
+ <term>list connections</term>
+ <listitem>
+ <para>
+ Enumerates the current connections to Metis. These include all TCP, UDP, Unix Domain, and Ethernet peers.
+ Each connection has an connection ID (connid) and a state (UP or DOWN) followed by the local (to metis) and remote
+ addresses.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>list interfaces</term>
+ <listitem>
+ <para>
+ Enumerates the system interfaces available to Metis. Each interface has an Interface ID, a 'name' (e.g. 'eth0'),
+ an MTU as reported by the system, and one or more addresses.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>list routes</term>
+ <listitem>
+ <para>
+ Enumerates the routes installed in the FIB.
+ The <replaceable class="option">iface</replaceable> is the out-bound connection.
+ The <replaceable class="option">protocol</replaceable> is the the routing protocol that injected the route.
+ 'STATIC' means it was manually entered via <command>metis_control</command>.
+ <replaceable class="option">route</replaceable> is the route type. 'LONGEST' means longest matching prefix
+ and 'EXACT' means exact match. Only 'LONGEST' is supported.
+ <replaceable class="option">cost</replaceable> is the cost of the route. It is not used.
+ <replaceable class="option">next</replaceable> is the nexthop on a multiple access interface. it is not used
+ because the current implementation uses one connection (iface) per neighbor.
+ <replaceable class="option">prefix</replaceable> is the CCNx name prefix for the route.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Examples</term>
+ <listitem>
+ <programlisting linenumbering="numbered">
+> list connections
+23 UP inet4://127.0.0.1:9695 inet4://127.0.0.1:64260 TCP
+
+> list interfaces
+int name lm MTU
+ 24 lo0 lm 16384 inet6://[::1%0]:0
+inet4://127.0.0.1:0
+inet6://[fe80::1%1]:0
+ 25 en0 m 1500 link://3c-15-c2-e7-c5-ca
+inet6://[fe80::3e15:c2ff:fee7:c5ca%4]:0
+inet4://13.1.110.60:0
+inet6://[2620::2e80:a015:3e15:c2ff:fee7:c5ca%0]:0
+inet6://[2620::2e80:a015:a4b2:7e10:61d1:8d97%0]:0
+ 26 en1 m 1500 link://72-00-04-43-4e-50
+inet4://192.168.1.1:0
+ 27 en2 m 1500 link://72-00-04-43-4e-51
+ 28 bridge0 m 1500 link://3e-15-c2-7e-96-00
+ 29 p2p0 m 2304 link://0e-15-c2-e7-c5-ca
+
+> list routes
+ iface protocol route cost next prefix
+ 23 STATIC LONGEST 1 ---.---.---.---/.... lci:/foo/bar
+Done
+ </programlisting>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+</refsect1>
+
+<refsect1>
+ <title>REMOVE COMMANDS</title>
+ <variablelist>
+ <varlistentry>
+ <term>remove connection</term>
+ <listitem>
+ <para>
+ Not implemented.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>remove route</term>
+ <listitem>
+ <para>
+ Not implemented.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+</refsect1>
+
+<refsect1>
+ <title>MISC COMMANDS</title>
+ <variablelist>
+ <varlistentry>
+ <term>quit</term>
+ <listitem>
+ <para>
+ In interactive mode of <command>metis_control</command>, it cause the program to exit.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>set debug</term>
+ <listitem>
+ <para>
+ Turns on the debugging flag in <command>metis_control</command> to display information about its connection to Metis.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>unset debug</term>
+ <listitem>
+ <para>
+ Turns off the debugging flag in <command>metis_control</command> to display information about its connection to Metis.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+</refsect1>
+
+<refsect1>
+ <title>USAGE</title>
+ <example><title>Example Linux metis.cfg configuration file</title>
+ <programlisting>
+#local listeners for applications
+add listener tcp local0 127.0.0.1 9695
+add listener udp local1 127.0.0.1 9695
+add listener local unix0 /tmp/metis.sock
+
+# add ethernet listener and connection
+add listener ether nic0 eth0 0x0801
+add connection ether conn0 ff:ff:ff:ff:ff:ff eth0
+add route conn0 lci:/ 1
+
+# add UDP tunnel to remote system
+add connection udp conn1 ccnx.example.com 9695
+add route conn1 lci:/example.com 1
+ </programlisting>
+ </example>
+ <example><title>Example one-shot metis_control commands</title>
+ <screen>
+ <command>metis_control</command> list routes
+ <command>metis_control</command> add listener local unix0 /tmp/metis.sock
+ </screen>
+ </example>
+</refsect1>
+
+<refsect1>
+ <title>SEE ALSO</title>
+ <para>
+ <citerefentry><refentrytitle>metis_control</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>metis_daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>CAVEATS</title>
+ <para>
+ </para>
+</refsect1>
+<refsect1>
+ <title>BUGS</title>
+ <itemizedlist mark='opencircle'>
+ <listitem><para>
+ The output of 'list interfaces' is difficult to read because multiple addresses
+ do not align.
+ </para></listitem>
+ </itemizedlist>
+
+</refsect1>
+<refsect1>
+ <title>AUTHOR</title>
+ <para>
+ <author>
+ <firstname>Marc</firstname>
+ <surname>Mosko</surname>
+ <contrib>Palo Alto Research Center</contrib>
+ </author>
+ </para>
+</refsect1>
+</refentry>
+
+
diff --git a/metis/documentation/manpage-source/metis_control.sgml b/metis/documentation/manpage-source/metis_control.sgml
new file mode 100644
index 00000000..61d8bfb8
--- /dev/null
+++ b/metis/documentation/manpage-source/metis_control.sgml
@@ -0,0 +1,164 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
+<!-- -->
+<!-- Copyright (c) 2017 Cisco and/or its affiliates. -->
+<!-- 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. -->
+<!-- -->
+<!-- -->
+<refentry>
+<refmeta>
+ <refentrytitle>
+ <application>metis_control</application>
+ </refentrytitle>
+ <manvolnum>1</manvolnum>
+</refmeta>
+
+<refnamediv>
+ <refname>
+ <application>metis_control</application>
+ </refname>
+ <refpurpose>
+Metis is the CCNx 1.0 forwarder, which runs on each end system and as a software forwarder
+on intermediate systems. <command>metis_control</command> is the program to configure the forwarder,
+<command>metis_daemon</command>.
+ </refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <cmdsynopsis>
+ <command>metis_control</command>
+<arg choice="opt"><option>--keystore</option> <replaceable class="parameter">keystore</replaceable></arg>
+<arg choice="opt"><option>--password</option> <replaceable class="parameter">password</replaceable></arg>
+<arg choice="opt">commandline</arg>
+ </cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1>
+ <title>DESCRIPTION</title>
+ <para>
+ <command>metis_control</command>
+ is the program used to configure a running forwarder <command>metis_daemon</command>. It will connect to
+ the forwarder over a local listener (e.g. TCP to localhost or a unix domain socket). If a
+ <replaceable class="option">commandline</replaceable> option is specified, <command>metis_control</command>
+ will send that one command to Metis and then exit. If no <replaceable class="option">commandline</replaceable>
+ is specified, <command>metis_command</command> will enter interacitve mode where the user can issue
+ multiple commands.
+ </para>
+ <para>
+ <command>metis_control</command> requires a signing keystore for communicating over the network. The
+ <replaceable class="parameter">keystore</replaceable> file is a standard PKCS12 keystore, and may be
+ created using
+ <citerefentry><refentrytitle>parc_publickey</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+ If no <replaceable class="parameter">keystore</replaceable> is specified, <command>metis_control</command>
+ will look in the standard path ~/.ccnx/.ccnx_keystore.p12.
+ The keystore password is specified in <replaceable class="parameter">password</replaceable>. If not specified,
+ no password is used. If the keystore does not open, the user will be prompted for a password.
+ </para>
+ <para>
+ See <citerefentry><refentrytitle>metis.cfg</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
+ a specification of the available <replaceable class="option">commandline</replaceable>.
+ </para>
+ <para>
+ The environment variable METIS_PORT may be used to specify what TCP port to use to connect to the local Metis.
+ The environment variable METIS_LOCALPATH may be used to specific the UNIX domain socket to connect to the local Metis
+ and takes priority over METIS_PORT.
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>OPTIONS</title>
+ <variablelist>
+
+ <varlistentry>
+ <term>--keystore <replaceable class="parameter">keystore</replaceable></term>
+ <listitem>
+ <para>
+ <command>metis_control</command> requires a signing keystore for communicating over the network. The
+ <replaceable class="parameter">keystore</replaceable> file is a standard PKCS12 keystore, and may be
+ created using
+ <citerefentry><refentrytitle>parc_publickey</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+ If no <replaceable class="parameter">keystore</replaceable> is specified, <command>metis_control</command>
+ will look in the standard path ~/.ccnx/.ccnx_keystore.p12.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>--password <replaceable class="parameter">password</replaceable></term>
+ <listitem>
+ <para>
+ The keystore password is specified in <replaceable class="parameter">password</replaceable>. If not specified,
+ no password is used. If the keystore does not open, the user will be prompted for a password.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>commandline</term>
+ <listitem>
+ <para>
+ The remainder of the arguments are the commandline to send to Metis. See USAGE.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+</refsect1>
+<refsect1>
+ <title>USAGE</title>
+ <para>
+ <command>metis_control</command> --keystore keystore.p12
+ </para>
+ <para>
+ <command>metis_control</command> --keystore keystore.p12 list interfaces
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>SEE ALSO</title>
+ <para>
+ See <citerefentry><refentrytitle>parc_publickey</refentrytitle><manvolnum>1</manvolnum></citerefentry> for a utility
+ to create a PKCS keystore.
+ </para>
+ <para>
+ For a list of all configuration lines that may be used with
+ <command>metis_control</command> and by <replaceable class="option">--config</replaceable> configuration file,
+ see <citerefentry><refentrytitle>metis.cfg</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+ </para>
+ <para>
+ The default keystore is ~/.ccnx/.ccnx_keystore.p12.
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>CAVEATS</title>
+ <para>
+ </para>
+</refsect1>
+<refsect1>
+ <title>BUGS</title>
+ <para>
+ </para>
+</refsect1>
+<refsect1>
+ <title>AUTHOR</title>
+ <para>
+ <author>
+ <firstname>Marc</firstname>
+ <surname>Mosko</surname>
+ <contrib>Palo Alto Research Center</contrib>
+ </author>
+ </para>
+</refsect1>
+</refentry>
+
+
diff --git a/metis/documentation/manpage-source/metis_daemon.sgml b/metis/documentation/manpage-source/metis_daemon.sgml
new file mode 100644
index 00000000..ccc0cf9c
--- /dev/null
+++ b/metis/documentation/manpage-source/metis_daemon.sgml
@@ -0,0 +1,260 @@
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
+<!-- -->
+<!-- Copyright (c) 2017 Cisco and/or its affiliates. -->
+<!-- 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. -->
+<!-- -->
+<!-- -->
+<refentry>
+<refmeta>
+ <refentrytitle>
+ <application>metis_daemon</application>
+ </refentrytitle>
+ <manvolnum>1</manvolnum>
+</refmeta>
+
+<refnamediv>
+ <refname>
+ <application>metis_daemon</application>
+ </refname>
+ <refpurpose>
+Metis is the CCNx 1.0 forwarder, which runs on each end system and as a software forwarder
+on intermediate systems.
+ </refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+ <cmdsynopsis>
+ <command>metis_daemon</command>
+<arg choice="opt"><option>--port</option> <replaceable class="parameter">port</replaceable></arg>
+<arg choice="opt"><option>--daemon</option></arg>
+<arg choice="opt"><option>--capacity</option> <replaceable class="parameter">contentStoreSize</replaceable></arg>
+<arg choice="opt" rep="repeat"><option>--log</option> <replaceable class="parameter">facility=level</replaceable></arg>
+<arg choice="opt"><option>--log-file</option> <replaceable class="parameter">logfile</replaceable></arg>
+<arg choice="opt"><option>--config</option> <replaceable class="parameter">configfile</replaceable></arg>
+ </cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1>
+ <title>DESCRIPTION</title>
+ <para>
+ <command>metis_daemon</command>
+is the CCNx 1.0 forwarder, which runs on each end system and as a software forwarder
+on intermediate systems. metis_daemon is the program to launch Metis, either as a console program
+or a background daemon (detatched from console). Once running, use the program <command>metis_control</command> to
+configure Metis.
+ </para>
+ <para>
+Metis is structured as a set of Listeners, each of which handles a specific method of listening for packets.
+For example, a TCP listener will accept connections on a specific TCP port on a specific local IP address.
+An Ethernet listener will accept frames of a specific EtherType on a specific Interface.
+ </para>
+ <para>
+When Metis accepts a connection, it will create a Connection entry in the ConnectionTable to represent that peer.
+For Ethernet, a Connection is the tuple {dmac, smac, ethertype}. For TCP and UDP, it is the tuple {source IP, source port,
+destination IP, destination port}. The connid (connection ID) becomes the reverse route index in the Pending Interest Table.
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>OPTIONS</title>
+ <variablelist>
+
+ <varlistentry>
+ <term>--config <replaceable class="parameter">configfile</replaceable></term>
+ <listitem>
+ <para>
+ Reads configuration parameters from
+ <replaceable class="parameter">configfile</replaceable>.
+ The
+ <replaceable class="option">--port</replaceable> option has no effect in this mode
+ and Metis will not listen to any ports. This means that
+ <command>metis_control</command> will not be able to connect to Metis to configure it
+ further unless one includes at least a listener for TCP localhost or a unix domain socket.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>--capacity <replaceable class="parameter">contentStoreSize</replaceable></term>
+ <listitem>
+ <para>
+ Sets the capacity of the Content Store to
+ <replaceable class="parameter">contentStoreSize</replaceable> content objects.
+ Metis uses a least-recently-used eviction policy. A size of 0 will disable the
+ Content Store.
+ </para>
+ <para>
+ The Content Store sits on the fast path of the forwarder, so there is a cost
+ associated with adding and removing items to the Content Store tables.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>--daemon</term>
+ <listitem>
+ <para>
+ Runs Metis in daemon mode, detaching from the console. It must
+ be run with the <replaceable class="option">--log-file</replaceable> option.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>--log <replaceable class="parameter">facility</replaceable>=<replaceable class="parameter">level</replaceable></term>
+ <listitem>
+ <para>
+ Sets the log level of the given
+ <replaceable class="parameter">facility</replaceable>
+ to the given
+ <replaceable class="parameter">level</replaceable>.
+ The <replaceable class="option">--log</replaceable> option may be repeated
+ several times setting the log level of different facilities. If the same
+ facility is listed twice, only the last occurance takes effect.
+ The default log level is Error for all facilities.
+ </para>
+
+ <para>
+ Facilities:<itemizedlist mark='opencircle'>
+ <listitem><para>
+ all: All facilities.
+ </para></listitem>
+
+ <listitem><para>
+ config: Configuration activies.
+ </para></listitem>
+
+ <listitem><para>
+ core: Core forwarder, such as startup and shutdown.
+ </para></listitem>
+
+ <listitem><para>
+ io: Listeners, connections, and all I/O related activities.
+ </para></listitem>
+
+ <listitem><para>
+ message: CCNx messages, such as parsing.
+ </para></listitem>
+
+ <listitem><para>
+ processor: Forwarding processor, such as CS, FIB, and PIT activities.
+ </para></listitem>
+ </itemizedlist>
+ </para>
+
+ <para>
+ The log levels are: debug, info, notice, warning, error, critical, alert, off.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>--log-file <replaceable class="parameter">logfile</replaceable></term>
+ <listitem>
+ <para>
+ Specifies the
+ <replaceable class="parameter">logfile</replaceable>
+ to write all log messages. This parameter is required with
+ <replaceable class="option">--daemon</replaceable> mode.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>--port <replaceable class="parameter">port</replaceable></term>
+ <listitem>
+ <para>
+ The UDP and TCP port to listen on. If no
+ <replaceable class="parameter">configfile</replaceable>
+ is specified, Metis will listen on this port on all interfaces
+ including localhost.
+ </para>
+ <para>
+ If this parameter is not given, Metis uses the default port 9695.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+</refsect1>
+<refsect1>
+ <title>USAGE</title>
+ <para>
+ <command>metis_daemon</command> --config metis.cfg --log all=info --log config=debug --log-file metis.log
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>SEE ALSO</title>
+ <para>
+ See <citerefentry><refentrytitle>metis_control</refentrytitle><manvolnum>1</manvolnum></citerefentry> for a
+ description of how to configure <command>metis_daemon</command>.
+ </para>
+ <para>
+ For a list of all configuration lines that may be used with
+ <command>metis_control</command> and by <replaceable class="option">--config</replaceable> configuration file,
+ see <citerefentry><refentrytitle>metis.cfg</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+ </para>
+</refsect1>
+
+<refsect1>
+ <title>CAVEATS</title>
+ <itemizedlist mark='opencircle'>
+ <listitem><para>
+ A given interface may only have one Ethernet listener on one EtherType.
+ </para></listitem>
+
+ <listitem><para>
+ If there are multiple longest matching prefix entries that match an Interest, it will be
+ forwarded to all those routes (i.e. multicast).
+ </para></listitem>
+
+ <listitem><para>
+ Ethernet fragmentation will only use the interface MTU and there is not MTU discovery. If Metis is
+ used in a bridged environment, this may lead to errors if the MTU changes on different segments, such
+ as a 10G link at 9000 bytes and a 100 Mbps link at 1500 bytes.
+ </para></listitem>
+ </itemizedlist>
+</refsect1>
+<refsect1>
+ <title>BUGS</title>
+ <itemizedlist mark='opencircle'>
+ <listitem><para>
+ Adding the same listener twice will cause Metis to crash.
+ </para></listitem>
+
+ <listitem><para>
+ Errors in the configuration file may cause Metis to crash.
+ </para></listitem>
+
+ <listitem><para>
+ The command 'list connections' will display all connections as TCP encapsulation.
+ </para></listitem>
+
+ </itemizedlist>
+
+</refsect1>
+<refsect1>
+ <title>AUTHOR</title>
+ <para>
+ <author>
+ <firstname>Marc</firstname>
+ <surname>Mosko</surname>
+ <contrib>Palo Alto Research Center</contrib>
+ </author>
+ </para>
+</refsect1>
+</refentry>
+
+
diff --git a/metis/documentation/manpage/HOWTO-ForwarderConfig b/metis/documentation/manpage/HOWTO-ForwarderConfig
new file mode 100644
index 00000000..df7d32cd
--- /dev/null
+++ b/metis/documentation/manpage/HOWTO-ForwarderConfig
@@ -0,0 +1,188 @@
+#
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# 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.
+#
+==================================
+HOWTO-ForwarderConfig
+==================================
+
+Version 1.0 5/23/14 Marc
+Version 1.1 4/6/15 Marc - updated for symbolic names
+
+------------
+Abstract
+------------
+This document describes how to configure the forwarder using the
+command-line utility.
+
+------------
+Starting
+------------
+From the Distillery directory execute the "metis_control" program
+
+Distillery> build/bin/metis_control
+
+This will begin an interactive shell to configure the forwarder. Use
+the "help" command to see available options.
+
+Alternatively, you can use one of the many command-line options to
+execute a specific command without using the interactive mode.
+
+All configuration lines may be placed in a configuration file and used
+with the "--config file" command-line option to metis_daemon.
+
+------------
+Options
+------------
+
+Executing "metis_control help" will display this message:
+
+ Command-line execution:
+ metis_control [--keystore <keystorepath>] [--password <password>] command
+
+ Interactive execution:
+ metis_control [--keystore <keystorepath>] [--password <password>]
+
+ If the keystore is not specified, the default path is used. Keystore must exist prior to running program.
+ If the password is not specified, the user will be prompted.
+
+ Available commands:
+ help add
+ help list
+ help quit
+ help remove
+ help set
+ help unset
+
+===== Listeners
+
+> help add listener
+commands:
+ add listener <symbolic> <protocol> <localAddress> <PortOrEtherType>
+
+ symbolic: User defined name for listener, must start with alpha and be alphanum
+ protocol: tcp | udp | ether
+ localAddress: IPv4 or IPv6 or hostname or interface name (see examples)
+ PortOrEtherType: TCP/UDP port or EtherType (base 10 or use 0x for base 16)
+
+Notes:
+ The local address must be on the system (see 'help list interfaces' command).
+ For Ethernet, the broadcast and CCNx group address will also be added.
+ The symblic name must be unique or the forwarder will reject it.
+
+Examples:
+ Listens to 192.168.1.7 on tcp port 9695
+ add listener homenet tcp 192.168.1.7 9695
+
+ Listens to IPv6 localhost on udp port 9695
+ add listener localhost6 udp ::1 9695
+
+ Listens to interface 'en0' on ethertype 0x0801
+ add listener nic0 ether en0 0x0801
+
+===== Connections
+
+> help add connection udp
+add connection udp <symbolic> <remote_ip|hostname> <remote_port> [<local_ip|hostname> [<local_port>]]
+ <symbolic> : symbolic name, e.g. 'conn1' (must be unique, start with alpha)
+ <remote_ip | hostname> : the IPv4 or IPv6 or hostname of the remote system
+ <remote_port> : the remote TCP port
+ <local_ip> : optional local IP address to bind to
+ <local_port> : optional local TCP port, random if not specified
+
+Examples:
+ add connection udp conn1 1.1.1.1 1200
+ opens a connection to IP address 1.1.1.1 port 1200 using the best local
+ interface and random local port.
+ add connection udp barney2 fe80::aa20:66ff:fe00:314a 1300
+ opens connection to IPv6 address on port 1300.
+
+ add connection udp conn0 1.1.1.1 1200 2.2.2.2 1300
+ opens a connection to 1.1.1.1 on port 1200 from the local address 2.2.2.2 port 1300
+
+ add connection udp conn3 ccn.parc.com 9695
+ opens a connection to the host 'ccn.parc.com' on port 9695.
+ Maybe an IPv4 or IPv6 connection as the name is resolved and connectivity permits.
+
+A UDP connection will be usable immediately, even if the remote side has not accepted.
+
+> help add connection tcp
+add connection tcp <symbolic> <remote_ip|hostname> <remote_port> [<local_ip|hostname> [<local_port>]]
+ <symbolic> : symbolic name, e.g. 'conn1' (must be unique, start with alpha)
+ <remote_ip | hostname> : the IPv4 or IPv6 or hostname of the remote system
+ <remote_port> : the remote TCP port
+ <local_ip> : optional local IP address to bind to
+ <local_port> : optional local TCP port, random if not specified
+
+Examples:
+ add connection tcp conn1 1.1.1.1 1200
+ opens a connection to IP address 1.1.1.1 port 1200 using the best local
+ interface and random local port.
+ add connection tcp barney2 fe80::aa20:66ff:fe00:314a 1300
+ opens connection to IPv6 address on port 1300.
+
+ add connection tcp conn0 1.1.1.1 1200 2.2.2.2 1300
+ opens a connection to 1.1.1.1 on port 1200 from the local address 2.2.2.2 port 1300
+
+ add connection tcp conn3 ccn.parc.com 9695
+ opens a connection to the host 'ccn.parc.com' on port 9695.
+ Maybe an IPv4 or IPv6 connection as the name is resolved and connectivity permits.
+
+A TCP connection will not be usable until the remote peer accepts the connection.
+
+> help add connection ether
+add connection ether <symbolic> <destination_mac> <local_interface>
+ <symbolic> : symbolic name, e.g. 'conn1' (must be unique, start with alpha)
+ <destination_mac> : destination MAC address in hex (optional ":" or "-" separators)
+ <local_interface> : the name of the local interface (e.g. "en0")
+
+Examples:
+ add connection ether conn7 e8-06-88-cd-28-de em3
+ Creates a connection to e8-06-88-cd-28-de on interface em3, ethertype = 0x0801
+
+ add connection ether hal2 00:1c:42:00:00:08 eth0
+ Creates a connection to 00:1c:42:00:00:08 on interface eth0, ethertype = 0x0801
+
+ add connection ether bcast0 FFFFFFFFFFFF eth0
+ Creates a broadcast connection on eth0 with ethertype = 0x0801
+
+===== Routes
+
+> help add route
+commands:
+ add route <symbolic | connid> <prefix> <cost>
+
+ symbolic: The symbolic name for an exgress
+ connid: The egress connection id (see 'help list connections')
+ prefix: The CCNx name as a URI (e.g. lci:/foo/bar)
+ cost: positive integer representing cost
+ nexthop: Optional network endpoint on the connection
+ seconds: Create a route that will expire if not refresed within the lifetime
+
+Examples:
+ add route 7 lci:/foo/bar 1
+ adds route to prefix '/foo/bar' on egress connection 7 with cost 1
+ add route tun3 lci:/foo/bar 1
+ adds route to prefix '/foo/bar' on egress connection 'tun3' with cost 1
+
+------------
+Related
+------------
+
+build/bin/parc_publickey is used to generate a keystore. See HOWTO-Keystore.
+
+------------
+Caveats
+------------
+1) There is no fragmentation for Ethernet, so all messages must fit in an MTU
+
diff --git a/metis/documentation/manpage/Makefile.am b/metis/documentation/manpage/Makefile.am
new file mode 100644
index 00000000..5415a8f4
--- /dev/null
+++ b/metis/documentation/manpage/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# 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.
+
+EXTRA_DIST = \
+ HOWTO-ForwarderConfig \
+ Makefile.am \
+ metis.cfg.5 \
+ metis.cfg.5.html \
+ metis.cfg.5.txt \
+ metis_control.1 \
+ metis_control.1.html \
+ metis_control.1.txt \
+ metis_daemon.1 \
+ metis_daemon.1.html \
+ metis_daemon.1.txt
diff --git a/metis/documentation/manpage/metis.cfg.5 b/metis/documentation/manpage/metis.cfg.5
new file mode 100644
index 00000000..0ae60007
--- /dev/null
+++ b/metis/documentation/manpage/metis.cfg.5
@@ -0,0 +1,202 @@
+.TH " \fBmetis.cfg\fP " "5"
+.SH "NAME"
+\fBmetis.cfg\fP \(em \fBmetis.cfg\fP is an example of a configuation file usable with
+\fBmetis_daemon\fP\fB(1)\fP,
+though there is nothing special about the actual filename. Each line of the configuration file is also usable with
+\fBmetis_control\fP\fB(1)\fP. This
+document specifies all available command lines used to configure and query Metis.
+
+All commands have a 'help', so typing 'help command' will display on-line help.
+
+In a configuration file, lines beginning with '#' are comments.
+
+.SH "ADD COMMANDS"
+.IP "add connection ether \fIsymbolic\fR \fIdmac\fR \fIinterface\fR" 10
+Adds an Ethernet connection on \fIinterface\fR to the given destination MAC address.
+The \fIsymbolic\fR name is a symbolic name for the connection, which may be used in
+later commands, such as \fBadd route\fR.
+There must be an Ethernet Listener on the specified interface (see \fBadd listener\fR), and the connection
+will use the same EtherType as the Listener. The \fIdmac\fR destination MAC address
+is in hexidecimal with optional "\-" or ":" separators.
+
+.IP "" 10
+A connection is a target for a later route assignment or for use as an ingress identifier in the PIT. When using a broadcast
+or group address for a connection, an Interest routed over that connection will be broadcast. Many receivers may respond.
+When Metis receives a broadcast Interest it uses the unicast source MAC for the reverse route \-\- it will automatically create
+a new connection for the source node and put that in the PIT entry, so a Content Object answering the broadcast Interest will
+only be unicast to the previous hop.
+
+.IP "" 10
+add connection ether conn7 e8-06-88-cd-28-de em3
+
+.IP "" 10
+add connection ether bcast0 FFFFFFFFFFFF eth0
+
+.IP "add connection (tcp|udp) \fIsymbolic\fR \fIremote_ip\fR \fIremote_port\fR \fIlocal_ip\fR \fIlocal_port\fR" 10
+Opens a connection to the specific \fIremote_ip\fR (which may be a hostname, though you do not have control over IPv4 or IPv6 in this case) on \fIremote_port\fR. The local endpoint is given by \fIlocal_ip\fR \fIlocal_port\fR. While the \fIlocal_ip\fR \fIlocal_port\fR are technically optional parameters, the system's choice of local address may not be what one expects or may be a different protocols (4 or 6). The default port is 9695.
+
+.IP "" 10
+A TCP connection will go through a TCP connection establishment and will not register as UP until the remote side accepts. If one side goes down, the TCP connection will not auto-restart if it becomes availble again.
+
+.IP "" 10
+A UDP connection will start in the UP state and will not go DOWN unless there is a serious network error.
+
+.RS
+.IP "Opens a connection to 1.1.1.1 on port 1200 from the local address 2.2.2.2 port 1300" 10
+add connection tcp conn0 1.1.1.1 1200 2.2.2.2 1300
+
+.IP "opens connection to IPv6 address on port 1300" 10
+add connection udp barney2 fe80::aa20:66ff:fe00:314a 1300
+
+.RE
+.IP "add listener (tcp|udp) \fIsymbolic\fR \fIip_address\fR \fIport\fR" 10
+.IP "add listener ether \fIsymbolic\fR \fIinterfaceName\fR \fIethertype\fR" 10
+.IP "add listener local \fIsymbolic\fR \fIpath\fR" 10
+Adds a protocol listener to accept packets of a given protocol (TCP or UDP or Ethernet).
+The \fIsymbolic\fR name represents the listener and will be used in future commands
+such as access list restrictions. If using a configuration file on \fBmetis_daemon\fR, you must include
+a listener on localhost for local applications to use.
+
+.IP "" 10
+The \fIip_address\fR is the IPv4 or IPv6 local address to bind to.
+The \fIport\fR is the TCP or UDP port to bind to.
+
+.IP "" 10
+The \fIinterfaceName\fR is the interface to open a raw socket on (e.g. "eth0").
+The \fIethertype\fR is the EtherType to use, represented as a 0x hex number (e.g. 0x0801)
+or an integer (e.g. 2049).
+
+.IP "" 10
+The \fIpath\fR parameter specifies the file path to a unix domain socket. Metis
+will create this file and remove it when it exits.
+
+.RS
+.IP "Listens to 192.168.1.7 on tcp port 9695 with a symbolic name 'homenet'" 10
+add listener tcp homenet 192.168.1.7 9695
+
+.IP "Listens to IPv6 localhost on udp port 9695" 10
+add listener udp localhost6 ::1 9695
+
+.IP "Listens to interface 'en0' on ethertype 0x0801" 10
+add listener ether nic0 en0 0x0801
+
+.RE
+.IP "add route \fIsymbolic\fR \fIprefix\fR \fIprefix\fR" 10
+Adds a static route to a given \fIprefix\fR to the FIB for longest match.
+
+.IP "" 10
+Currently, the \fIsymbolic\fR and \fIcost\fR are not used.
+
+.SH "LIST COMMANDS"
+.IP "list connections" 10
+Enumerates the current connections to Metis. These include all TCP, UDP, Unix Domain, and Ethernet peers.
+Each connection has an connection ID (connid) and a state (UP or DOWN) followed by the local (to metis) and remote
+addresses.
+
+.IP "list interfaces" 10
+Enumerates the system interfaces available to Metis. Each interface has an Interface ID, a 'name' (e.g. 'eth0'),
+an MTU as reported by the system, and one or more addresses.
+
+.IP "list routes" 10
+Enumerates the routes installed in the FIB.
+The \fIiface\fR is the out-bound connection.
+The \fIprotocol\fR is the the routing protocol that injected the route.
+'STATIC' means it was manually entered via \fBmetis_control\fR.
+\fIroute\fR is the route type. 'LONGEST' means longest matching prefix
+and 'EXACT' means exact match. Only 'LONGEST' is supported.
+\fIcost\fR is the cost of the route. It is not used.
+\fInext\fR is the nexthop on a multiple access interface. it is not used
+because the current implementation uses one connection (iface) per neighbor.
+\fIprefix\fR is the CCNx name prefix for the route.
+
+.IP "Examples" 10
+.PP
+.nf
+> list connections
+23 UP inet4://127.0.0.1:9695 inet4://127.0.0.1:64260 TCP
+
+> list interfaces
+int name lm MTU
+24 lo0 lm 16384 inet6://[::1%0]:0
+inet4://127.0.0.1:0
+inet6://[fe80::1%1]:0
+25 en0 m 1500 link://3c-15-c2-e7-c5-ca
+inet6://[fe80::3e15:c2ff:fee7:c5ca%4]:0
+inet4://13.1.110.60:0
+inet6://[2620::2e80:a015:3e15:c2ff:fee7:c5ca%0]:0
+inet6://[2620::2e80:a015:a4b2:7e10:61d1:8d97%0]:0
+26 en1 m 1500 link://72-00-04-43-4e-50
+inet4://192.168.1.1:0
+27 en2 m 1500 link://72-00-04-43-4e-51
+28 bridge0 m 1500 link://3e-15-c2-7e-96-00
+29 p2p0 m 2304 link://0e-15-c2-e7-c5-ca
+
+> list routes
+iface protocol route cost next prefix
+23 STATIC LONGEST 1 \-\--.\-\--.\-\--.\-\--/.... lci:/foo/bar
+Done
+
+.fi
+.PP
+.SH "REMOVE COMMANDS"
+.IP "remove connection" 10
+Not implemented.
+
+.IP "remove route" 10
+Not implemented.
+
+.SH "MISC COMMANDS"
+.IP "quit" 10
+In interactive mode of \fBmetis_control\fR, it cause the program to exit.
+
+.IP "set debug" 10
+Turns on the debugging flag in \fBmetis_control\fR to display information about its connection to Metis.
+
+.IP "unset debug" 10
+Turns off the debugging flag in \fBmetis_control\fR to display information about its connection to Metis.
+
+.SH "USAGE"
+.PP
+\fBExample Linux metis.cfg configuration file\fR
+.PP
+.nf
+#local listeners for applications
+add listener tcp local0 127.0.0.1 9695
+add listener udp local1 127.0.0.1 9695
+add listener local unix0 /tmp/metis.sock
+
+# add ethernet listener and connection
+add listener ether nic0 eth0 0x0801
+add connection ether conn0 ff:ff:ff:ff:ff:ff eth0
+add route conn0 lci:/ 1
+
+# add UDP tunnel to remote system
+add connection udp conn1 ccnx.example.com 9695
+add route conn1 lci:/eample.com 1
+
+.fi
+.PP
+.PP
+\fBExample one-shot metis_control commands\fR
+.PP
+.nf
+\fBmetis_control\fR list routes
+\fBmetis_control\fR add listener local unix0 /tmp/metis.sock
+
+.fi
+.SH "SEE ALSO"
+.PP
+\fBmetis_control\fP\fB(1)\fP
+\fBmetis_daemon\fP\fB(1)\fP
+.SH "CAVEATS"
+.PP
+
+.SH "BUGS"
+.IP " \(bu" 6
+The output of 'list interfaces' is difficult to read because multiple addresses
+do not align.
+
+.SH "AUTHOR"
+.PP
+Marc Mosko Palo Alto Research Center
+.\" created by instant / docbook-to-man, Tue 26 May 2015, 01:54
diff --git a/metis/documentation/manpage/metis.cfg.5.html b/metis/documentation/manpage/metis.cfg.5.html
new file mode 100644
index 00000000..dcc98a62
--- /dev/null
+++ b/metis/documentation/manpage/metis.cfg.5.html
@@ -0,0 +1,468 @@
+<!-- Creator : groff version 1.22.2 -->
+<!-- CreationDate: Tue May 26 01:54:12 2015 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>metis.cfg</title>
+
+</head>
+<body>
+
+<h1 align="center">metis.cfg</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#ADD COMMANDS">ADD COMMANDS</a><br>
+<a href="#LIST COMMANDS">LIST COMMANDS</a><br>
+<a href="#REMOVE COMMANDS">REMOVE COMMANDS</a><br>
+<a href="#MISC COMMANDS">MISC COMMANDS</a><br>
+<a href="#USAGE">USAGE</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+<a href="#CAVEATS">CAVEATS</a><br>
+<a href="#BUGS">BUGS</a><br>
+<a href="#AUTHOR">AUTHOR</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%">
+
+
+<p><b>metis.cfg</b></p></td>
+<td width="15%"></td>
+<td width="8%"></td>
+<td width="69%">
+
+
+<p>&mdash; <b>metis.cfg</b> is an example of a configuation
+file usable with <b>metis_daemon(1)</b>, though there is
+nothing special about the actual filename. Each line of the
+configuration file is also usable with
+<b>metis_control(1)</b>. This document specifies all
+available command lines used to configure and query
+Metis.</p> </td></tr>
+</table>
+
+<p style="margin-left:11%; margin-top: 1em">All commands
+have a &rsquo;help&rsquo;, so typing &rsquo;help
+command&rsquo; will display on-line help.</p>
+
+<p style="margin-left:11%; margin-top: 1em">In a
+configuration file, lines beginning with &rsquo;#&rsquo; are
+comments.</p>
+
+<h2>ADD COMMANDS
+<a name="ADD COMMANDS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">add connection
+ether <i>symbolic dmac interface</i></p>
+
+<p style="margin-left:26%;">Adds an Ethernet connection on
+<i>interface</i> to the given destination MAC address. The
+<i>symbolic</i> name is a symbolic name for the connection,
+which may be used in later commands, such as <b>add
+route</b>. There must be an Ethernet Listener on the
+specified interface (see <b>add listener</b>), and the
+connection will use the same EtherType as the Listener. The
+<i>dmac</i> destination MAC address is in hexidecimal with
+optional &quot;&minus;&quot; or &quot;:&quot;
+separators.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>A connection is a target for a later route assignment or
+for use as an ingress identifier in the PIT. When using a
+broadcast or group address for a connection, an Interest
+routed over that connection will be broadcast. Many
+receivers may respond. When Metis receives a broadcast
+Interest it uses the unicast source MAC for the reverse
+route &minus;&minus; it will automatically create a new
+connection for the source node and put that in the PIT
+entry, so a Content Object answering the broadcast Interest
+will only be unicast to the previous hop.</p></td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>add connection ether conn7 e8-06-88-cd-28-de em3</p></td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>add connection ether bcast0 FFFFFFFFFFFF eth0</p></td></tr>
+</table>
+
+<p style="margin-left:11%;">add connection (tcp|udp)
+<i>symbolic remote_ip remote_port local_ip <br>
+local_port</i></p>
+
+<p style="margin-left:26%;">Opens a connection to the
+specific <i>remote_ip</i> (which may be a hostname, though
+you do not have control over IPv4 or IPv6 in this case) on
+<i>remote_port</i>. The local endpoint is given by
+<i>local_ip local_port</i>. While the <i>local_ip
+local_port</i> are technically optional parameters, the
+system&rsquo;s choice of local address may not be what one
+expects or may be a different protocols (4 or 6). The
+default port is 9695.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>A TCP connection will go through a TCP connection
+establishment and will not register as UP until the remote
+side accepts. If one side goes down, the TCP connection will
+not auto-restart if it becomes availble again.</p></td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>A UDP connection will start in the UP state and will not
+go DOWN unless there is a serious network error.</p></td></tr>
+</table>
+
+<p style="margin-left:26%;">Opens a connection to 1.1.1.1
+on port 1200 from the local <br>
+address 2.2.2.2 port 1300</p>
+
+<p style="margin-left:42%;">add connection tcp conn0
+1.1.1.1 1200 2.2.2.2 1300</p>
+
+<p style="margin-left:26%;">opens connection to IPv6
+address on port 1300</p>
+
+<p style="margin-left:42%;">add connection udp barney2
+fe80::aa20:66ff:fe00:314a 1300</p>
+
+<p style="margin-left:11%;">add listener (tcp|udp)
+<i>symbolic ip_address port</i> <br>
+add listener ether <i>symbolic interfaceName ethertype</i>
+<br>
+add listener local <i>symbolic path</i></p>
+
+<p style="margin-left:26%;">Adds a protocol listener to
+accept packets of a given protocol (TCP or UDP or Ethernet).
+The <i>symbolic</i> name represents the listener and will be
+used in future commands such as access list restrictions. If
+using a configuration file on <b>metis_daemon</b>, you must
+include a listener on localhost for local applications to
+use.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>The <i>ip_address</i> is the IPv4 or IPv6 local address
+to bind to. The <i>port</i> is the TCP or UDP port to bind
+to.</p> </td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>The <i>interfaceName</i> is the interface to open a raw
+socket on (e.g. &quot;eth0&quot;). The <i>ethertype</i> is
+the EtherType to use, represented as a 0x hex number (e.g.
+0x0801) or an integer (e.g. 2049).</p></td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>The <i>path</i> parameter specifies the file path to a
+unix domain socket. Metis will create this file and remove
+it when it exits.</p></td></tr>
+</table>
+
+<p style="margin-left:26%;">Listens to 192.168.1.7 on tcp
+port 9695 with a symbolic name <br>
+&rsquo;homenet&rsquo;</p>
+
+<p style="margin-left:42%;">add listener tcp homenet
+192.168.1.7 9695</p>
+
+<p style="margin-left:26%;">Listens to IPv6 localhost on
+udp port 9695</p>
+
+<p style="margin-left:42%;">add listener udp localhost6 ::1
+9695</p>
+
+<p style="margin-left:26%;">Listens to interface
+&rsquo;en0&rsquo; on ethertype 0x0801</p>
+
+<p style="margin-left:42%;">add listener ether nic0 en0
+0x0801</p>
+
+<p style="margin-left:11%;">add route <i>symbolic prefix
+prefix</i></p>
+
+<p style="margin-left:26%;">Adds a static route to a given
+<i>prefix</i> to the FIB for longest match.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="71%">
+
+
+<p>Currently, the <i>symbolic</i> and <i>cost</i> are not
+used.</p> </td>
+<td width="3%">
+</td></tr>
+</table>
+
+<h2>LIST COMMANDS
+<a name="LIST COMMANDS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">list
+connections</p>
+
+<p style="margin-left:26%;">Enumerates the current
+connections to Metis. These include all TCP, UDP, Unix
+Domain, and Ethernet peers. Each connection has an
+connection ID (connid) and a state (UP or DOWN) followed by
+the local (to metis) and remote addresses.</p>
+
+<p style="margin-left:11%;">list interfaces</p>
+
+<p style="margin-left:26%;">Enumerates the system
+interfaces available to Metis. Each interface has an
+Interface ID, a &rsquo;name&rsquo; (e.g.
+&rsquo;eth0&rsquo;), an MTU as reported by the system, and
+one or more addresses.</p>
+
+<p style="margin-left:11%;">list routes</p>
+
+<p style="margin-left:26%;">Enumerates the routes installed
+in the FIB. The <i>iface</i> is the out-bound connection.
+The <i>protocol</i> is the the routing protocol that
+injected the route. <i>route</i> is the route type.
+&rsquo;LONGEST&rsquo; means longest matching prefix and
+&rsquo;EXACT&rsquo; means exact match. Only
+&rsquo;LONGEST&rsquo; is supported. <i>cost</i> is the cost
+of the route. It is not used. <i>next</i> is the nexthop on
+a multiple access interface. it is not used because the
+current implementation uses one connection (iface) per
+neighbor. <i>prefix</i> is the CCNx name prefix for the
+route.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="12%">
+
+
+<p>Examples</p></td>
+<td width="77%">
+</td></tr>
+</table>
+
+<p style="margin-left:11%;">&gt; list connections <br>
+23 UP inet4://127.0.0.1:9695 inet4://127.0.0.1:64260 TCP</p>
+
+<p style="margin-left:11%; margin-top: 1em">&gt; list
+interfaces <br>
+int name lm MTU <br>
+24 lo0 lm 16384 inet6://[::1%0]:0 <br>
+inet4://127.0.0.1:0 <br>
+inet6://[fe80::1%1]:0 <br>
+25 en0 m 1500 link://3c-15-c2-e7-c5-ca <br>
+inet6://[fe80::3e15:c2ff:fee7:c5ca%4]:0 <br>
+inet4://13.1.110.60:0 <br>
+inet6://[2620::2e80:a015:3e15:c2ff:fee7:c5ca%0]:0 <br>
+inet6://[2620::2e80:a015:a4b2:7e10:61d1:8d97%0]:0 <br>
+26 en1 m 1500 link://72-00-04-43-4e-50 <br>
+inet4://192.168.1.1:0 <br>
+27 en2 m 1500 link://72-00-04-43-4e-51 <br>
+28 bridge0 m 1500 link://3e-15-c2-7e-96-00 <br>
+29 p2p0 m 2304 link://0e-15-c2-e7-c5-ca</p>
+
+<p style="margin-left:11%; margin-top: 1em">&gt; list
+routes <br>
+iface protocol route cost next prefix <br>
+23 STATIC LONGEST 1
+&minus;&minus;-.&minus;&minus;-.&minus;&minus;-.&minus;&minus;-/....
+lci:/foo/bar <br>
+Done</p>
+
+<h2>REMOVE COMMANDS
+<a name="REMOVE COMMANDS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">remove
+connection</p>
+
+<p style="margin-left:26%;">Not implemented.</p>
+
+<p style="margin-left:11%;">remove route</p>
+
+<p style="margin-left:26%;">Not implemented.</p>
+
+<h2>MISC COMMANDS
+<a name="MISC COMMANDS"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="14%">
+
+
+<p style="margin-top: 1em">quit</p></td>
+<td width="1%"></td>
+<td width="74%">
+
+
+<p style="margin-top: 1em">In interactive mode of
+<b>metis_control</b>, it cause the program to exit.</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="14%">
+
+
+<p>set debug</p></td>
+<td width="1%"></td>
+<td width="74%">
+
+
+<p>Turns on the debugging flag in <b>metis_control</b> to
+display information about its connection to Metis.</p></td></tr>
+</table>
+
+<p style="margin-left:11%;">unset debug</p>
+
+<p style="margin-left:26%;">Turns off the debugging flag in
+<b>metis_control</b> to display information about its
+connection to Metis.</p>
+
+<h2>USAGE
+<a name="USAGE"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>Example
+Linux metis.cfg configuration file</b></p>
+
+<p style="margin-left:11%; margin-top: 1em">#local
+listeners for applications <br>
+add listener tcp local0 127.0.0.1 9695 <br>
+add listener udp local1 127.0.0.1 9695 <br>
+add listener local unix0 /tmp/metis.sock</p>
+
+<p style="margin-left:11%; margin-top: 1em"># add ethernet
+listener and connection <br>
+add listener ether nic0 eth0 0x0801 <br>
+add connection ether conn0 ff:ff:ff:ff:ff:ff eth0 <br>
+add route conn0 lci:/ 1</p>
+
+<p style="margin-left:11%; margin-top: 1em"># add UDP
+tunnel to remote system <br>
+add connection udp conn1 ccnx.example.com 9695 <br>
+add route conn1 lci:/eample.com 1</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>Example
+one-shot metis_control commands</b></p>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>metis_control</b>
+list routes <b><br>
+metis_control</b> add listener local unix0
+/tmp/metis.sock</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%">
+
+
+<p><b>metis_control(1) metis_daemon(1)</b></p></td>
+<td width="23%"></td>
+<td width="7%"></td>
+<td width="62%">
+</td></tr>
+</table>
+
+<h2>CAVEATS
+<a name="CAVEATS"></a>
+</h2>
+
+
+<h2>BUGS
+<a name="BUGS"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="15%"></td>
+<td width="2%">
+
+
+<p style="margin-top: 1em">&bull;</p></td>
+<td width="3%"></td>
+<td width="80%">
+
+
+<p style="margin-top: 1em">The output of &rsquo;list
+interfaces&rsquo; is difficult to read because multiple
+addresses do not align.</p></td></tr>
+</table>
+
+<h2>AUTHOR
+<a name="AUTHOR"></a>
+</h2>
+
+
+<p>Marc Mosko Palo Alto Research Center</p></table>
+<hr>
+</body>
+</html>
diff --git a/metis/documentation/manpage/metis.cfg.5.pdf b/metis/documentation/manpage/metis.cfg.5.pdf
new file mode 100644
index 00000000..07ec3a95
--- /dev/null
+++ b/metis/documentation/manpage/metis.cfg.5.pdf
Binary files differ
diff --git a/metis/documentation/manpage/metis.cfg.5.txt b/metis/documentation/manpage/metis.cfg.5.txt
new file mode 100644
index 00000000..3465bc34
--- /dev/null
+++ b/metis/documentation/manpage/metis.cfg.5.txt
@@ -0,0 +1,241 @@
+ mmeettiiss..ccffgg (5) File Formats Manual mmeettiiss..ccffgg (5)
+
+
+
+NNAAMMEE
+ mmeettiiss..ccffgg -- mmeettiiss..ccffgg is an example of a configuation file
+ usable with mmeettiiss__ddaaeemmoonn((11)), though there is nothing special about the
+ actual filename. Each line of the configuration file is also usable
+ with mmeettiiss__ccoonnttrrooll((11)). This document specifies all available command
+ lines used to configure and query Metis.
+
+ All commands have a 'help', so typing 'help command' will display on-
+ line help.
+
+ In a configuration file, lines beginning with '#' are comments.
+
+
+AADDDD CCOOMMMMAANNDDSS
+ add connection ether _s_y_m_b_o_l_i_c _d_m_a_c _i_n_t_e_r_f_a_c_e
+ Adds an Ethernet connection on _i_n_t_e_r_f_a_c_e to the given desti-
+ nation MAC address. The _s_y_m_b_o_l_i_c name is a symbolic name for
+ the connection, which may be used in later commands, such as
+ aadddd rroouuttee. There must be an Ethernet Listener on the speci-
+ fied interface (see aadddd lliisstteenneerr), and the connection will
+ use the same EtherType as the Listener. The _d_m_a_c destination
+ MAC address is in hexidecimal with optional "-" or ":" sepa-
+ rators.
+
+
+ A connection is a target for a later route assignment or for
+ use as an ingress identifier in the PIT. When using a broad-
+ cast or group address for a connection, an Interest routed
+ over that connection will be broadcast. Many receivers may
+ respond. When Metis receives a broadcast Interest it uses
+ the unicast source MAC for the reverse route -- it will auto-
+ matically create a new connection for the source node and put
+ that in the PIT entry, so a Content Object answering the
+ broadcast Interest will only be unicast to the previous hop.
+
+
+ add connection ether conn7 e8-06-88-cd-28-de em3
+
+
+ add connection ether bcast0 FFFFFFFFFFFF eth0
+
+
+ add connection (tcp|udp) _s_y_m_b_o_l_i_c _r_e_m_o_t_e___i_p _r_e_m_o_t_e___p_o_r_t _l_o_c_a_l___i_p
+ _l_o_c_a_l___p_o_r_t
+ Opens a connection to the specific _r_e_m_o_t_e___i_p (which may be a
+ hostname, though you do not have control over IPv4 or IPv6 in
+ this case) on _r_e_m_o_t_e___p_o_r_t. The local endpoint is given by
+ _l_o_c_a_l___i_p _l_o_c_a_l___p_o_r_t. While the _l_o_c_a_l___i_p _l_o_c_a_l___p_o_r_t are tech-
+ nically optional parameters, the system's choice of local
+ address may not be what one expects or may be a different
+ protocols (4 or 6). The default port is 9695.
+
+
+ A TCP connection will go through a TCP connection establish-
+ ment and will not register as UP until the remote side
+ accepts. If one side goes down, the TCP connection will not
+ auto-restart if it becomes availble again.
+
+
+ A UDP connection will start in the UP state and will not go
+ DOWN unless there is a serious network error.
+
+
+ Opens a connection to 1.1.1.1 on port 1200 from the local
+ address 2.2.2.2 port 1300
+ add connection tcp conn0 1.1.1.1 1200 2.2.2.2 1300
+
+
+ opens connection to IPv6 address on port 1300
+ add connection udp barney2
+ fe80::aa20:66ff:fe00:314a 1300
+
+
+ add listener (tcp|udp) _s_y_m_b_o_l_i_c _i_p___a_d_d_r_e_s_s _p_o_r_t
+
+ add listener ether _s_y_m_b_o_l_i_c _i_n_t_e_r_f_a_c_e_N_a_m_e _e_t_h_e_r_t_y_p_e
+
+ add listener local _s_y_m_b_o_l_i_c _p_a_t_h
+ Adds a protocol listener to accept packets of a given proto-
+ col (TCP or UDP or Ethernet). The _s_y_m_b_o_l_i_c name represents
+ the listener and will be used in future commands such as
+ access list restrictions. If using a configuration file on
+ mmeettiiss__ddaaeemmoonn, you must include a listener on localhost for
+ local applications to use.
+
+
+ The _i_p___a_d_d_r_e_s_s is the IPv4 or IPv6 local address to bind to.
+ The _p_o_r_t is the TCP or UDP port to bind to.
+
+
+ The _i_n_t_e_r_f_a_c_e_N_a_m_e is the interface to open a raw socket on
+ (e.g. "eth0"). The _e_t_h_e_r_t_y_p_e is the EtherType to use, repre-
+ sented as a 0x hex number (e.g. 0x0801) or an integer (e.g.
+ 2049).
+
+
+ The _p_a_t_h parameter specifies the file path to a unix domain
+ socket. Metis will create this file and remove it when it
+ exits.
+
+
+ Listens to 192.168.1.7 on tcp port 9695 with a symbolic name
+ 'homenet'
+ add listener tcp homenet 192.168.1.7 9695
+
+
+ Listens to IPv6 localhost on udp port 9695
+ add listener udp localhost6 ::1 9695
+
+
+ Listens to interface 'en0' on ethertype 0x0801
+ add listener ether nic0 en0 0x0801
+
+
+ add route _s_y_m_b_o_l_i_c _p_r_e_f_i_x _p_r_e_f_i_x
+ Adds a static route to a given _p_r_e_f_i_x to the FIB for longest
+ match.
+
+
+ Currently, the _s_y_m_b_o_l_i_c and _c_o_s_t are not used.
+
+
+LLIISSTT CCOOMMMMAANNDDSS
+ list connections
+ Enumerates the current connections to Metis. These include
+ all TCP, UDP, Unix Domain, and Ethernet peers. Each connec-
+ tion has an connection ID (connid) and a state (UP or DOWN)
+ followed by the local (to metis) and remote addresses.
+
+
+ list interfaces
+ Enumerates the system interfaces available to Metis. Each
+ interface has an Interface ID, a 'name' (e.g. 'eth0'), an MTU
+ as reported by the system, and one or more addresses.
+
+
+ list routes
+ Enumerates the routes installed in the FIB. The _i_f_a_c_e is the
+ out-bound connection. The _p_r_o_t_o_c_o_l is the the routing proto-
+ col that injected the route. _r_o_u_t_e is the route type.
+ 'LONGEST' means longest matching prefix and 'EXACT' means
+ exact match. Only 'LONGEST' is supported. _c_o_s_t is the cost
+ of the route. It is not used. _n_e_x_t is the nexthop on a mul-
+ tiple access interface. it is not used because the current
+ implementation uses one connection (iface) per neighbor.
+ _p_r_e_f_i_x is the CCNx name prefix for the route.
+
+
+ Examples
+
+ > list connections
+ 23 UP inet4://127.0.0.1:9695 inet4://127.0.0.1:64260 TCP
+
+ > list interfaces
+ int name lm MTU
+ 24 lo0 lm 16384 inet6://[::1%0]:0
+ inet4://127.0.0.1:0
+ inet6://[fe80::1%1]:0
+ 25 en0 m 1500 link://3c-15-c2-e7-c5-ca
+ inet6://[fe80::3e15:c2ff:fee7:c5ca%4]:0
+ inet4://13.1.110.60:0
+ inet6://[2620::2e80:a015:3e15:c2ff:fee7:c5ca%0]:0
+ inet6://[2620::2e80:a015:a4b2:7e10:61d1:8d97%0]:0
+ 26 en1 m 1500 link://72-00-04-43-4e-50
+ inet4://192.168.1.1:0
+ 27 en2 m 1500 link://72-00-04-43-4e-51
+ 28 bridge0 m 1500 link://3e-15-c2-7e-96-00
+ 29 p2p0 m 2304 link://0e-15-c2-e7-c5-ca
+
+ > list routes
+ iface protocol route cost next prefix
+ 23 STATIC LONGEST 1 ---.---.---.---/.... lci:/foo/bar
+ Done
+
+
+RREEMMOOVVEE CCOOMMMMAANNDDSS
+ remove connection
+ Not implemented.
+
+
+ remove route
+ Not implemented.
+
+
+MMIISSCC CCOOMMMMAANNDDSS
+ quit In interactive mode of mmeettiiss__ccoonnttrrooll, it cause the program to
+ exit.
+
+
+ set debug Turns on the debugging flag in mmeettiiss__ccoonnttrrooll to display
+ information about its connection to Metis.
+
+
+ unset debug
+ Turns off the debugging flag in mmeettiiss__ccoonnttrrooll to display
+ information about its connection to Metis.
+
+
+UUSSAAGGEE
+ EExxaammppllee LLiinnuuxx mmeettiiss..ccffgg ccoonnffiigguurraattiioonn ffiillee
+
+ #local listeners for applications
+ add listener tcp local0 127.0.0.1 9695
+ add listener udp local1 127.0.0.1 9695
+ add listener local unix0 /tmp/metis.sock
+
+ # add ethernet listener and connection
+ add listener ether nic0 eth0 0x0801
+ add connection ether conn0 ff:ff:ff:ff:ff:ff eth0
+ add route conn0 lci:/ 1
+
+ # add UDP tunnel to remote system
+ add connection udp conn1 ccnx.example.com 9695
+ add route conn1 lci:/eample.com 1
+
+
+ EExxaammppllee oonnee--sshhoott mmeettiiss__ccoonnttrrooll ccoommmmaannddss
+
+ mmeettiiss__ccoonnttrrooll list routes
+ mmeettiiss__ccoonnttrrooll add listener local unix0 /tmp/metis.sock
+
+
+SSEEEE AALLSSOO
+ mmeettiiss__ccoonnttrrooll((11)) mmeettiiss__ddaaeemmoonn((11))
+
+CCAAVVEEAATTSS
+BBUUGGSS
+ +o The output of 'list interfaces' is difficult to read because mul-
+ tiple addresses do not align.
+
+
+AAUUTTHHOORR
+ Marc Mosko Palo Alto Research Center
+
+
+
+ mmeettiiss..ccffgg (5)
diff --git a/metis/documentation/manpage/metis_control.1 b/metis/documentation/manpage/metis_control.1
new file mode 100644
index 00000000..034920a2
--- /dev/null
+++ b/metis/documentation/manpage/metis_control.1
@@ -0,0 +1,79 @@
+.TH " \fBmetis_control\fP " "1"
+.SH "NAME"
+\fBmetis_control\fP \(em Metis is the CCNx 1.0 forwarder, which runs on each end system and as a software forwarder
+on intermediate systems. \fBmetis_control\fR is the program to configure the forwarder,
+\fBmetis_daemon\fR.
+
+.SH "SYNOPSIS"
+.PP
+\fBmetis_control\fR [\fB\-\-keystore\fP \fIkeystore\fR] [\fB\-\-password\fP \fIpassword\fR] [commandline]
+.SH "DESCRIPTION"
+.PP
+\fBmetis_control\fR is the program used to configure a running forwarder \fBmetis_daemon\fR. It will connect to
+the forwarder over a local listener (e.g. TCP to localhost or a unix domain socket). If a
+\fIcommandline\fR option is specified, \fBmetis_control\fR will send that one command to Metis and then exit. If no \fIcommandline\fR is specified, \fBmetis_command\fR will enter interacitve mode where the user can issue
+multiple commands.
+
+.PP
+\fBmetis_control\fR requires a signing keystore for communicating over the network. The
+\fIkeystore\fR file is a standard PKCS12 keystore, and may be
+created using
+\fBparc_publickey\fP\fB(1)\fP.
+If no \fIkeystore\fR is specified, \fBmetis_control\fR will look in the standard path ~/.ccnx/.ccnx_keystore.p12.
+The keystore password is specified in \fIpassword\fR. If not specified,
+no password is used. If the keystore does not open, the user will be prompted for a password.
+
+.PP
+See \fBmetis.cfg\fP\fB(5)\fP for
+a specification of the available \fIcommandline\fR.
+
+.PP
+The environment variable METIS_PORT may be used to specify what TCP port to use to connect to the local Metis.
+The environment variable METIS_LOCALPATH may be used to specific the UNIX domain socket to connect to the local Metis
+and takes priority over METIS_PORT.
+
+.SH "OPTIONS"
+.IP "\-\-keystore \fIkeystore\fR" 10
+\fBmetis_control\fR requires a signing keystore for communicating over the network. The
+\fIkeystore\fR file is a standard PKCS12 keystore, and may be
+created using
+\fBparc_publickey\fP\fB(1)\fP.
+If no \fIkeystore\fR is specified, \fBmetis_control\fR will look in the standard path ~/.ccnx/.ccnx_keystore.p12.
+
+.IP "\-\-password \fIpassword\fR" 10
+The keystore password is specified in \fIpassword\fR. If not specified,
+no password is used. If the keystore does not open, the user will be prompted for a password.
+
+.IP "commandline" 10
+The remainder of the arguments are the commandline to send to Metis. See USAGE.
+
+.SH "USAGE"
+.PP
+\fBmetis_control\fR \-\-keystore keystore.p12
+
+.PP
+\fBmetis_control\fR \-\-keystore keystore.p12 list interfaces
+
+.SH "SEE ALSO"
+.PP
+See \fBparc_publickey\fP\fB(1)\fP for a utility
+to create a PKCS keystore.
+
+.PP
+For a list of all configuration lines that may be used with
+\fBmetis_control\fR and by \fI\-\-config\fR configuration file,
+see \fBmetis.cfg\fP\fB(5)\fP.
+
+.PP
+The default keystore is ~/.ccnx/.ccnx_keystore.p12.
+
+.SH "CAVEATS"
+.PP
+
+.SH "BUGS"
+.PP
+
+.SH "AUTHOR"
+.PP
+Marc Mosko Palo Alto Research Center
+.\" created by instant / docbook-to-man, Tue 26 May 2015, 01:54
diff --git a/metis/documentation/manpage/metis_control.1.html b/metis/documentation/manpage/metis_control.1.html
new file mode 100644
index 00000000..1eb911a5
--- /dev/null
+++ b/metis/documentation/manpage/metis_control.1.html
@@ -0,0 +1,280 @@
+<!-- Creator : groff version 1.22.2 -->
+<!-- CreationDate: Tue May 26 01:54:12 2015 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>metis_control</title>
+
+</head>
+<body>
+
+<h1 align="center">metis_control</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#USAGE">USAGE</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+<a href="#CAVEATS">CAVEATS</a><br>
+<a href="#BUGS">BUGS</a><br>
+<a href="#AUTHOR">AUTHOR</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%">
+
+
+<p><b>metis_control</b></p></td>
+<td width="15%"></td>
+<td width="8%"></td>
+<td width="69%">
+
+
+<p>&mdash; Metis is the CCNx 1.0 forwarder, which runs on
+each end system and as a software forwarder on intermediate
+systems. <b>metis_control</b> is the program to configure
+the forwarder, <b>metis_daemon</b>.</p></td></tr>
+</table>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>metis_control</b>
+[<b>&minus;&minus;keystore</b> <i>keystore</i>]
+[<b>&minus;&minus;password</b> <i>password</i>]
+[commandline]</p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%">
+
+
+<p><b>metis_control</b></p></td>
+<td width="15%"></td>
+<td width="8%">
+
+
+<p>is the program used to configure a running forwarder
+<b>metis_daemon</b>. It will connect to the forwarder over a
+local listener (e.g. TCP to localhost or a unix domain
+socket). If a <i>commandline</i> option is specified,
+<b>metis_control</b></p> </td>
+<td width="54%"></td>
+<td width="7%"></td>
+<td width="8%">
+
+
+<p>will send that one command to Metis and then exit. If no
+<i>commandline</i></p> </td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%"></td>
+<td width="15%"></td>
+<td width="8%"></td>
+<td width="54%"></td>
+<td width="7%"></td>
+<td width="8%">
+
+
+<p>is specified, <b>metis_command</b> will enter
+interacitve mode where the user can issue multiple
+commands.</p> </td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%">
+
+
+<p><b>metis_control</b> requires a signing keystore for
+communicating over the network. The <i>keystore</i> file is
+a standard PKCS12 keystore, and may be created using
+<b>parc_publickey(1)</b>. If no <i>keystore</i> is
+specified, <b>metis_control</b></p></td>
+<td width="15%"></td>
+<td width="8%"></td>
+<td width="54%"></td>
+<td width="7%"></td>
+<td width="8%">
+
+
+<p>will look in the standard path
+~/.ccnx/.ccnx_keystore.p12. The keystore password is
+specified in <i>password</i>. If not specified, no password
+is used. If the keystore does not open, the user will be
+prompted for a password.</p></td></tr>
+</table>
+
+<p style="margin-left:11%; margin-top: 1em">See
+<b>metis.cfg(5)</b> for a specification of the available
+<i>commandline</i>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">The environment
+variable METIS_PORT may be used to specify what TCP port to
+use to connect to the local Metis. The environment variable
+METIS_LOCALPATH may be used to specific the UNIX domain
+socket to connect to the local Metis and takes priority over
+METIS_PORT.</p>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">&minus;&minus;keystore
+<i>keystore</i></p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="-18%">
+
+
+<p><b>metis_control</b> requires a signing keystore for
+communicating over the network. The <i>keystore</i> file is
+a standard PKCS12 keystore, and may be created using
+<b>parc_publickey(1)</b>. If no <i>keystore</i> is
+specified, <b>metis_control</b></p></td>
+<td width="61%"></td>
+<td width="8%"></td>
+<td width="8%"></td>
+<td width="7%"></td>
+<td width="8%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="-18%"></td>
+<td width="61%"></td>
+<td width="8%"></td>
+<td width="8%"></td>
+<td width="7%"></td>
+<td width="8%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="-18%"></td>
+<td width="61%"></td>
+<td width="8%"></td>
+<td width="8%"></td>
+<td width="7%"></td>
+<td width="8%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="-18%"></td>
+<td width="61%"></td>
+<td width="8%"></td>
+<td width="8%"></td>
+<td width="7%"></td>
+<td width="8%">
+
+
+<p>will look in the standard path
+~/.ccnx/.ccnx_keystore.p12.</p> </td></tr>
+</table>
+
+<p style="margin-left:11%;">&minus;&minus;password
+<i>password</i></p>
+
+<p style="margin-left:26%;">The keystore password is
+specified in <i>password</i>. If not specified, no password
+is used. If the keystore does not open, the user will be
+prompted for a password.</p>
+
+<p style="margin-left:11%;">commandline</p>
+
+<p style="margin-left:26%;">The remainder of the arguments
+are the commandline to send to Metis. See USAGE.</p>
+
+<h2>USAGE
+<a name="USAGE"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>metis_control</b>
+&minus;&minus;keystore keystore.p12</p>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>metis_control</b>
+&minus;&minus;keystore keystore.p12 list interfaces</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">See
+<b>parc_publickey(1)</b> for a utility to create a PKCS
+keystore.</p>
+
+<p style="margin-left:11%; margin-top: 1em">For a list of
+all configuration lines that may be used with
+<b>metis_control</b> and by <i>&minus;&minus;config</i>
+configuration file, see <b>metis.cfg(5)</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">The default
+keystore is ~/.ccnx/.ccnx_keystore.p12.</p>
+
+<h2>CAVEATS
+<a name="CAVEATS"></a>
+</h2>
+
+
+<h2>BUGS
+<a name="BUGS"></a>
+</h2>
+
+
+<h2>AUTHOR
+<a name="AUTHOR"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%">
+
+
+<p>Marc Mosko Palo Alto Research Center</p></td>
+<td width="54%"></td>
+<td width="7%"></td>
+<td width="31%">
+</td></tr>
+ </table>
+<hr>
+</body>
+</html>
diff --git a/metis/documentation/manpage/metis_control.1.pdf b/metis/documentation/manpage/metis_control.1.pdf
new file mode 100644
index 00000000..6088c69a
--- /dev/null
+++ b/metis/documentation/manpage/metis_control.1.pdf
Binary files differ
diff --git a/metis/documentation/manpage/metis_control.1.txt b/metis/documentation/manpage/metis_control.1.txt
new file mode 100644
index 00000000..ffeac009
--- /dev/null
+++ b/metis/documentation/manpage/metis_control.1.txt
@@ -0,0 +1,87 @@
+ mmeettiiss__ccoonnttrrooll (1)General Commands Manual mmeettiiss__ccoonnttrrooll (1)
+
+
+
+NNAAMMEE
+ mmeettiiss__ccoonnttrrooll -- Metis is the CCNx 1.0 forwarder, which runs on each
+ end system and as a software forwarder on intermediate systems.
+ mmeettiiss__ccoonnttrrooll is the program to configure the forwarder, mmeettiiss__ddaaeemmoonn.
+
+
+SSYYNNOOPPSSIISS
+ mmeettiiss__ccoonnttrrooll [----kkeeyyssttoorree _k_e_y_s_t_o_r_e] [----ppaasssswwoorrdd _p_a_s_s_w_o_r_d] [command-
+ line]
+
+DDEESSCCRRIIPPTTIIOONN
+ mmeettiiss__ccoonnttrrooll is the program used to configure a running forwarder
+ mmeettiiss__ddaaeemmoonn. It will connect to the forwarder over a local listener
+ (e.g. TCP to localhost or a unix domain socket). If a _c_o_m_m_a_n_d_l_i_n_e
+ option is specified, mmeettiiss__ccoonnttrrooll will send that one command to
+ Metis and then exit. If no _c_o_m_m_a_n_d_l_i_n_e is specified, mmeettiiss__ccoommmmaanndd
+ will enter interacitve mode where the user can issue multiple commands.
+
+
+ mmeettiiss__ccoonnttrrooll requires a signing keystore for communicating over the
+ network. The _k_e_y_s_t_o_r_e file is a standard PKCS12 keystore, and may be
+ created using ppaarrcc__ppuubblliicckkeeyy((11)). If no _k_e_y_s_t_o_r_e is specified,
+ mmeettiiss__ccoonnttrrooll will look in the standard path ~/.ccnx/.ccnx_key-
+ store.p12. The keystore password is specified in _p_a_s_s_w_o_r_d. If not
+ specified, no password is used. If the keystore does not open, the
+ user will be prompted for a password.
+
+
+ See mmeettiiss..ccffgg((55)) for a specification of the available _c_o_m_m_a_n_d_l_i_n_e.
+
+
+ The environment variable METIS_PORT may be used to specify what TCP
+ port to use to connect to the local Metis. The environment variable
+ METIS_LOCALPATH may be used to specific the UNIX domain socket to con-
+ nect to the local Metis and takes priority over METIS_PORT.
+
+
+OOPPTTIIOONNSS
+ --keystore _k_e_y_s_t_o_r_e
+ mmeettiiss__ccoonnttrrooll requires a signing keystore for communicating
+ over the network. The _k_e_y_s_t_o_r_e file is a standard PKCS12
+ keystore, and may be created using ppaarrcc__ppuubblliicckkeeyy((11)). If no
+ _k_e_y_s_t_o_r_e is specified, mmeettiiss__ccoonnttrrooll will
+ look in the standard path ~/.ccnx/.ccnx_keystore.p12.
+
+
+ --password _p_a_s_s_w_o_r_d
+ The keystore password is specified in _p_a_s_s_w_o_r_d. If not spec-
+ ified, no password is used. If the keystore does not open,
+ the user will be prompted for a password.
+
+
+ commandline
+ The remainder of the arguments are the commandline to send to
+ Metis. See USAGE.
+
+
+UUSSAAGGEE
+ mmeettiiss__ccoonnttrrooll --keystore keystore.p12
+
+
+ mmeettiiss__ccoonnttrrooll --keystore keystore.p12 list interfaces
+
+
+SSEEEE AALLSSOO
+ See ppaarrcc__ppuubblliicckkeeyy((11)) for a utility to create a PKCS keystore.
+
+
+ For a list of all configuration lines that may be used with mmeettiiss__ccoonn--
+ ttrrooll and by _-_-_c_o_n_f_i_g configuration file, see mmeettiiss..ccffgg((55)).
+
+
+ The default keystore is ~/.ccnx/.ccnx_keystore.p12.
+
+
+CCAAVVEEAATTSS
+BBUUGGSS
+AAUUTTHHOORR
+ Marc Mosko Palo Alto Research Center
+
+
+
+ mmeettiiss__ccoonnttrrooll (1)
diff --git a/metis/documentation/manpage/metis_daemon.1 b/metis/documentation/manpage/metis_daemon.1
new file mode 100644
index 00000000..b5172f61
--- /dev/null
+++ b/metis/documentation/manpage/metis_daemon.1
@@ -0,0 +1,138 @@
+.TH " \fBmetis_daemon\fP " "1"
+.SH "NAME"
+\fBmetis_daemon\fP \(em Metis is the CCNx 1.0 forwarder, which runs on each end system and as a software forwarder
+on intermediate systems.
+
+.SH "SYNOPSIS"
+.PP
+\fBmetis_daemon\fR [\fB\-\-port\fP \fIport\fR] [\fB\-\-daemon\fP] [\fB\-\-capacity\fP \fIcontentStoreSize\fR] [\fB\-\-log\fP \fIfacility=level\fR \&...] [\fB\-\-log-file\fP \fIlogfile\fR] [\fB\-\-config\fP \fIconfigfile\fR]
+.SH "DESCRIPTION"
+.PP
+\fBmetis_daemon\fR is the CCNx 1.0 forwarder, which runs on each end system and as a software forwarder
+on intermediate systems. metis_daemon is the program to launch Metis, either as a console program
+or a background daemon (detatched from console). Once running, use the program \fBmetis_control\fR to
+configure Metis.
+
+.PP
+Metis is structured as a set of Listeners, each of which handles a specific method of listening for packets.
+For example, a TCP listener will accept connections on a specific TCP port on a specific local IP address.
+An Ethernet listener will accept frames of a specific EtherType on a specific Interface.
+
+.PP
+When Metis accepts a connection, it will create a Connection entry in the ConnectionTable to represent that peer.
+For Ethernet, a Connection is the tuple {dmac, smac, ethertype}. For TCP and UDP, it is the tuple {source IP, source port,
+destination IP, destination port}. The connid (connection ID) becomes the reverse route index in the Pending Interest Table.
+
+.SH "OPTIONS"
+.IP "\-\-config \fIconfigfile\fR" 10
+Reads configuration parameters from
+\fIconfigfile\fR.
+The
+\fI\-\-port\fR option has no effect in this mode
+and Metis will not listen to any ports. This means that
+\fBmetis_control\fR will not be able to connect to Metis to configure it
+further unless one includes at least a listener for TCP localhost or a unix domain socket.
+
+.IP "\-\-capacity \fIcontentStoreSize\fR" 10
+Sets the capacity of the Content Store to
+\fIcontentStoreSize\fR content objects.
+Metis uses a least-recently-used eviction policy. A size of 0 will disable the
+Content Store.
+
+.IP "" 10
+The Content Store sits on the fast path of the forwarder, so there is a cost
+associated with adding and removing items to the Content Store tables.
+
+.IP "\-\-daemon" 10
+Runs Metis in daemon mode, detaching from the console. It must
+be run with the \fI\-\-log-file\fR option.
+
+.IP "\-\-log \fIfacility\fR=\fIlevel\fR" 10
+Sets the log level of the given
+\fIfacility\fR to the given
+\fIlevel\fR.
+The \fI\-\-log\fR option may be repeated
+several times setting the log level of different facilities. If the same
+facility is listed twice, only the last occurance takes effect.
+The default log level is Error for all facilities.
+
+.IP "" 10
+Facilities:
+.RS
+.IP " \(bu" 6
+all: All facilities.
+
+.IP " \(bu" 6
+config: Configuration activies.
+
+.IP " \(bu" 6
+core: Core forwarder, such as startup and shutdown.
+
+.IP " \(bu" 6
+io: Listeners, connections, and all I/O related activities.
+
+.IP " \(bu" 6
+message: CCNx messages, such as parsing.
+
+.IP " \(bu" 6
+processor: Forwarding processor, such as CS, FIB, and PIT activities.
+
+.RE
+
+.IP "" 10
+The log levels are: debug, info, notice, warning, error, critical, alert, off.
+
+.IP "\-\-log-file \fIlogfile\fR" 10
+Specifies the
+\fIlogfile\fR to write all log messages. This parameter is required with
+\fI\-\-daemon\fR mode.
+
+.IP "\-\-port \fIport\fR" 10
+The UDP and TCP port to listen on. If no
+\fIconfigfile\fR is specified, Metis will listen on this port on all interfaces
+including localhost.
+
+.IP "" 10
+If this parameter is not given, Metis uses the default port 9695.
+
+.SH "USAGE"
+.PP
+\fBmetis_daemon\fR \-\-config metis.cfg \-\-log all=info \-\-log config=debug \-\-log-file metis.log
+
+.SH "SEE ALSO"
+.PP
+See \fBmetis_control\fP\fB(1)\fP for a
+description of how to configure \fBmetis_daemon\fR.
+
+.PP
+For a list of all configuration lines that may be used with
+\fBmetis_control\fR and by \fI\-\-config\fR configuration file,
+see \fBmetis.cfg\fP\fB(5)\fP.
+
+.SH "CAVEATS"
+.IP " \(bu" 6
+A given interface may only have one Ethernet listener on one EtherType.
+
+.IP " \(bu" 6
+If there are multiple longest matching prefix entries that match an Interest, it will be
+forwarded to all those routes (i.e. multicast).
+
+.IP " \(bu" 6
+Ethernet fragmentation will only use the interface MTU and there is not MTU discovery. If Metis is
+used in a bridged environment, this may lead to errors if the MTU changes on different segments, such
+as a 10G link at 9000 bytes and a 100 Mbps link at 1500 bytes.
+
+.SH "BUGS"
+.IP " \(bu" 6
+Adding the same listener twice will cause Metis to crash.
+
+.IP " \(bu" 6
+Errors in the configuration file may cause Metis to crash.
+
+.IP " \(bu" 6
+The command 'list connections' will display all connections as TCP encapsulation.
+
+.SH "AUTHOR"
+.PP
+Marc Mosko Palo Alto Research Center
+.\" created by instant / docbook-to-man, Tue 26 May 2015, 01:54
diff --git a/metis/documentation/manpage/metis_daemon.1.html b/metis/documentation/manpage/metis_daemon.1.html
new file mode 100644
index 00000000..75d8c24b
--- /dev/null
+++ b/metis/documentation/manpage/metis_daemon.1.html
@@ -0,0 +1,405 @@
+<!-- Creator : groff version 1.22.2 -->
+<!-- CreationDate: Tue May 26 01:54:12 2015 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ table { margin-top: 0; margin-bottom: 0; vertical-align: top }
+ h1 { text-align: center }
+</style>
+<title>metis_daemon</title>
+
+</head>
+<body>
+
+<h1 align="center">metis_daemon</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#USAGE">USAGE</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+<a href="#CAVEATS">CAVEATS</a><br>
+<a href="#BUGS">BUGS</a><br>
+<a href="#AUTHOR">AUTHOR</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="-3%">
+
+
+<p><b>metis_daemon</b></p></td>
+<td width="15%"></td>
+<td width="8%"></td>
+<td width="69%">
+
+
+<p>&mdash; Metis is the CCNx 1.0 forwarder, which runs on
+each end system and as a software forwarder on intermediate
+systems.</p> </td></tr>
+</table>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>metis_daemon</b>
+[<b>&minus;&minus;port</b> <i>port</i>]
+[<b>&minus;&minus;daemon</b>] [<b>&minus;&minus;capacity</b>
+<i>contentStoreSize</i>] [<b>&minus;&minus;log</b>
+<i>facility=level</i> ...] [<b>&minus;&minus;log-file</b>
+<i>logfile</i>] [<b>&minus;&minus;config</b>
+<i>configfile</i>]</p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>metis_daemon</b>
+is the CCNx 1.0 forwarder, which runs on each end system and
+as a software forwarder on intermediate systems.
+metis_daemon is the program to launch Metis, either as a
+console program or a background daemon (detatched from
+console). Once running, use the program <b>metis_control</b>
+to configure Metis.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Metis is
+structured as a set of Listeners, each of which handles a
+specific method of listening for packets. For example, a TCP
+listener will accept connections on a specific TCP port on a
+specific local IP address. An Ethernet listener will accept
+frames of a specific EtherType on a specific Interface.</p>
+
+<p style="margin-left:11%; margin-top: 1em">When Metis
+accepts a connection, it will create a Connection entry in
+the ConnectionTable to represent that peer. For Ethernet, a
+Connection is the tuple {dmac, smac, ethertype}. For TCP and
+UDP, it is the tuple {source IP, source port, destination
+IP, destination port}. The connid (connection ID) becomes
+the reverse route index in the Pending Interest Table.</p>
+
+<h2>OPTIONS
+<a name="OPTIONS"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">&minus;&minus;config
+<i>configfile</i></p>
+
+<p style="margin-left:26%;">Reads configuration parameters
+from <i>configfile</i>. The <i>&minus;&minus;port</i> option
+has no effect in this mode and Metis will not listen to any
+ports. This means that <b>metis_control</b> will not be able
+to connect to Metis to configure it further unless one
+includes at least a listener for TCP localhost or a unix
+domain socket.</p>
+
+<p style="margin-left:11%;">&minus;&minus;capacity
+<i>contentStoreSize</i></p>
+
+<p style="margin-left:26%;">Sets the capacity of the
+Content Store to <i>contentStoreSize</i> content objects.
+Metis uses a least-recently-used eviction policy. A size of
+0 will disable the Content Store.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="12%">
+</td>
+<td width="3%"></td>
+<td width="74%">
+
+
+<p>The Content Store sits on the fast path of the
+forwarder, so there is a cost associated with adding and
+removing items to the Content Store tables.</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="12%">
+
+
+<p>&minus;&minus;daemon</p></td>
+<td width="3%"></td>
+<td width="74%">
+
+
+<p>Runs Metis in daemon mode, detaching from the console.
+It must be run with the <i>&minus;&minus;log-file</i>
+option.</p> </td></tr>
+</table>
+
+<p style="margin-left:11%;">&minus;&minus;log
+<i>facility</i>=<i>level</i></p>
+
+<p style="margin-left:26%;">Sets the log level of the given
+<i>facility</i> to the given <i>level</i>. The
+<i>&minus;&minus;log</i> option may be repeated several
+times setting the log level of different facilities. If the
+same facility is listed twice, only the last occurance takes
+effect. The default log level is Error for all
+facilities.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="17%">
+
+
+<p>Facilities:</p></td>
+<td width="57%">
+</td></tr>
+</table>
+
+<p style="margin-left:26%;">&bull;</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="31%"></td>
+<td width="1%"></td>
+<td width="3%"></td>
+<td width="65%">
+
+
+<p style="margin-top: 1em">all: All facilities.</p></td></tr>
+<tr valign="top" align="left">
+<td width="31%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="65%">
+
+
+<p>config: Configuration activies.</p></td></tr>
+<tr valign="top" align="left">
+<td width="31%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="65%">
+
+
+<p>core: Core forwarder, such as startup and shutdown.</p></td></tr>
+<tr valign="top" align="left">
+<td width="31%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="65%">
+
+
+<p>io: Listeners, connections, and all I/O related
+activities.</p> </td></tr>
+<tr valign="top" align="left">
+<td width="31%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="65%">
+
+
+<p>message: CCNx messages, such as parsing.</p></td></tr>
+<tr valign="top" align="left">
+<td width="31%"></td>
+<td width="1%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="65%">
+
+
+<p>processor: Forwarding processor, such as CS, FIB, and
+PIT activities.</p></td></tr>
+</table>
+
+<p style="margin-left:26%; margin-top: 1em">The log levels
+are: debug, info, notice, warning, error, critical, alert,
+off.</p>
+
+<p style="margin-left:11%;">&minus;&minus;log-file
+<i>logfile</i></p>
+
+<p style="margin-left:26%;">Specifies the <i>logfile</i> to
+write all log messages. This parameter is required with
+<i>&minus;&minus;daemon</i> mode.</p>
+
+<p style="margin-left:11%;">&minus;&minus;port
+<i>port</i></p>
+
+<p style="margin-left:26%;">The UDP and TCP port to listen
+on. If no <i>configfile</i> is specified, Metis will listen
+on this port on all interfaces including localhost.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="26%"></td>
+<td width="74%">
+
+
+<p>If this parameter is not given, Metis uses the default
+port 9695.</p></td></tr>
+</table>
+
+<h2>USAGE
+<a name="USAGE"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>metis_daemon</b>
+&minus;&minus;config metis.cfg &minus;&minus;log all=info
+&minus;&minus;log config=debug &minus;&minus;log-file
+metis.log</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">See
+<b>metis_control(1)</b> for a description of how to
+configure <b>metis_daemon</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">For a list of
+all configuration lines that may be used with
+<b>metis_control</b> and by <i>&minus;&minus;config</i>
+configuration file, see <b>metis.cfg(5)</b>.</p>
+
+<h2>CAVEATS
+<a name="CAVEATS"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="15%"></td>
+<td width="2%">
+
+
+<p style="margin-top: 1em">&bull;</p></td>
+<td width="3%"></td>
+<td width="80%">
+
+
+<p style="margin-top: 1em">A given interface may only have
+one Ethernet listener on one EtherType.</p></td></tr>
+<tr valign="top" align="left">
+<td width="15%"></td>
+<td width="2%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="80%">
+
+
+<p>If there are multiple longest matching prefix entries
+that match an Interest, it will be forwarded to all those
+routes (i.e. multicast).</p></td></tr>
+<tr valign="top" align="left">
+<td width="15%"></td>
+<td width="2%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="80%">
+
+
+<p>Ethernet fragmentation will only use the interface MTU
+and there is not MTU discovery. If Metis is used in a
+bridged environment, this may lead to errors if the MTU
+changes on different segments, such as a 10G link at 9000
+bytes and a 100 Mbps link at 1500 bytes.</p></td></tr>
+</table>
+
+<h2>BUGS
+<a name="BUGS"></a>
+</h2>
+
+
+<table width="100%" border="0" rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="15%"></td>
+<td width="2%">
+
+
+<p style="margin-top: 1em">&bull;</p></td>
+<td width="3%"></td>
+<td width="80%">
+
+
+<p style="margin-top: 1em">Adding the same listener twice
+will cause Metis to crash.</p></td></tr>
+<tr valign="top" align="left">
+<td width="15%"></td>
+<td width="2%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="80%">
+
+
+<p>Errors in the configuration file may cause Metis to
+crash.</p> </td></tr>
+<tr valign="top" align="left">
+<td width="15%"></td>
+<td width="2%">
+
+
+<p>&bull;</p></td>
+<td width="3%"></td>
+<td width="80%">
+
+
+<p>The command &rsquo;list connections&rsquo; will display
+all connections as TCP encapsulation.</p></td></tr>
+</table>
+
+<h2>AUTHOR
+<a name="AUTHOR"></a>
+</h2>
+
+
+<p>Marc Mosko Palo Alto Research Center</p></table>
+<hr>
+</body>
+</html>
diff --git a/metis/documentation/manpage/metis_daemon.1.pdf b/metis/documentation/manpage/metis_daemon.1.pdf
new file mode 100644
index 00000000..8305cbb6
--- /dev/null
+++ b/metis/documentation/manpage/metis_daemon.1.pdf
Binary files differ
diff --git a/metis/documentation/manpage/metis_daemon.1.txt b/metis/documentation/manpage/metis_daemon.1.txt
new file mode 100644
index 00000000..7200db05
--- /dev/null
+++ b/metis/documentation/manpage/metis_daemon.1.txt
@@ -0,0 +1,159 @@
+ mmeettiiss__ddaaeemmoonn (1)General Commands Manual mmeettiiss__ddaaeemmoonn (1)
+
+
+
+NNAAMMEE
+ mmeettiiss__ddaaeemmoonn — Metis is the CCNx 1.0 forwarder, which runs on each
+ end system and as a software forwarder on intermediate systems.
+
+
+SSYYNNOOPPSSIISS
+ mmeettiiss__ddaaeemmoonn [----ppoorrtt _p_o_r_t] [----ddaaeemmoonn] [----ccaappaacciittyy _c_o_n_t_e_n_t_S_t_o_r_e_S_i_z_e]
+ [----lloogg _f_a_c_i_l_i_t_y_=_l_e_v_e_l ...] [----lloogg--ffiillee _l_o_g_f_i_l_e] [----ccoonnffiigg _c_o_n_f_i_g_f_i_l_e]
+
+DDEESSCCRRIIPPTTIIOONN
+ mmeettiiss__ddaaeemmoonn is the CCNx 1.0 forwarder, which runs on each end system
+ and as a software forwarder on intermediate systems. metis_daemon is
+ the program to launch Metis, either as a console program or a back‐
+ ground daemon (detatched from console). Once running, use the program
+ mmeettiiss__ccoonnttrrooll to configure Metis.
+
+
+ Metis is structured as a set of Listeners, each of which handles a spe‐
+ cific method of listening for packets. For example, a TCP listener
+ will accept connections on a specific TCP port on a specific local IP
+ address. An Ethernet listener will accept frames of a specific Ether‐
+ Type on a specific Interface.
+
+
+ When Metis accepts a connection, it will create a Connection entry in
+ the ConnectionTable to represent that peer. For Ethernet, a Connection
+ is the tuple {dmac, smac, ethertype}. For TCP and UDP, it is the tuple
+ {source IP, source port, destination IP, destination port}. The connid
+ (connection ID) becomes the reverse route index in the Pending Interest
+ Table.
+
+
+OOPPTTIIOONNSS
+ --config _c_o_n_f_i_g_f_i_l_e
+ Reads configuration parameters from _c_o_n_f_i_g_f_i_l_e. The _-_-_p_o_r_t
+ option has no effect in this mode and Metis will not listen
+ to any ports. This means that mmeettiiss__ccoonnttrrooll will not be able
+ to connect to Metis to configure it further unless one
+ includes at least a listener for TCP localhost or a unix
+ domain socket.
+
+
+ --capacity _c_o_n_t_e_n_t_S_t_o_r_e_S_i_z_e
+ Sets the capacity of the Content Store to _c_o_n_t_e_n_t_S_t_o_r_e_S_i_z_e
+ content objects. Metis uses a least-recently-used eviction
+ policy. A size of 0 will disable the Content Store.
+
+
+ The Content Store sits on the fast path of the forwarder, so
+ there is a cost associated with adding and removing items to
+ the Content Store tables.
+
+
+ --daemon Runs Metis in daemon mode, detaching from the console. It
+ must be run with the _-_-_l_o_g_-_f_i_l_e option.
+
+
+ --log _f_a_c_i_l_i_t_y=_l_e_v_e_l
+ Sets the log level of the given _f_a_c_i_l_i_t_y to the
+ given _l_e_v_e_l. The _-_-_l_o_g option may be repeated several times
+ setting the log level of different facilities. If the same
+ facility is listed twice, only the last occurance takes
+ effect. The default log level is Error for all facilities.
+
+
+ Facilities:
+
+ · all: All facilities.
+
+
+ · config: Configuration activies.
+
+
+ · core: Core forwarder, such as startup and shutdown.
+
+
+ · io: Listeners, connections, and all I/O related activi‐
+ ties.
+
+
+ · message: CCNx messages, such as parsing.
+
+
+ · processor: Forwarding processor, such as CS, FIB, and
+ PIT activities.
+
+
+
+ The log levels are: debug, info, notice, warning, error,
+ critical, alert, off.
+
+
+ --log-file _l_o_g_f_i_l_e
+ Specifies the _l_o_g_f_i_l_e to write all log messages.
+ This parameter is required with _-_-_d_a_e_m_o_n mode.
+
+
+ --port _p_o_r_t
+ The UDP and TCP port to listen on. If no _c_o_n_f_i_g_f_i_l_e
+ is specified, Metis will listen on this port on all inter‐
+ faces including localhost.
+
+
+ If this parameter is not given, Metis uses the default port
+ 9695.
+
+
+UUSSAAGGEE
+ mmeettiiss__ddaaeemmoonn --config metis.cfg --log all=info --log config=debug
+ --log-file metis.log
+
+
+SSEEEE AALLSSOO
+ See mmeettiiss__ccoonnttrrooll((11)) for a description of how to configure mmeettiiss__ddaaee‐‐
+ mmoonn.
+
+
+ For a list of all configuration lines that may be used with mmeettiiss__ccoonn‐‐
+ ttrrooll and by _-_-_c_o_n_f_i_g configuration file, see mmeettiiss..ccffgg((55)).
+
+
+CCAAVVEEAATTSS
+ · A given interface may only have one Ethernet listener on one
+ EtherType.
+
+
+ · If there are multiple longest matching prefix entries that match
+ an Interest, it will be forwarded to all those routes (i.e. mul‐
+ ticast).
+
+
+ · Ethernet fragmentation will only use the interface MTU and there
+ is not MTU discovery. If Metis is used in a bridged environment,
+ this may lead to errors if the MTU changes on different segments,
+ such as a 10G link at 9000 bytes and a 100 Mbps link at 1500
+ bytes.
+
+
+BBUUGGSS
+ · Adding the same listener twice will cause Metis to crash.
+
+
+ · Errors in the configuration file may cause Metis to crash.
+
+
+ · The command 'list connections' will display all connections as
+ TCP encapsulation.
+
+
+AAUUTTHHOORR
+ Marc Mosko Palo Alto Research Center
+
+
+
+ mmeettiiss__ddaaeemmoonn (1)
diff --git a/metis/documentation/metis.doctags b/metis/documentation/metis.doctags
new file mode 100644
index 00000000..bfc82647
--- /dev/null
+++ b/metis/documentation/metis.doctags
@@ -0,0 +1,2535 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
+<tagfile>
+ <compound kind="file">
+ <name>metis_CommandLineInterface.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___command_line_interface_8h</filename>
+ <member kind="function">
+ <type>MetisCommandLineInterface *</type>
+ <name>metisCommandLineInterface_Create</name>
+ <anchorfile>metis___command_line_interface_8h.html</anchorfile>
+ <anchor>a507100a2eb182e879182d8c7ef7a83bf</anchor>
+ <arglist>(MetisForwarder *metis, uint16_t port)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisCommandLineInterface_Destroy</name>
+ <anchorfile>metis___command_line_interface_8h.html</anchorfile>
+ <anchor>a1c21ace75da716c55253bbc544198121</anchor>
+ <arglist>(MetisCommandLineInterface **cliPtr)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_CommandOps.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___command_ops_8h</filename>
+ <includes id="metis___command_return_8h" name="metis_CommandReturn.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_CommandReturn.h</includes>
+ <class kind="struct">metis_command_ops</class>
+ <member kind="function">
+ <type>MetisCommandOps *</type>
+ <name>metisCommandOps_Create</name>
+ <anchorfile>metis___command_ops_8h.html</anchorfile>
+ <anchor>a460a77764ab96dbe960465c670038c2e</anchor>
+ <arglist>(void *closure, const char *command, void(*init)(struct metis_command_parser *parser, MetisCommandOps *ops), MetisCommandReturn(*execute)(struct metis_command_parser *parser, MetisCommandOps *ops, PARCList *args), void(*destroyer)(MetisCommandOps **opsPtr))</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisCommandOps_Destroy</name>
+ <anchorfile>metis___command_ops_8h.html</anchorfile>
+ <anchor>ae5e8adaf088328e346ea831735cb0e75</anchor>
+ <arglist>(MetisCommandOps **opsPtr)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_CommandParser.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___command_parser_8h</filename>
+ <includes id="metis___command_return_8h" name="metis_CommandReturn.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_CommandReturn.h</includes>
+ <includes id="metis___command_ops_8h" name="metis_CommandOps.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_CommandOps.h</includes>
+ <member kind="function">
+ <type>MetisCommandParser *</type>
+ <name>metisCommandParser_Create</name>
+ <anchorfile>metis___command_parser_8h.html</anchorfile>
+ <anchor>a44dcdf60ae4d9118a6a769c858df23eb</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisCommandParser_Destroy</name>
+ <anchorfile>metis___command_parser_8h.html</anchorfile>
+ <anchor>a2f5021ae0fc62a743164cf3fdc971526</anchor>
+ <arglist>(MetisCommandParser **statePtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisCommandParser_RegisterCommand</name>
+ <anchorfile>metis___command_parser_8h.html</anchorfile>
+ <anchor>a940f9f340d5c83de0926eaa9d98ca0e8</anchor>
+ <arglist>(MetisCommandParser *state, MetisCommandOps *command)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisCommandReturn</type>
+ <name>metisCommandParser_DispatchCommand</name>
+ <anchorfile>metis___command_parser_8h.html</anchorfile>
+ <anchor>a89912d93eff7fc70edb9613551b41dbb</anchor>
+ <arglist>(MetisCommandParser *state, PARCList *args)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisCommandParser_SetDebug</name>
+ <anchorfile>metis___command_parser_8h.html</anchorfile>
+ <anchor>a9ea10b379a52313ad290a088051a2dcc</anchor>
+ <arglist>(MetisCommandParser *state, bool debugFlag)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisCommandParser_GetDebug</name>
+ <anchorfile>metis___command_parser_8h.html</anchorfile>
+ <anchor>a49e8533a529047d9781cba77279e2c38</anchor>
+ <arglist>(MetisCommandParser *state)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisCommandParser_ContainsCommand</name>
+ <anchorfile>metis___command_parser_8h.html</anchorfile>
+ <anchor>a12b1473cf6169833adde186a6cc5801b</anchor>
+ <arglist>(MetisCommandParser *parser, const char *command)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_CommandReturn.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___command_return_8h</filename>
+ </compound>
+ <compound kind="file">
+ <name>metis_Configuration.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___configuration_8h</filename>
+ <member kind="function">
+ <type>MetisConfiguration *</type>
+ <name>metisConfiguration_Create</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a6382879264adb58b9f2a3c83ce68ecdf</anchor>
+ <arglist>(MetisForwarder *metis)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConfiguration_Destroy</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a906d7d9d6d73dbeebbdc143a99093552</anchor>
+ <arglist>(MetisConfiguration **configPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConfiguration_Receive</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>aa881601d3b38400c4f0e840b159ee714</anchor>
+ <arglist>(MetisConfiguration *config, MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>CCNxControl *</type>
+ <name>metisConfiguration_ReceiveControl</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a1792d16c3672844069c02f76d50bcdb0</anchor>
+ <arglist>(MetisConfiguration *config, CCNxControl *request, unsigned ingressId)</arglist>
+ </member>
+ <member kind="function">
+ <type>CCNxJson *</type>
+ <name>metisConfiguration_GetVersion</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a7b6f0cbd8bdadf8d228bc866c1294bd4</anchor>
+ <arglist>(MetisConfiguration *config)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConfiguration_StartCLI</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a7c3b48170736c7a2b0554783e85c1100</anchor>
+ <arglist>(MetisConfiguration *config, uint16_t port)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisConfiguration_GetObjectStoreSize</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a3e81e392888558dc354dae53754f4025</anchor>
+ <arglist>(MetisConfiguration *config)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConfiguration_SetObjectStoreSize</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a0c48eb7e4f055f4b700b755cf5ce019e</anchor>
+ <arglist>(MetisConfiguration *config, size_t maximumContentObjectCount)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisForwarder *</type>
+ <name>metisConfiguration_GetForwarder</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>a161b6c11a69aae4422129d76ab40d487</anchor>
+ <arglist>(const MetisConfiguration *config)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisLogger *</type>
+ <name>metisConfiguration_GetLogger</name>
+ <anchorfile>metis___configuration_8h.html</anchorfile>
+ <anchor>acf15e9d246eed9fe88e15025e1ca159a</anchor>
+ <arglist>(const MetisConfiguration *config)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_ConfigurationFile.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___configuration_file_8h</filename>
+ <member kind="function">
+ <type>MetisConfigurationFile *</type>
+ <name>metisConfigurationFile_Create</name>
+ <anchorfile>metis___configuration_file_8h.html</anchorfile>
+ <anchor>aad7f425066389a09ec3b6ae85d526646</anchor>
+ <arglist>(MetisForwarder *metis, const char *filename)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisConfigurationFile_Process</name>
+ <anchorfile>metis___configuration_file_8h.html</anchorfile>
+ <anchor>ae67bdc76440f4f9e1e6297718802d400</anchor>
+ <arglist>(MetisConfigurationFile *configFile)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConfigurationFile_Release</name>
+ <anchorfile>metis___configuration_file_8h.html</anchorfile>
+ <anchor>a7524aea54c34d0504b8bf2d7221e0dcf</anchor>
+ <arglist>(MetisConfigurationFile **configFilePtr)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_ConfigurationListeners.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___configuration_listeners_8h</filename>
+ <includes id="metis___configuration_8h" name="metis_Configuration.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_Configuration.h</includes>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConfigurationListeners_SetupAll</name>
+ <anchorfile>metis___configuration_listeners_8h.html</anchorfile>
+ <anchor>a551220b4be78393ab80a7469a0205294</anchor>
+ <arglist>(const MetisConfiguration *config, uint16_t port, const char *localPath)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_ControlState.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___control_state_8h</filename>
+ <includes id="metis___command_parser_8h" name="metis_CommandParser.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_CommandParser.h</includes>
+ <member kind="function">
+ <type>MetisControlState *</type>
+ <name>metisControlState_Create</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>adb162154a9a7dbe7be3ea71b6c069844</anchor>
+ <arglist>(void *userdata, CCNxMetaMessage *(*writeRead)(void *userdata, CCNxMetaMessage *msg))</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisControlState_Destroy</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>a4dbc825fa9713b135d71fbffb4bb6b9e</anchor>
+ <arglist>(MetisControlState **statePtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisControlState_RegisterCommand</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>a087045ff79c7a98e089fe68c2573c3fc</anchor>
+ <arglist>(MetisControlState *state, MetisCommandOps *command)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisCommandReturn</type>
+ <name>metisControlState_DispatchCommand</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>ad33ee7773e4de244a7a4fa7cd5a2ab2e</anchor>
+ <arglist>(MetisControlState *state, PARCList *args)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>metisControlState_Interactive</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>a1f7288a5b94bdc1db5839bc7ad9541d0</anchor>
+ <arglist>(MetisControlState *state)</arglist>
+ </member>
+ <member kind="function">
+ <type>CCNxMetaMessage *</type>
+ <name>metisControlState_WriteRead</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>af6cb12f3b67209d0b4fabbe80cca92df</anchor>
+ <arglist>(MetisControlState *state, CCNxMetaMessage *msg)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisControlState_SetDebug</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>ad2b0757b736e33bb8ac74716e57082b8</anchor>
+ <arglist>(MetisControlState *state, bool debugFlag)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisControlState_GetDebug</name>
+ <anchorfile>metis___control_state_8h.html</anchorfile>
+ <anchor>a440772afa7a4513c4496d2e10093093f</anchor>
+ <arglist>(MetisControlState *state)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_SymbolicNameTable.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis___symbolic_name_table_8h</filename>
+ <member kind="function">
+ <type>MetisSymbolicNameTable *</type>
+ <name>metisSymbolicNameTable_Create</name>
+ <anchorfile>metis___symbolic_name_table_8h.html</anchorfile>
+ <anchor>a2dddf35b3d2284db5a9bac3d493f37e1</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisSymbolicNameTable_Destroy</name>
+ <anchorfile>metis___symbolic_name_table_8h.html</anchorfile>
+ <anchor>a7e5d4926fb584639b6b80cb99a9c34a8</anchor>
+ <arglist>(MetisSymbolicNameTable **tablePtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisSymbolicNameTable_Exists</name>
+ <anchorfile>metis___symbolic_name_table_8h.html</anchorfile>
+ <anchor>a6e7c36b832fe8faadaa9bfe8e06f3802</anchor>
+ <arglist>(MetisSymbolicNameTable *table, const char *symbolicName)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisSymbolicNameTable_Add</name>
+ <anchorfile>metis___symbolic_name_table_8h.html</anchorfile>
+ <anchor>a5725f161f69820a91dcccfd0b109f326</anchor>
+ <arglist>(MetisSymbolicNameTable *table, const char *symbolicName, unsigned connid)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned</type>
+ <name>metisSymbolicNameTable_Get</name>
+ <anchorfile>metis___symbolic_name_table_8h.html</anchorfile>
+ <anchor>ac28d095e65cf9051d4afa82a7cb7b12c</anchor>
+ <arglist>(MetisSymbolicNameTable *table, const char *symbolicName)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_Add.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___add_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_AddConnection.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___add_connection_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_AddListener.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___add_listener_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_AddRoute.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___add_route_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_List.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___list_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_ListConnections.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___list_connections_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_ListInterfaces.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___list_interfaces_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_ListRoutes.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___list_routes_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_Quit.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___quit_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_Remove.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___remove_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_RemoveConnection.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___remove_connection_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_RemoveRoute.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___remove_route_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_Root.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___root_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_Set.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___set_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_SetDebug.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___set_debug_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_Unset.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___unset_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metisControl_UnsetDebug.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>metis_control___unset_debug_8h</filename>
+ <includes id="metis___control_state_8h" name="metis_ControlState.h" local="no" imported="no">ccnx/forwarder/metis/config/metis_ControlState.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metis_LruList.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/content_store/</path>
+ <filename>metis___lru_list_8h</filename>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLruList_EntryDestroy</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>aac95f183695fef8ad382a3650fd6b1bd</anchor>
+ <arglist>(MetisLruListEntry **entryPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLruList_EntryMoveToHead</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>a6287e1810508a80faca8cfea13099f39</anchor>
+ <arglist>(MetisLruListEntry *entry)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>metisLruList_EntryGetData</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>aeede642d3ff01e95c598d90e6272dc63</anchor>
+ <arglist>(MetisLruListEntry *entry)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisLruList *</type>
+ <name>metisLruList_Create</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>af2135dc2ff89bb768fd17ebe11a3fd03</anchor>
+ <arglist>()</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLruList_Destroy</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>a6f6253a61e76f3ee2410fdf3919f015a</anchor>
+ <arglist>(MetisLruList **listPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisLruList_Length</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>ac0f77c6fbe79441bd78ea24d3300dabf</anchor>
+ <arglist>(const MetisLruList *lru)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisLruListEntry *</type>
+ <name>metisLruList_NewHeadEntry</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>a6e3c09a439db12b26d727246deb6680a</anchor>
+ <arglist>(MetisLruList *lru, void *data)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisLruListEntry *</type>
+ <name>metisLruList_PopTail</name>
+ <anchorfile>metis___lru_list_8h.html</anchorfile>
+ <anchor>ab4e2336b038c192d012d33c6ead013b2</anchor>
+ <arglist>(MetisLruList *list)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_Connection.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core/</path>
+ <filename>metis___connection_8h</filename>
+ <includes id="metis___message_8h" name="metis_Message.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Message.h</includes>
+ <member kind="function">
+ <type>MetisConnection *</type>
+ <name>metisConnection_Create</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>a6603f61a89df25768f7ead85db061f43</anchor>
+ <arglist>(MetisIoOperations *ops)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConnection_Release</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>abf256e4e94de6add9565cc9e0e515a37</anchor>
+ <arglist>(MetisConnection **connectionPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisConnection *</type>
+ <name>metisConnection_Acquire</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>a0e036fa4608a82b809646207eb0ec9fa</anchor>
+ <arglist>(MetisConnection *connection)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisConnection_Send</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>a485ea3bdab9a0a0b50e2278071dbb8a0</anchor>
+ <arglist>(const MetisConnection *conn, MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisIoOperations *</type>
+ <name>metisConnection_GetIoOperations</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>ade5998d00c4ed27c48d94786bd2d1f40</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned</type>
+ <name>metisConnection_GetConnectionId</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>af6fb4f96acef9766c2ab85b01de95ba0</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ <member kind="function">
+ <type>const MetisAddressPair *</type>
+ <name>metisConnection_GetAddressPair</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>a82c0a608ec7ab99752b67173819bf5e0</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisConnection_IsUp</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>a975463f86fa17d31e13a5c0fbd2bd195</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisConnection_IsLocal</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>adcd74cc8e59c28710df647b4d4aea1cb</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ <member kind="function">
+ <type>const void *</type>
+ <name>metisConnection_Class</name>
+ <anchorfile>metis___connection_8h.html</anchorfile>
+ <anchor>a3801ef3ec37c0bf8d60cfbd3a0b03e4a</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_ConnectionList.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core/</path>
+ <filename>metis___connection_list_8h</filename>
+ <includes id="metis___connection_8h" name="metis_Connection.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Connection.h</includes>
+ <member kind="function">
+ <type>MetisConnectionList *</type>
+ <name>metisConnectionList_Create</name>
+ <anchorfile>metis___connection_list_8h.html</anchorfile>
+ <anchor>a31b395f7a4af32660344d563bbce757b</anchor>
+ <arglist>()</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConnectionList_Destroy</name>
+ <anchorfile>metis___connection_list_8h.html</anchorfile>
+ <anchor>a568d3b93704eec4a087ff6ca12f63a25</anchor>
+ <arglist>(MetisConnectionList **listPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisConnectionList_Append</name>
+ <anchorfile>metis___connection_list_8h.html</anchorfile>
+ <anchor>ab7fd2bdb3f46cac78ecca5a74a5b41cd</anchor>
+ <arglist>(MetisConnectionList *list, MetisConnection *entry)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisConnectionList_Length</name>
+ <anchorfile>metis___connection_list_8h.html</anchorfile>
+ <anchor>adb36c5596eb3799d9432785d299b5429</anchor>
+ <arglist>(const MetisConnectionList *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisConnection *</type>
+ <name>metisConnectionList_Get</name>
+ <anchorfile>metis___connection_list_8h.html</anchorfile>
+ <anchor>a43955c9189c58998dd2e7f8691582c16</anchor>
+ <arglist>(MetisConnectionList *list, size_t index)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_ConnectionManager.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core/</path>
+ <filename>metis___connection_manager_8h</filename>
+ </compound>
+ <compound kind="file">
+ <name>metis_Logger.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core/</path>
+ <filename>metis___logger_8h</filename>
+ <member kind="enumeration">
+ <type></type>
+ <name>MetisLoggerFacility</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>af6f96978398c78b149d59db816f07de1</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>metisLogger_FacilityString</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>a78d7a12025012a82cb4af7a9f737b7b0</anchor>
+ <arglist>(MetisLoggerFacility facility)</arglist>
+ </member>
+ <member kind="function">
+ <type>const char *</type>
+ <name>metisLogger_LevelString</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>a9e36241234b77c2bc1bec0287758cce6</anchor>
+ <arglist>(PARCLogLevel level)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisLogger *</type>
+ <name>metisLogger_Create</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>af47b695f9249597bf3c1842d94f6c624</anchor>
+ <arglist>(PARCLogReporter *reporter, const PARCClock *clock)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLogger_Release</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>a9187428da1b126545d6f955a027f6b7b</anchor>
+ <arglist>(MetisLogger **loggerPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisLogger *</type>
+ <name>metisLogger_Acquire</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>a98867a5fd7b465b272820eb428d5bbf2</anchor>
+ <arglist>(const MetisLogger *logger)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLogger_SetLogLevel</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>ab30f66c50692ea6a6635a8a7742d0df9</anchor>
+ <arglist>(MetisLogger *logger, MetisLoggerFacility facility, PARCLogLevel minimumLevel)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisLogger_IsLoggable</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>add0c57181f96fbbbc6b4acae28c18bd8</anchor>
+ <arglist>(const MetisLogger *logger, MetisLoggerFacility facility, PARCLogLevel level)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLogger_Log</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>a0f3586d53e29fe5866c0f73cfd6d501d</anchor>
+ <arglist>(MetisLogger *logger, MetisLoggerFacility facility, PARCLogLevel level, const char *module, const char *format,...)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLogger_SetReporter</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>af15286afa1e2aaa4ca9abb49c5ac83fb</anchor>
+ <arglist>(MetisLogger *logger, PARCLogReporter *reporter)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisLogger_SetClock</name>
+ <anchorfile>metis___logger_8h.html</anchorfile>
+ <anchor>a83ad23793dfb55fceb99f7f52d61db93</anchor>
+ <arglist>(MetisLogger *logger, PARCClock *clock)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_Message.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core/</path>
+ <filename>metis___message_8h</filename>
+ <includes id="metis___tlv_name_8h" name="metis_TlvName.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_TlvName.h</includes>
+ <includes id="metis___tlv_8h" name="metis_Tlv.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_Tlv.h</includes>
+ <includes id="metis___ticks_8h" name="metis_Ticks.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Ticks.h</includes>
+ <member kind="function">
+ <type>MetisMessage *</type>
+ <name>metisMessage_ReadFromBuffer</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>af1ba0c2c77778536302768b60581f33d</anchor>
+ <arglist>(unsigned ingressConnectionId, MetisTicks receiveTime, PARCEventBuffer *input, size_t bytesToRead, MetisLogger *logger)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessage *</type>
+ <name>metisMessage_CreateFromBuffer</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a58d74b697b257ecce0fdc1deda7b978d</anchor>
+ <arglist>(unsigned ingressConnectionId, MetisTicks receiveTime, PARCEventBuffer *input, MetisLogger *logger)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessage *</type>
+ <name>metisMessage_CreateFromArray</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a2331b2752913632c0fc461871b37fe0f</anchor>
+ <arglist>(const uint8_t *data, size_t dataLength, unsigned ingressConnectionId, MetisTicks receiveTime, MetisLogger *logger)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessage *</type>
+ <name>metisMessage_CreateFromParcBuffer</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a1913c53ddfb3d4e782aac2ff52ddf6e7</anchor>
+ <arglist>(PARCBuffer *buffer, unsigned ingressConnectionId, MetisTicks receiveTime, MetisLogger *logger)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessage *</type>
+ <name>metisMessage_Acquire</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ae8e12171638e6d3a42a275efcd0fde6f</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessage_Release</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a05b9016dc77bd595ca42339a9b80584b</anchor>
+ <arglist>(MetisMessage **messagePtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_Write</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>aca1cbf7c196aaabf5e09245dd643e4cb</anchor>
+ <arglist>(PARCEventQueue *parcEventQueue, const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_Append</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ab39329d85848606adcfc2f70872b0444</anchor>
+ <arglist>(PARCEventBuffer *parcEventBuffer, const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisMessage_Length</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>af75f7f14b19e383907789aaa50b37470</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned</type>
+ <name>metisMessage_GetIngressConnectionId</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a2de1d0d0d08b0098a5fd31b362dbc146</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTicks</type>
+ <name>metisMessage_GetReceiveTime</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a1a401cf498ea2898c2f704fbc6130786</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessagePacketType</type>
+ <name>metisMessage_GetType</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ac8c3ed3c2fc9cda599ada528a20cd987</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasHopLimit</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a943fcc9ecbcbf05a42e6da22c4404a35</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>uint8_t</type>
+ <name>metisMessage_GetHopLimit</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ac8fe16cbe8451cc97d09d06a7a2d7a83</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessage_SetHopLimit</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ac53c411fd47fd57d22e072c48b18532c</anchor>
+ <arglist>(MetisMessage *message, uint8_t hoplimit)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvName *</type>
+ <name>metisMessage_GetName</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ab334cff141390ae4dd7536d55d948f2f</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_GetKeyIdHash</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ac302163f97228e48f99df48bea3458e7</anchor>
+ <arglist>(const MetisMessage *message, uint32_t *hashOutput)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_KeyIdEquals</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a019587b74d0780f432a984dbab4b4ccd</anchor>
+ <arglist>(const MetisMessage *a, const MetisMessage *b)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_ObjectHashEquals</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a42c2f3747020ecf00750d9785199c47a</anchor>
+ <arglist>(MetisMessage *a, MetisMessage *b)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_GetContentObjectHashHash</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ae658db6490ad9eafbf553bcbfdce1003</anchor>
+ <arglist>(MetisMessage *message, uint32_t *hashOutput)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasName</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a169de2b5541bb03567c7b3825d979023</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasKeyId</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a66586d7d04d83636e789a31c7675ea99</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasContentObjectHash</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ae437157cc6ec1fdbf64d2c561eb93d45</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>CCNxControl *</type>
+ <name>metisMessage_CreateControlMessage</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a4cc897a70a843bd5b051ddc5c5cc51a3</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasInterestLifetime</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>aa7b34ad79743ac61edd03b1463792e23</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>uint64_t</type>
+ <name>metisMessage_GetInterestLifetimeTicks</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a6757de2026b67d6a447117a448d3809a</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasRecommendedCacheTime</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a873a581cded8a51594a9a4686222b7dd</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>uint64_t</type>
+ <name>metisMessage_GetRecommendedCacheTimeTicks</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>aa0dde4efb311707b0f768c7a03c2dcbd</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasExpiryTime</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a4a97ddf76749006df702b9848adb3911</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>uint64_t</type>
+ <name>metisMessage_GetExpiryTimeTicks</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>ae2d52b47bed547b3506f1c4dc444dcb8</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessage_SetExpiryTimeTicks</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a6675444d2dbb17b4189731703f8a83d5</anchor>
+ <arglist>(MetisMessage *message, uint64_t expiryTimeTicks)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessage_SetRecommendedCacheTimeTicks</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>aaa1d77c618f5a1750e0d6e71384a1ae4</anchor>
+ <arglist>(MetisMessage *message, uint64_t recommendedCacheTimeTicks)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessage_HasFragmentPayload</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a40abfa45c5f7126090529189b674cf6a</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisMessage_AppendFragmentPayload</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a4ad30e42d4f8bcd5c60bd7ce49f07dc7</anchor>
+ <arglist>(const MetisMessage *message, PARCEventBuffer *buffer)</arglist>
+ </member>
+ <member kind="function">
+ <type>const uint8_t *</type>
+ <name>metisMessage_FixedHeader</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a63900417d180f9f794aace5cd209065b</anchor>
+ <arglist>(const MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessage *</type>
+ <name>metisMessage_Slice</name>
+ <anchorfile>metis___message_8h.html</anchorfile>
+ <anchor>a3b5f3b0011981cce787aff21632716f8</anchor>
+ <arglist>(const MetisMessage *message, size_t offset, size_t length, size_t headerLength, const uint8_t header[headerLength])</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_Ticks.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core/</path>
+ <filename>metis___ticks_8h</filename>
+ </compound>
+ <compound kind="file">
+ <name>metis_EtherConnection.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___ether_connection_8h</filename>
+ <includes id="metis___connection_8h" name="metis_Connection.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Connection.h</includes>
+ <member kind="function">
+ <type>MetisIoOperations *</type>
+ <name>metisEtherConnection_Create</name>
+ <anchorfile>metis___ether_connection_8h.html</anchorfile>
+ <anchor>a51a1a7ff06cae62f87f4d77d68ac8e5a</anchor>
+ <arglist>(MetisForwarder *metis, MetisGenericEther *ether, MetisAddressPair *pair)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisHopByHopFragmenter *</type>
+ <name>metisEtherConnection_GetFragmenter</name>
+ <anchorfile>metis___ether_connection_8h.html</anchorfile>
+ <anchor>a4b3a91b679cda4448afa93b270769ec8</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisEtherConnection_IsInstanceOf</name>
+ <anchorfile>metis___ether_connection_8h.html</anchorfile>
+ <anchor>a12ebd7ff845647c94b7b71fdacb3f7e7</anchor>
+ <arglist>(const MetisConnection *conn)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_EtherListener.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___ether_listener_8h</filename>
+ <member kind="function">
+ <type>MetisListenerOps *</type>
+ <name>metisEtherListener_Create</name>
+ <anchorfile>metis___ether_listener_8h.html</anchorfile>
+ <anchor>a52b483bd66c7f105d1a0249dae5f623d</anchor>
+ <arglist>(MetisForwarder *metis, const char *deviceName, uint16_t ethertype)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisGenericEther *</type>
+ <name>metisEtherListener_GetGenericEtherFromListener</name>
+ <anchorfile>metis___ether_listener_8h.html</anchorfile>
+ <anchor>a879b79f29b8689fd60d3d5c3ad3dc8d7</anchor>
+ <arglist>(MetisListenerOps *listenerOps)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_Ethernet.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___ethernet_8h</filename>
+ <member kind="define">
+ <type>#define</type>
+ <name>metisEthernet_IsValidEthertype</name>
+ <anchorfile>metis___ethernet_8h.html</anchorfile>
+ <anchor>abda02e865e5d9949944f561b39a6e319</anchor>
+ <arglist>(ethertype)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_Listener.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___listener_8h</filename>
+ <class kind="struct">metis_listener_ops</class>
+ <member kind="enumeration">
+ <type></type>
+ <name>MetisEncapType</name>
+ <anchorfile>metis___listener_8h.html</anchorfile>
+ <anchor>a4fa21327f3898624d3c5ed5216285822</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <type>@</type>
+ <name>METIS_ENCAP_TCP</name>
+ <anchorfile>metis___listener_8h.html</anchorfile>
+ <anchor>a4fa21327f3898624d3c5ed5216285822a39bb3c63c5d5ca812d7310a99fefc438</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <type>@</type>
+ <name>METIS_ENCAP_UDP</name>
+ <anchorfile>metis___listener_8h.html</anchorfile>
+ <anchor>a4fa21327f3898624d3c5ed5216285822a0cc713e4c4392a6ed11fabb0c0a66e02</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <type>@</type>
+ <name>METIS_ENCAP_ETHER</name>
+ <anchorfile>metis___listener_8h.html</anchorfile>
+ <anchor>a4fa21327f3898624d3c5ed5216285822a634e9642385bafbac465f1654b7124b5</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="enumvalue">
+ <type>@</type>
+ <name>METIS_ENCAP_LOCAL</name>
+ <anchorfile>metis___listener_8h.html</anchorfile>
+ <anchor>a4fa21327f3898624d3c5ed5216285822a0286a0c76eeb875b7a7a24c20f24a9d6</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_ListenerSet.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___listener_set_8h</filename>
+ <includes id="metis___listener_8h" name="metis_Listener.h" local="no" imported="no">ccnx/forwarder/metis/io/metis_Listener.h</includes>
+ <member kind="function">
+ <type>MetisListenerSet *</type>
+ <name>metisListenerSet_Create</name>
+ <anchorfile>metis___listener_set_8h.html</anchorfile>
+ <anchor>a888a097e8ff73ab563032c274cae58a0</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisListenerSet_Destroy</name>
+ <anchorfile>metis___listener_set_8h.html</anchorfile>
+ <anchor>a7adae3c77b503356eaf0968be7afd91d</anchor>
+ <arglist>(MetisListenerSet **setPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisListenerSet_Add</name>
+ <anchorfile>metis___listener_set_8h.html</anchorfile>
+ <anchor>a6a254efd06f00ef6f76ea833e8b17720</anchor>
+ <arglist>(MetisListenerSet *set, MetisListenerOps *ops)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisListenerSet_Length</name>
+ <anchorfile>metis___listener_set_8h.html</anchorfile>
+ <anchor>aeb43bcfe0903a82adce80f27cce17a12</anchor>
+ <arglist>(const MetisListenerSet *set)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisListenerOps *</type>
+ <name>metisListenerSet_Get</name>
+ <anchorfile>metis___listener_set_8h.html</anchorfile>
+ <anchor>aea935badcab88442e08f282ded488cd0</anchor>
+ <arglist>(const MetisListenerSet *set, size_t index)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisListenerOps *</type>
+ <name>metisListenerSet_Find</name>
+ <anchorfile>metis___listener_set_8h.html</anchorfile>
+ <anchor>acdcff31c310e9e80ca67b2072d07e9c7</anchor>
+ <arglist>(const MetisListenerSet *set, MetisEncapType encapType, const CPIAddress *localAddress)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_TcpListener.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___tcp_listener_8h</filename>
+ <includes id="metis___listener_8h" name="metis_Listener.h" local="no" imported="no">ccnx/forwarder/metis/io/metis_Listener.h</includes>
+ </compound>
+ <compound kind="file">
+ <name>metis_TcpTunnel.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___tcp_tunnel_8h</filename>
+ <member kind="function">
+ <type>MetisIoOperations *</type>
+ <name>metisTcpTunnel_Create</name>
+ <anchorfile>metis___tcp_tunnel_8h.html</anchorfile>
+ <anchor>ac86a8b944b3b4591f4b726a41020c687</anchor>
+ <arglist>(MetisForwarder *metis, const CPIAddress *localAddress, const CPIAddress *remoteAddress)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_UdpConnection.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___udp_connection_8h</filename>
+ <member kind="function">
+ <type>MetisIoOperations *</type>
+ <name>metisUdpConnection_Create</name>
+ <anchorfile>metis___udp_connection_8h.html</anchorfile>
+ <anchor>a0d1f779354382c3b2f5b3410b01ccece</anchor>
+ <arglist>(MetisForwarder *metis, int fd, const MetisAddressPair *pair, bool isLocal)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_UdpTunnel.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>metis___udp_tunnel_8h</filename>
+ <includes id="metis___listener_8h" name="metis_Listener.h" local="no" imported="no">ccnx/forwarder/metis/io/metis_Listener.h</includes>
+ <member kind="function">
+ <type>MetisIoOperations *</type>
+ <name>metisUdpTunnel_CreateOnListener</name>
+ <anchorfile>metis___udp_tunnel_8h.html</anchorfile>
+ <anchor>ad512a131944415d7dab6eeafa5bcaf48</anchor>
+ <arglist>(MetisForwarder *metis, MetisListenerOps *localListener, const CPIAddress *remoteAddress)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisIoOperations *</type>
+ <name>metisUdpTunnel_Create</name>
+ <anchorfile>metis___udp_tunnel_8h.html</anchorfile>
+ <anchor>a8edb7d377a2bfddc22f008f05ca05c64</anchor>
+ <arglist>(MetisForwarder *metis, const CPIAddress *localAddress, const CPIAddress *remoteAddress)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_MessengerRecipient.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/messenger/</path>
+ <filename>metis___messenger_recipient_8h</filename>
+ <member kind="typedef">
+ <type>void(</type>
+ <name>MetisMessengerRecipientCallback</name>
+ <anchorfile>metis___messenger_recipient_8h.html</anchorfile>
+ <anchor>addc508a682ebbc3c86ccdd7b4cdb78e8</anchor>
+ <arglist>)(MetisMessengerRecipient *recipient, MetisMissive *missive)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessengerRecipient *</type>
+ <name>metisMessengerRecipient_Create</name>
+ <anchorfile>metis___messenger_recipient_8h.html</anchorfile>
+ <anchor>a6e8d6204375a0a5c6776e67bc33ae617</anchor>
+ <arglist>(void *recipientContext, MetisMessengerRecipientCallback *recipientCallback)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessengerRecipient_Destroy</name>
+ <anchorfile>metis___messenger_recipient_8h.html</anchorfile>
+ <anchor>a5b497060ec18af2e63272b24ca546072</anchor>
+ <arglist>(MetisMessengerRecipient **recipientPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void *</type>
+ <name>metisMessengerRecipient_GetRecipientContext</name>
+ <anchorfile>metis___messenger_recipient_8h.html</anchorfile>
+ <anchor>a16a2252f9e965188209b7947c6843808</anchor>
+ <arglist>(MetisMessengerRecipient *recipient)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessengerRecipient_Deliver</name>
+ <anchorfile>metis___messenger_recipient_8h.html</anchorfile>
+ <anchor>ace08bf3dfd8e6b0fe9d2a1e3fe42a449</anchor>
+ <arglist>(MetisMessengerRecipient *recipient, MetisMissive *missive)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_Missive.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/messenger/</path>
+ <filename>metis___missive_8h</filename>
+ <member kind="function">
+ <type>MetisMissive *</type>
+ <name>metisMissive_Create</name>
+ <anchorfile>metis___missive_8h.html</anchorfile>
+ <anchor>a6f59ac32c5bc215445f7748170a0ebf3</anchor>
+ <arglist>(MetisMissiveType missiveType, unsigned connectionid)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMissive *</type>
+ <name>metisMissive_Acquire</name>
+ <anchorfile>metis___missive_8h.html</anchorfile>
+ <anchor>aa06bd2d655623d71f2fc9e045ec1d588</anchor>
+ <arglist>(MetisMissive *missive)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMissive_Release</name>
+ <anchorfile>metis___missive_8h.html</anchorfile>
+ <anchor>a56e43f3512c1a5173f7a6be3f2bca02a</anchor>
+ <arglist>(MetisMissive **missivePtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMissiveType</type>
+ <name>metisMissive_GetType</name>
+ <anchorfile>metis___missive_8h.html</anchorfile>
+ <anchor>aeec3b360ee915c205d6ac7082cf2f528</anchor>
+ <arglist>(const MetisMissive *missive)</arglist>
+ </member>
+ <member kind="function">
+ <type>unsigned</type>
+ <name>metisMissive_GetConnectionId</name>
+ <anchorfile>metis___missive_8h.html</anchorfile>
+ <anchor>a2baafbfb9c218f079a778b3bb54cd995</anchor>
+ <arglist>(const MetisMissive *missive)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_FibEntry.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>metis___fib_entry_8h</filename>
+ <includes id="metis___tlv_name_8h" name="metis_TlvName.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_TlvName.h</includes>
+ <includes id="metis___strategy_impl_8h" name="metis_StrategyImpl.h" local="no" imported="no">ccnx/forwarder/metis/strategies/metis_StrategyImpl.h</includes>
+ <member kind="function">
+ <type>void</type>
+ <name>metisFibEntry_Release</name>
+ <anchorfile>metis___fib_entry_8h.html</anchorfile>
+ <anchor>ac92805b30d5e6fc2cfede9a06dc2e1e3</anchor>
+ <arglist>(MetisFibEntry **fibEntryPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisFibEntry *</type>
+ <name>metisFibEntry_Acquire</name>
+ <anchorfile>metis___fib_entry_8h.html</anchorfile>
+ <anchor>afaec485a9ea6412690e58855855a5d1e</anchor>
+ <arglist>(const MetisFibEntry *fibEntry)</arglist>
+ </member>
+ <member kind="function">
+ <type>const MetisNumberSet *</type>
+ <name>metisFibEntry_GetNexthops</name>
+ <anchorfile>metis___fib_entry_8h.html</anchorfile>
+ <anchor>a2e0cf8d9bd40b4b49269d1a903d724a3</anchor>
+ <arglist>(const MetisFibEntry *fibEntry)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvName *</type>
+ <name>metisFibEntry_GetPrefix</name>
+ <anchorfile>metis___fib_entry_8h.html</anchorfile>
+ <anchor>ae1d262272615ed49483cc5f919980ee5</anchor>
+ <arglist>(const MetisFibEntry *fibEntry)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_FibEntryList.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>metis___fib_entry_list_8h</filename>
+ <includes id="metis___fib_entry_8h" name="metis_FibEntry.h" local="no" imported="no">ccnx/forwarder/metis/processor/metis_FibEntry.h</includes>
+ <member kind="function">
+ <type>MetisFibEntryList *</type>
+ <name>metisFibEntryList_Create</name>
+ <anchorfile>metis___fib_entry_list_8h.html</anchorfile>
+ <anchor>aba1a3595d5b7ab176167073cbad6f4e4</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisFibEntryList_Destroy</name>
+ <anchorfile>metis___fib_entry_list_8h.html</anchorfile>
+ <anchor>ad662a9e9c30a9be17374dfef10b100d4</anchor>
+ <arglist>(MetisFibEntryList **listPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisFibEntryList_Append</name>
+ <anchorfile>metis___fib_entry_list_8h.html</anchorfile>
+ <anchor>a74edf03a8a128f758f29717e92077f3e</anchor>
+ <arglist>(MetisFibEntryList *list, MetisFibEntry *fibEntry)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisFibEntryList_Length</name>
+ <anchorfile>metis___fib_entry_list_8h.html</anchorfile>
+ <anchor>a5633fafd9ab07ba980dc4f2d54d3d592</anchor>
+ <arglist>(const MetisFibEntryList *list)</arglist>
+ </member>
+ <member kind="function">
+ <type>const MetisFibEntry *</type>
+ <name>metisFibEntryList_Get</name>
+ <anchorfile>metis___fib_entry_list_8h.html</anchorfile>
+ <anchor>a439ce4db2a9a62c79be001a34dcfcc44</anchor>
+ <arglist>(const MetisFibEntryList *list, size_t index)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_HashTableFunction.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>metis___hash_table_function_8h</filename>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisHashTableFunction_MessageNameEquals</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>aca7c7730681178d54f74772eb302e3bd</anchor>
+ <arglist>(const void *metisMessageA, const void *metisMessageB)</arglist>
+ </member>
+ <member kind="function">
+ <type>HashCodeType</type>
+ <name>metisHashTableFunction_MessageNameHashCode</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>a5dceccc2c414d9748e499b19fb6292ea</anchor>
+ <arglist>(const void *metisMessageA)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisHashTableFunction_MessageNameAndKeyIdEquals</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>ac9812e77676744fe32a0c9038dfddb26</anchor>
+ <arglist>(const void *metisMessageA, const void *metisMessageB)</arglist>
+ </member>
+ <member kind="function">
+ <type>HashCodeType</type>
+ <name>metisHashTableFunction_MessageNameAndKeyIdHashCode</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>a7e0d71646c7b040ab8a9880cb06f8d35</anchor>
+ <arglist>(const void *metisMessageA)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisHashTableFunction_MessageNameAndObjectHashEquals</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>a4bf274cc19fa9714383690903b46ca27</anchor>
+ <arglist>(const void *metisMessageA, const void *metisMessageB)</arglist>
+ </member>
+ <member kind="function">
+ <type>HashCodeType</type>
+ <name>metisHashTableFunction_MessageNameAndObjectHashHashCode</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>ab45220b34506e98acc47c1ca3f149483</anchor>
+ <arglist>(const void *metisMessageA)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisHashTableFunction_TlvNameEquals</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>ada6e88f2604322e3ca7e08cd19f9a850</anchor>
+ <arglist>(const void *metisTlvNameA, const void *metisTlvNameB)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>metisHashTableFunction_TlvNameCompare</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>a8e2f7b6257ff163c9bbbc44342e05e02</anchor>
+ <arglist>(const void *keyA, const void *keyB)</arglist>
+ </member>
+ <member kind="function">
+ <type>HashCodeType</type>
+ <name>metisHashTableFunction_TlvNameHashCode</name>
+ <anchorfile>metis___hash_table_function_8h.html</anchorfile>
+ <anchor>a790c357d95846c69d593a7344f436a80</anchor>
+ <arglist>(const void *keyA)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_MessageProcessor.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>metis___message_processor_8h</filename>
+ <includes id="metis___message_8h" name="metis_Message.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Message.h</includes>
+ <member kind="function">
+ <type>MetisMessageProcessor *</type>
+ <name>metisMessageProcessor_Create</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a93a615ea6bc0eaa9796391a12a440257</anchor>
+ <arglist>(MetisForwarder *metis)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessageProcessor_Destroy</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a130639c5131141590cf246271a4069a0</anchor>
+ <arglist>(MetisMessageProcessor **processorPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessageProcessor_Receive</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a1719693da99e24a46f92967fa8738f58</anchor>
+ <arglist>(MetisMessageProcessor *procesor, MetisMessage *message)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessageProcessor_AddTap</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>ad2f39bb814f6762e6df6da4e8f7d4e05</anchor>
+ <arglist>(MetisMessageProcessor *procesor, MetisTap *tap)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessageProcessor_RemoveTap</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a57586a65076765a69fcd6c396cf37b0c</anchor>
+ <arglist>(MetisMessageProcessor *procesor, const MetisTap *tap)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessageProcessor_AddOrUpdateRoute</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a2ab0caa2353068a9c34e5534f9b7ef3d</anchor>
+ <arglist>(MetisMessageProcessor *procesor, CPIRouteEntry *route)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisMessageProcessor_RemoveRoute</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a32c7f5ace5dd6c6be9bcbe7891b4bff3</anchor>
+ <arglist>(MetisMessageProcessor *procesor, CPIRouteEntry *route)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessageProcessor_RemoveConnectionIdFromRoutes</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a8d3826edc6b3e9086d55675af5065698</anchor>
+ <arglist>(MetisMessageProcessor *processor, unsigned connectionId)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisFibEntryList *</type>
+ <name>metisMessageProcessor_GetFibEntries</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>ad79c42f0775f44f405b56e008fef2771</anchor>
+ <arglist>(MetisMessageProcessor *processor)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisMessageProcessor_SetContentObjectStoreSize</name>
+ <anchorfile>metis___message_processor_8h.html</anchorfile>
+ <anchor>a07855c5e58e312bd8f0b32271bb3dab2</anchor>
+ <arglist>(MetisMessageProcessor *processor, size_t maximumContentStoreSize)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_PIT.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>metis___p_i_t_8h</filename>
+ <includes id="metis___message_8h" name="metis_Message.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Message.h</includes>
+ <includes id="metis___pit_entry_8h" name="metis_PitEntry.h" local="no" imported="no">ccnx/forwarder/metis/processor/metis_PitEntry.h</includes>
+ <includes id="metis___p_i_t_verdict_8h" name="metis_PITVerdict.h" local="no" imported="no">ccnx/forwarder/metis/processor/metis_PITVerdict.h</includes>
+ <member kind="function">
+ <type>MetisPIT *</type>
+ <name>metisPIT_Create</name>
+ <anchorfile>metis___p_i_t_8h.html</anchorfile>
+ <anchor>acefd4bb72e4183afe554858f750ceb3a</anchor>
+ <arglist>(MetisForwarder *metis)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisPIT_Destroy</name>
+ <anchorfile>metis___p_i_t_8h.html</anchorfile>
+ <anchor>a3239e0b50c1652ba928d7690fb13d40f</anchor>
+ <arglist>(MetisPIT **pitPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisPITVerdict</type>
+ <name>metisPIT_ReceiveInterest</name>
+ <anchorfile>metis___p_i_t_8h.html</anchorfile>
+ <anchor>ae60cb68481debaad307847d1f6d0f370</anchor>
+ <arglist>(MetisPIT *pit, MetisMessage *interestMessage)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisNumberSet *</type>
+ <name>metisPIT_SatisfyInterest</name>
+ <anchorfile>metis___p_i_t_8h.html</anchorfile>
+ <anchor>a6a36a444d61e1ac96c6cf7c03272baa6</anchor>
+ <arglist>(MetisPIT *pit, const MetisMessage *objectMessage)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisPIT_RemoveInterest</name>
+ <anchorfile>metis___p_i_t_8h.html</anchorfile>
+ <anchor>ab0414dd838d58d7619873cb339c9812c</anchor>
+ <arglist>(MetisPIT *pit, const MetisMessage *interestMessage)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisPitEntry *</type>
+ <name>metisPIT_GetPitEntry</name>
+ <anchorfile>metis___p_i_t_8h.html</anchorfile>
+ <anchor>aa74b22c67cba8e31395186aec892d592</anchor>
+ <arglist>(const MetisPIT *pit, const MetisMessage *interestMessage)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_PitEntry.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>metis___pit_entry_8h</filename>
+ <includes id="metis___ticks_8h" name="metis_Ticks.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Ticks.h</includes>
+ <includes id="metis___message_8h" name="metis_Message.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Message.h</includes>
+ <member kind="function">
+ <type>MetisPitEntry *</type>
+ <name>metisPitEntry_Create</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>a9d9bbdf46e5b0729d28e4ad57b4397c7</anchor>
+ <arglist>(MetisMessage *message, MetisTicks expiryTime)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisPitEntry_Release</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>aeb9cab48893700131c48dcd732dbc5b2</anchor>
+ <arglist>(MetisPitEntry **pitEntryPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisPitEntry *</type>
+ <name>metisPitEntry_Acquire</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>ad41668940a50b2050fd5e6a903b8d33d</anchor>
+ <arglist>(MetisPitEntry *original)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisPitEntry_AddIngressId</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>adcad3c8c3ffb19bc0e3c75b3a7a56140</anchor>
+ <arglist>(MetisPitEntry *pitEntry, unsigned ingressId)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisPitEntry_AddEgressId</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>a3dc668a819de5f87d8072342a6868e61</anchor>
+ <arglist>(MetisPitEntry *pitEntry, unsigned egressId)</arglist>
+ </member>
+ <member kind="function">
+ <type>const MetisNumberSet *</type>
+ <name>metisPitEntry_GetIngressSet</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>aea626737bb0f20d16e3d64bac5fbd88e</anchor>
+ <arglist>(const MetisPitEntry *pitEntry)</arglist>
+ </member>
+ <member kind="function">
+ <type>const MetisNumberSet *</type>
+ <name>metisPitEntry_GetEgressSet</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>a79e33eeff7e61342a2efc4c1b2f22a96</anchor>
+ <arglist>(const MetisPitEntry *pitEntry)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisMessage *</type>
+ <name>metisPitEntry_GetMessage</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>aa615be358bd8824120991dab996615b0</anchor>
+ <arglist>(const MetisPitEntry *pitEntry)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTicks</type>
+ <name>metisPitEntry_GetExpiryTime</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>ae13a59ec410028a7d10a89beef40c334</anchor>
+ <arglist>(const MetisPitEntry *pitEntry)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisPitEntry_SetExpiryTime</name>
+ <anchorfile>metis___pit_entry_8h.html</anchorfile>
+ <anchor>a503d85ec7345a1152aa127ef8f4966b3</anchor>
+ <arglist>(MetisPitEntry *pitEntry, MetisTicks expiryTime)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_PITVerdict.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>metis___p_i_t_verdict_8h</filename>
+ </compound>
+ <compound kind="file">
+ <name>metis_StrategyImpl.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/strategies/</path>
+ <filename>metis___strategy_impl_8h</filename>
+ <includes id="metis___message_8h" name="metis_Message.h" local="no" imported="no">ccnx/forwarder/metis/core/metis_Message.h</includes>
+ <class kind="struct">metis_strategy_impl</class>
+ </compound>
+ <compound kind="file">
+ <name>metis_Tlv.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>metis___tlv_8h</filename>
+ <includes id="metis___tlv_extent_8h" name="metis_TlvExtent.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_TlvExtent.h</includes>
+ <includes id="metis___tlv_skeleton_8h" name="metis_TlvSkeleton.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_TlvSkeleton.h</includes>
+ <member kind="function">
+ <type>struct</type>
+ <name>__attribute__</name>
+ <anchorfile>metis___tlv_8h.html</anchorfile>
+ <anchor>a732a50f434b24bb55fadde940376fc78</anchor>
+ <arglist>((packed)) metis_tlv_type</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisTlv_FixedHeaderLength</name>
+ <anchorfile>metis___tlv_8h.html</anchorfile>
+ <anchor>ac4a63c4936b1d2632bbd9ebecae914f2</anchor>
+ <arglist>(void)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisTlv_TotalHeaderLength</name>
+ <anchorfile>metis___tlv_8h.html</anchorfile>
+ <anchor>a0a06c16f5dedcc81b73264a59a35a00c</anchor>
+ <arglist>(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisTlv_TotalPacketLength</name>
+ <anchorfile>metis___tlv_8h.html</anchorfile>
+ <anchor>a25028d03d7748abd356bcd2532880f63</anchor>
+ <arglist>(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlv_NameSegments</name>
+ <anchorfile>metis___tlv_8h.html</anchorfile>
+ <anchor>a14f21b0e80c8d95c60850a3090b76b0c</anchor>
+ <arglist>(uint8_t *name, size_t nameLength, MetisTlvExtent **outputArrayPtr, size_t *outputLengthPtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>PARCBuffer *</type>
+ <name>metisTlv_EncodeControlPlaneInformation</name>
+ <anchorfile>metis___tlv_8h.html</anchorfile>
+ <anchor>a47e6afa43ac104f8f76f9a0cdc0b438b</anchor>
+ <arglist>(const CCNxControl *cpiControlMessage)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlv_ExtentToVarInt</name>
+ <anchorfile>metis___tlv_8h.html</anchorfile>
+ <anchor>a7d03676cf5557eb73af24ed42df1a4dc</anchor>
+ <arglist>(const uint8_t *packet, const MetisTlvExtent *extent, uint64_t *output)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_TlvExtent.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>metis___tlv_extent_8h</filename>
+ <class kind="struct">MetisTlvExtent</class>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvExtent_Equals</name>
+ <anchorfile>metis___tlv_extent_8h.html</anchorfile>
+ <anchor>a16fd2c2e6fa4a61330e72b8b7078acf4</anchor>
+ <arglist>(const MetisTlvExtent *a, const MetisTlvExtent *b)</arglist>
+ </member>
+ <member kind="variable">
+ <type>const MetisTlvExtent</type>
+ <name>metisTlvExtent_NotFound</name>
+ <anchorfile>metis___tlv_extent_8h.html</anchorfile>
+ <anchor>a47fd23709789913e45c20c1bf137586c</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_TlvName.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>metis___tlv_name_8h</filename>
+ <member kind="function">
+ <type>MetisTlvName *</type>
+ <name>metisTlvName_Create</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>ae1184ab52ee5b8b70390400a0ef550c5</anchor>
+ <arglist>(const uint8_t *memory, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvName *</type>
+ <name>metisTlvName_CreateFromCCNxName</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>ab3e8c5e0a0144af0f177c86eb07b4234</anchor>
+ <arglist>(const CCNxName *ccnxName)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvName_Release</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>af07ce2611bf0d09b5e85a81ccd452353</anchor>
+ <arglist>(MetisTlvName **namePtr)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvName *</type>
+ <name>metisTlvName_Acquire</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>a366ee96fc0817d9ad8941d68d5d38cc2</anchor>
+ <arglist>(const MetisTlvName *original)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvName *</type>
+ <name>metisTlvName_Slice</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>a4198dd85ddec0c10627753850167c10c</anchor>
+ <arglist>(const MetisTlvName *original, size_t segmentCount)</arglist>
+ </member>
+ <member kind="function">
+ <type>uint32_t</type>
+ <name>metisTlvName_HashCode</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>a6f372ebc3c6b2f11f9d18ea7b7ca7eb1</anchor>
+ <arglist>(const MetisTlvName *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvName_Equals</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>acd5b69f2ae230b35a74ee9f85da67605</anchor>
+ <arglist>(const MetisTlvName *a, const MetisTlvName *b)</arglist>
+ </member>
+ <member kind="function">
+ <type>int</type>
+ <name>metisTlvName_Compare</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>ad3b3a46ca45bc99d62c37cc0cb4866a3</anchor>
+ <arglist>(const MetisTlvName *a, const MetisTlvName *b)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvName_StartsWith</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>adf825768034e44fb433e58720e0b5aab</anchor>
+ <arglist>(const MetisTlvName *name, const MetisTlvName *prefix)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisTlvName_SegmentCount</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>a2d49d7d4c48dedc9b97ffbc3a0f13d41</anchor>
+ <arglist>(const MetisTlvName *name)</arglist>
+ </member>
+ <member kind="function">
+ <type>CCNxName *</type>
+ <name>metisTlvName_ToCCNxName</name>
+ <anchorfile>metis___tlv_name_8h.html</anchorfile>
+ <anchor>ab4ef3a6d61615fd60ce64ff3c2fe5cba</anchor>
+ <arglist>(const MetisTlvName *name)</arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_TlvOps.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>metis___tlv_ops_8h</filename>
+ <includes id="metis___tlv_skeleton_8h" name="metis_TlvSkeleton.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_TlvSkeleton.h</includes>
+ <class kind="struct">MetisTlvOps</class>
+ </compound>
+ <compound kind="file">
+ <name>metis_TlvSchemaV0.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>metis___tlv_schema_v0_8h</filename>
+ <includes id="metis___tlv_ops_8h" name="metis_TlvOps.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_TlvOps.h</includes>
+ <member kind="variable">
+ <type>const MetisTlvOps</type>
+ <name>MetisTlvSchemaV0_Ops</name>
+ <anchorfile>metis___tlv_schema_v0_8h.html</anchorfile>
+ <anchor>a7c5c57e8e3acf4ff7b5bc02c96a98c30</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_TlvSchemaV1.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>metis___tlv_schema_v1_8h</filename>
+ <includes id="metis___tlv_ops_8h" name="metis_TlvOps.h" local="no" imported="no">ccnx/forwarder/metis/tlv/metis_TlvOps.h</includes>
+ <member kind="variable">
+ <type>const MetisTlvOps</type>
+ <name>MetisTlvSchemaV1_Ops</name>
+ <anchorfile>metis___tlv_schema_v1_8h.html</anchorfile>
+ <anchor>ae3151f3354693f887ad1de5369ae9ecd</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="file">
+ <name>metis_TlvSkeleton.h</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>metis___tlv_skeleton_8h</filename>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetName</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a6dbbbb57743df5d99cf98a2b1310170b</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetKeyId</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a1699fb53dc71918b1e46ef20b7ffdc54</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetObjectHash</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a7218badabe871cc4a80d7b636cb8c5fd</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetHopLimit</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a0bd252f946e5f86de3b0f7d4281450cf</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetInterestLifetime</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>af47845c9d75d7648357406d0f6a8d618</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetCacheTimeHeader</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>ad7f3a9865f9c3a093a8fe8d7b8ba6da3</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetExpiryTime</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a88ea0d1211527ff93fb1334347bc2f5d</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetCPI</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a127c202d43248fba9bbccc0f9d29c724</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>void</type>
+ <name>metisTlvSkeleton_SetFragmentPayload</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a107aedd0586c2d0eaf4170e43a08257b</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, size_t offset, size_t length)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvSkeleton_UpdateHopLimit</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a68b62b3cd3c59a090a579c87172407d3</anchor>
+ <arglist>(MetisTlvSkeleton *skeleton, uint8_t hoplimit)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetName</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a06cd176a03286e605932adfa3da129e6</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetKeyId</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>acb54a3b418d87e082c00791c631ce20b</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetObjectHash</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a814217e1ef09a685b952a7c36cb04fae</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetHopLimit</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>ac91f3c8511fbf7789d8c78c4d59f85dd</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetInterestLifetime</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>ab292ae7c41a51060999590a777c767f5</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetCacheTimeHeader</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a3572250ca49c58ae9b97e06019f1f8f8</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetExpiryTime</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a33660f021938968e2bda32ec4b172fc7</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetCPI</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a2ae19162c5226efdbdf29f8706ada759</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisTlvExtent</type>
+ <name>metisTlvSkeleton_GetFragmentPayload</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a1b46516247bc258be5a773d8c3514d4a</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>const uint8_t *</type>
+ <name>metisTlvSkeleton_GetPacket</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a461cda6c1bb30ade1b996d77967abafc</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>size_t</type>
+ <name>metisTlvSkeleton_TotalPacket</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a4a44b90670b04e21369d1f1d7f5a60d3</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>PARCCryptoHash *</type>
+ <name>metisTlvSkeleton_ComputeContentObjectHash</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a0b5fb55b81c9bb176353ab5f0450b989</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvSkeleton_IsPacketTypeInterest</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a93c18a86d2c9ba34f72168c26c289175</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvSkeleton_IsPacketTypeContentObject</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a62f14dbd00510871f5c1e692550b00b2</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvSkeleton_IsPacketTypeControl</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>a161ab721ad0d50dccc46f3005a817ba7</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvSkeleton_IsPacketTypeInterestReturn</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>aae3ecd7d00c55c7214129bf5121b6cd7</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>bool</type>
+ <name>metisTlvSkeleton_IsPacketTypeHopByHopFragment</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>afd920b9ca995118924205c7868854dbf</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="function">
+ <type>MetisLogger *</type>
+ <name>metisTlvSkeleton_GetLogger</name>
+ <anchorfile>metis___tlv_skeleton_8h.html</anchorfile>
+ <anchor>ad13192c46b1041770f121636ad95e78e</anchor>
+ <arglist>(const MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>metis_command_ops</name>
+ <filename>structmetis__command__ops.html</filename>
+ </compound>
+ <compound kind="struct">
+ <name>MetisContentStoreConfig</name>
+ <filename>struct_metis_content_store_config.html</filename>
+ </compound>
+ <compound kind="struct">
+ <name>metis_contentstore_interface</name>
+ <filename>structmetis__contentstore__interface.html</filename>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>putContent</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>ace270e9426aba3d802c791e4ebf8cd99</anchor>
+ <arglist>)(MetisContentStoreInterface *storeImpl, MetisMessage *content, uint64_t currentTimeTicks)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>removeContent</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>a604e96274262f924ca808d05447a4770</anchor>
+ <arglist>)(MetisContentStoreInterface *storeImpl, MetisMessage *content)</arglist>
+ </member>
+ <member kind="variable">
+ <type>MetisMessage *(*</type>
+ <name>matchInterest</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>a6f03223331c65e1233f58ccea8a8e287</anchor>
+ <arglist>)(MetisContentStoreInterface *storeImpl, MetisMessage *interest)</arglist>
+ </member>
+ <member kind="variable">
+ <type>size_t(*</type>
+ <name>getObjectCapacity</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>a1a11ff5fe0e3389fca208e2b3bde3959</anchor>
+ <arglist>)(MetisContentStoreInterface *storeImpl)</arglist>
+ </member>
+ <member kind="variable">
+ <type>size_t(*</type>
+ <name>getObjectCount</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>acb9f016da47e88b6bb045b6a9d41ac55</anchor>
+ <arglist>)(MetisContentStoreInterface *storeImpl)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>log</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>a9590a92d4c7009fa531e981a9d7fd780</anchor>
+ <arglist>)(MetisContentStoreInterface *storeImpl)</arglist>
+ </member>
+ <member kind="variable">
+ <type>MetisContentStoreInterface *(*</type>
+ <name>acquire</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>aeb2504db9413e6a892417080ad1361ee</anchor>
+ <arglist>)(const MetisContentStoreInterface *storeImpl)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>release</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>a7feaff8252bc58fac3cf6bddf7d957ed</anchor>
+ <arglist>)(MetisContentStoreInterface **storeImpl)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void *</type>
+ <name>_privateData</name>
+ <anchorfile>structmetis__contentstore__interface.html</anchorfile>
+ <anchor>ad32bd844894d3d7870c2f48782895c0d</anchor>
+ <arglist></arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>metis_io_ops</name>
+ <filename>structmetis__io__ops.html</filename>
+ </compound>
+ <compound kind="struct">
+ <name>metis_listener_ops</name>
+ <filename>structmetis__listener__ops.html</filename>
+ <member kind="variable">
+ <type>void *</type>
+ <name>context</name>
+ <anchorfile>structmetis__listener__ops.html</anchorfile>
+ <anchor>ae376f130b17d169ee51be68077a89ed0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>destroy</name>
+ <anchorfile>structmetis__listener__ops.html</anchorfile>
+ <anchor>ab351f1a0faac6a13ad2bea880eeae3a8</anchor>
+ <arglist>)(MetisListenerOps **listenerOpsPtr)</arglist>
+ </member>
+ <member kind="variable">
+ <type>unsigned(*</type>
+ <name>getInterfaceIndex</name>
+ <anchorfile>structmetis__listener__ops.html</anchorfile>
+ <anchor>ad61fc0db38afd0c8229ec92cfa4673f4</anchor>
+ <arglist>)(const MetisListenerOps *ops)</arglist>
+ </member>
+ <member kind="variable">
+ <type>const CPIAddress *(*</type>
+ <name>getListenAddress</name>
+ <anchorfile>structmetis__listener__ops.html</anchorfile>
+ <anchor>aaa3ad2ce97b8be6fc8d21095e091a0ef</anchor>
+ <arglist>)(const MetisListenerOps *ops)</arglist>
+ </member>
+ <member kind="variable">
+ <type>MetisEncapType(*</type>
+ <name>getEncapType</name>
+ <anchorfile>structmetis__listener__ops.html</anchorfile>
+ <anchor>a4d9598b4fa9b483750a1f936135e437a</anchor>
+ <arglist>)(const MetisListenerOps *ops)</arglist>
+ </member>
+ <member kind="variable">
+ <type>int(*</type>
+ <name>getSocket</name>
+ <anchorfile>structmetis__listener__ops.html</anchorfile>
+ <anchor>a40fc1619bfbc00af0c0296b3267148cd</anchor>
+ <arglist>)(const MetisListenerOps *ops)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>metis_strategy_impl</name>
+ <filename>structmetis__strategy__impl.html</filename>
+ </compound>
+ <compound kind="struct">
+ <name>metis_tap</name>
+ <filename>structmetis__tap.html</filename>
+ <member kind="variable">
+ <type>void *</type>
+ <name>context</name>
+ <anchorfile>structmetis__tap.html</anchorfile>
+ <anchor>ae376f130b17d169ee51be68077a89ed0</anchor>
+ <arglist></arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isTapOnReceive</name>
+ <anchorfile>structmetis__tap.html</anchorfile>
+ <anchor>a9c52b339606f937ae225435937ebb3e9</anchor>
+ <arglist>)(const MetisTap *tap)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isTapOnSend</name>
+ <anchorfile>structmetis__tap.html</anchorfile>
+ <anchor>a549d8ba30c8bf09c397b627117509be4</anchor>
+ <arglist>)(const MetisTap *tap)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isTapOnDrop</name>
+ <anchorfile>structmetis__tap.html</anchorfile>
+ <anchor>a9018847753a290e4fb321f5b0f8713bd</anchor>
+ <arglist>)(const MetisTap *tap)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>tapOnReceive</name>
+ <anchorfile>structmetis__tap.html</anchorfile>
+ <anchor>a4fde1ff1596dfe21bd66e7fd04c677a8</anchor>
+ <arglist>)(MetisTap *tap, const MetisMessage *message)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>tapOnSend</name>
+ <anchorfile>structmetis__tap.html</anchorfile>
+ <anchor>accdafaccd2a2c2b7a81cf6970baace42</anchor>
+ <arglist>)(MetisTap *tap, const MetisMessage *message)</arglist>
+ </member>
+ <member kind="variable">
+ <type>void(*</type>
+ <name>tapOnDrop</name>
+ <anchorfile>structmetis__tap.html</anchorfile>
+ <anchor>a11dcf8866ab30d59ebc9e89f5da745cb</anchor>
+ <arglist>)(MetisTap *tap, const MetisMessage *message)</arglist>
+ </member>
+ </compound>
+ <compound kind="struct">
+ <name>MetisTlvExtent</name>
+ <filename>struct_metis_tlv_extent.html</filename>
+ </compound>
+ <compound kind="struct">
+ <name>MetisTlvOps</name>
+ <filename>struct_metis_tlv_ops.html</filename>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>parse</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>a75f3f13b34ed4ce5446f9c298ce53c11</anchor>
+ <arglist>)(MetisTlvSkeleton *skeleton)</arglist>
+ </member>
+ <member kind="variable">
+ <type>PARCCryptoHash *(*</type>
+ <name>computeContentObjectHash</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>adb3e23026cc8289a4caf6dd305e78c48</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>PARCBuffer *(*</type>
+ <name>encodeControlPlaneInformation</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>a069666a1707e3f25bac3e0398c6ff5b7</anchor>
+ <arglist>)(const CCNxControl *cpiControlMessage)</arglist>
+ </member>
+ <member kind="variable">
+ <type>size_t(*</type>
+ <name>totalHeaderLength</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>af10dedd276576e04f0ad139cb2151693</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>size_t(*</type>
+ <name>totalPacketLength</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>ac2814f2d85a05b019eef67fccb3d8d38</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>size_t(*</type>
+ <name>fixedHeaderLength</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>a0c72c61d6c1d967fd8a03311718d0a92</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isPacketTypeInterest</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>af27d7d84ef0d7fa34f97e074d2a4c081</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isPacketTypeContentObject</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>adcc5141e6f8280bfdaf4aac88fe12d7a</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isPacketTypeInterestReturn</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>a9ee30558bb8c8f762dd7f0bbd8d754d1</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isPacketTypeControl</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>a60f8ca8013d736222f90266e3e443658</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ <member kind="variable">
+ <type>bool(*</type>
+ <name>isPacketTypeHopByHopFragment</name>
+ <anchorfile>struct_metis_tlv_ops.html</anchorfile>
+ <anchor>a3ac9301f8aed608209abb230dcd49090</anchor>
+ <arglist>)(const uint8_t *packet)</arglist>
+ </member>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/</path>
+ <filename>dir_bcfc85182c085d71da54f91e9bbfdc37.html</filename>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder</dir>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line/</path>
+ <filename>dir_61559995d99aee0a184ff053457555e4.html</filename>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line/metis_control</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line/metis_daemon</dir>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config/</path>
+ <filename>dir_53f459e4205fd33777ae605604be70b4.html</filename>
+ <file>metis_CommandLineInterface.c</file>
+ <file>metis_CommandLineInterface.h</file>
+ <file>metis_CommandOps.c</file>
+ <file>metis_CommandOps.h</file>
+ <file>metis_CommandParser.c</file>
+ <file>metis_CommandParser.h</file>
+ <file>metis_CommandReturn.h</file>
+ <file>metis_Configuration.c</file>
+ <file>metis_Configuration.h</file>
+ <file>metis_ConfigurationFile.c</file>
+ <file>metis_ConfigurationFile.h</file>
+ <file>metis_ConfigurationListeners.c</file>
+ <file>metis_ConfigurationListeners.h</file>
+ <file>metis_ControlState.c</file>
+ <file>metis_ControlState.h</file>
+ <file>metis_SymbolicNameTable.c</file>
+ <file>metis_SymbolicNameTable.h</file>
+ <file>metis_WebInterface.h</file>
+ <file>metisControl_Add.c</file>
+ <file>metisControl_Add.h</file>
+ <file>metisControl_AddConnection.c</file>
+ <file>metisControl_AddConnection.h</file>
+ <file>metisControl_AddListener.c</file>
+ <file>metisControl_AddListener.h</file>
+ <file>metisControl_AddRoute.c</file>
+ <file>metisControl_AddRoute.h</file>
+ <file>metisControl_List.c</file>
+ <file>metisControl_List.h</file>
+ <file>metisControl_ListConnections.c</file>
+ <file>metisControl_ListConnections.h</file>
+ <file>metisControl_ListInterfaces.c</file>
+ <file>metisControl_ListInterfaces.h</file>
+ <file>metisControl_ListRoutes.c</file>
+ <file>metisControl_ListRoutes.h</file>
+ <file>metisControl_Quit.c</file>
+ <file>metisControl_Quit.h</file>
+ <file>metisControl_Remove.c</file>
+ <file>metisControl_Remove.h</file>
+ <file>metisControl_RemoveConnection.c</file>
+ <file>metisControl_RemoveConnection.h</file>
+ <file>metisControl_RemoveRoute.c</file>
+ <file>metisControl_RemoveRoute.h</file>
+ <file>metisControl_Root.c</file>
+ <file>metisControl_Root.h</file>
+ <file>metisControl_Set.c</file>
+ <file>metisControl_Set.h</file>
+ <file>metisControl_SetDebug.c</file>
+ <file>metisControl_SetDebug.h</file>
+ <file>metisControl_Unset.c</file>
+ <file>metisControl_Unset.h</file>
+ <file>metisControl_UnsetDebug.c</file>
+ <file>metisControl_UnsetDebug.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/content_store</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/content_store/</path>
+ <filename>dir_da15db01a0c1740d5d2cf1b7eaa642f0.html</filename>
+ <file>metis_ContentStoreEntry.c</file>
+ <file>metis_ContentStoreEntry.h</file>
+ <file>metis_ContentStoreInterface.c</file>
+ <file>metis_ContentStoreInterface.h</file>
+ <file>metis_LRUContentStore.c</file>
+ <file>metis_LRUContentStore.h</file>
+ <file>metis_LruList.c</file>
+ <file>metis_LruList.h</file>
+ <file>metis_TimeOrderedList.c</file>
+ <file>metis_TimeOrderedList.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core/</path>
+ <filename>dir_d0944960f0bc6d6ed79e71dabfb94b82.html</filename>
+ <file>metis_Connection.c</file>
+ <file>metis_Connection.h</file>
+ <file>metis_ConnectionList.c</file>
+ <file>metis_ConnectionList.h</file>
+ <file>metis_ConnectionManager.c</file>
+ <file>metis_ConnectionManager.h</file>
+ <file>metis_ConnectionTable.c</file>
+ <file>metis_ConnectionTable.h</file>
+ <file>metis_Dispatcher.c</file>
+ <file>metis_Dispatcher.h</file>
+ <file>metis_Forwarder.c</file>
+ <file>metis_Forwarder.h</file>
+ <file>metis_Logger.c</file>
+ <file>metis_Logger.h</file>
+ <file>metis_Message.c</file>
+ <file>metis_Message.h</file>
+ <file>metis_MessagePacketType.h</file>
+ <file>metis_NumberSet.c</file>
+ <file>metis_NumberSet.h</file>
+ <file>metis_StreamBuffer.c</file>
+ <file>metis_StreamBuffer.h</file>
+ <file>metis_System.h</file>
+ <file>metis_ThreadedForwarder.c</file>
+ <file>metis_ThreadedForwarder.h</file>
+ <file>metis_Ticks.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms/darwin</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms/darwin/</path>
+ <filename>dir_f8636dbddad0914cd28fb2329d39c7f0.html</filename>
+ <file>metis_GenericEther.c</file>
+ <file>metis_System.c</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/</path>
+ <filename>dir_4ee50b67fc4b706760971ccc714820b5.html</filename>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis</dir>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io/</path>
+ <filename>dir_94bf15c3dad66b9fa087937cefc0e4fc.html</filename>
+ <file>metis_AddressPair.c</file>
+ <file>metis_AddressPair.h</file>
+ <file>metis_EtherConnection.c</file>
+ <file>metis_EtherConnection.h</file>
+ <file>metis_EtherListener.c</file>
+ <file>metis_EtherListener.h</file>
+ <file>metis_Ethernet.h</file>
+ <file>metis_GenericEther.h</file>
+ <file>metis_HopByHopFragmenter.c</file>
+ <file>metis_HopByHopFragmenter.h</file>
+ <file>metis_Io.h</file>
+ <file>metis_IPMulticastListener.c</file>
+ <file>metis_IPMulticastListener.h</file>
+ <file>metis_Listener.h</file>
+ <file>metis_ListenerSet.c</file>
+ <file>metis_ListenerSet.h</file>
+ <file>metis_LocalListener.c</file>
+ <file>metis_LocalListener.h</file>
+ <file>metis_StreamConnection.c</file>
+ <file>metis_StreamConnection.h</file>
+ <file>metis_TcpListener.c</file>
+ <file>metis_TcpListener.h</file>
+ <file>metis_TcpTunnel.c</file>
+ <file>metis_TcpTunnel.h</file>
+ <file>metis_UdpConnection.c</file>
+ <file>metis_UdpConnection.h</file>
+ <file>metis_UdpController.h</file>
+ <file>metis_UdpListener.c</file>
+ <file>metis_UdpListener.h</file>
+ <file>metis_UdpTunnel.c</file>
+ <file>metis_UdpTunnel.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms/linux</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms/linux/</path>
+ <filename>dir_8b43bf6b3c312feb9882d61e79a2b952.html</filename>
+ <file>metis_GenericEther.c</file>
+ <file>metis_System.c</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/messenger</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/messenger/</path>
+ <filename>dir_37607365a96dca0bf90ecd46375f12b7.html</filename>
+ <file>metis_Messenger.c</file>
+ <file>metis_Messenger.h</file>
+ <file>metis_MessengerRecipient.c</file>
+ <file>metis_MessengerRecipient.h</file>
+ <file>metis_Missive.c</file>
+ <file>metis_Missive.h</file>
+ <file>metis_MissiveDeque.c</file>
+ <file>metis_MissiveDeque.h</file>
+ <file>metis_MissiveType.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/</path>
+ <filename>dir_e64ecc02f9581b59b9e6026f4e59781d.html</filename>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/config</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/content_store</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/core</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/io</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/messenger</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/strategies</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/testdata</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv</dir>
+ <file>metis_About.c</file>
+ <file>metis_About.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line/metis_control</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line/metis_control/</path>
+ <filename>dir_aefe288e02ddf0429fc3660b8d6e0913.html</filename>
+ <file>metisControl_main.c</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line/metis_daemon</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/command-line/metis_daemon/</path>
+ <filename>dir_bdfb53277da556c143ba0b3170c1740d.html</filename>
+ <file>metis_daemon.c</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms/</path>
+ <filename>dir_24bf99c83dd9d3b97453839b48f8fbe6.html</filename>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms/darwin</dir>
+ <dir>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/platforms/linux</dir>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/processor/</path>
+ <filename>dir_831c94926ac1768bea48d105ac5e3c2f.html</filename>
+ <file>metis_ContentStore.c</file>
+ <file>metis_ContentStore.h</file>
+ <file>metis_ContentStoreEntry.c</file>
+ <file>metis_ContentStoreEntry.h</file>
+ <file>metis_FIB.c</file>
+ <file>metis_FIB.h</file>
+ <file>metis_FibEntry.c</file>
+ <file>metis_FibEntry.h</file>
+ <file>metis_FibEntryList.c</file>
+ <file>metis_FibEntryList.h</file>
+ <file>metis_HashTableFunction.c</file>
+ <file>metis_HashTableFunction.h</file>
+ <file>metis_MatchingRulesTable.c</file>
+ <file>metis_MatchingRulesTable.h</file>
+ <file>metis_MessageProcessor.c</file>
+ <file>metis_MessageProcessor.h</file>
+ <file>metis_PIT.c</file>
+ <file>metis_PIT.h</file>
+ <file>metis_PitEntry.c</file>
+ <file>metis_PitEntry.h</file>
+ <file>metis_PITVerdict.h</file>
+ <file>metis_Tap.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/strategies</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/strategies/</path>
+ <filename>dir_b3de3c19e8293656d51a9be4831d32e7.html</filename>
+ <file>metis_Strategy.h</file>
+ <file>metis_StrategyImpl.h</file>
+ <file>strategy_All.c</file>
+ <file>strategy_All.h</file>
+ <file>strategy_BestUnipath.h</file>
+ <file>strategy_CNF.h</file>
+ <file>strategy_WeightedRoundRobin.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/testdata</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/testdata/</path>
+ <filename>dir_05be9313265f0a7109110f819a26f7f0.html</filename>
+ <file>metis_TestDataV0.h</file>
+ <file>metis_TestDataV1.h</file>
+ </compound>
+ <compound kind="dir">
+ <name>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv</name>
+ <path>/home/parallels/Distillery/Metis/ccnx/forwarder/metis/tlv/</path>
+ <filename>dir_b45adcd34b37ac4637ec690bd9c70d10.html</filename>
+ <file>metis_Tlv.c</file>
+ <file>metis_Tlv.h</file>
+ <file>metis_TlvExtent.c</file>
+ <file>metis_TlvExtent.h</file>
+ <file>metis_TlvName.c</file>
+ <file>metis_TlvName.h</file>
+ <file>metis_TlvNameCodec.c</file>
+ <file>metis_TlvNameCodec.h</file>
+ <file>metis_TlvOps.h</file>
+ <file>metis_TlvSchemaV0.c</file>
+ <file>metis_TlvSchemaV0.h</file>
+ <file>metis_TlvSchemaV1.c</file>
+ <file>metis_TlvSchemaV1.h</file>
+ <file>metis_TlvSkeleton.c</file>
+ <file>metis_TlvSkeleton.h</file>
+ </compound>
+</tagfile>
diff --git a/metis/documentation/metis.doxygen b/metis/documentation/metis.doxygen
new file mode 100644
index 00000000..7218f8dd
--- /dev/null
+++ b/metis/documentation/metis.doxygen
@@ -0,0 +1,2420 @@
+# Doxyfile 1.8.9.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = CCNxMetisForwarder
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER =
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF = ""
+
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+# in the documentation. The maximum height of the logo should not exceed 55
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+# the logo to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = metis-documentation
+
+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS = NO
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+# page for each member. If set to NO, the documentation of a member will be part
+# of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note: For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = YES
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO,
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES = NO
+
+# This flag is only useful for Objective-C code. If set to YES, local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO, only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO, these classes will be included in the various overviews. This option
+# has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO, these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO, these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES, upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES, the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES = YES
+
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+# append additional text to a page's title, such as Class Reference. If set to
+# YES the compound reference will be hidden.
+# The default value is: NO.
+
+HIDE_COMPOUND_REFERENCE= NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO, the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO, the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+# list. This list is created by putting \todo commands in the documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+# list. This list is created by putting \test commands in the documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES, the
+# list will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. See also \cite for info how to create references.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO, doxygen will only warn about wrong or incomplete
+# parameter documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE = metis-doxygen.log
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT = ../ccnx
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.idl \
+ *.ddl \
+ *.odl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.cs \
+ *.d \
+ *.php \
+ *.php4 \
+ *.php5 \
+ *.phtml \
+ *.inc \
+ *.m \
+ *.markdown \
+ *.md \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.for \
+ *.tcl \
+ *.vhd \
+ *.vhdl \
+ *.ucf \
+ *.qsf \
+ *.as \
+ *.js
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = */examples/* \
+ */tests/* \
+ */test/*
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# cascading style sheets that are included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefore more robust against future updates.
+# Doxygen will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list). For an example see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET = stylesheet.css
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the style sheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = com.parc.csl.libccnx
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = com.parc.csl
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = PARC
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler (hhc.exe). If non-empty,
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated
+# (YES) or that it should be included in the master .chm file (NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated
+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH = 250
+
+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer (doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer (doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+# string, for the replacement values of the other commands the user is referred
+# to HTML_HEADER.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer. See
+# LATEX_HEADER for more information on how to generate a default footer and what
+# special commands can be used inside the footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER =
+
+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# LaTeX style sheets that are included after the standard style sheets created
+# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+# will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_STYLESHEET =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES, to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE =
+
+# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+# with syntax highlighting in the RTF output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_SOURCE_CODE = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+# program listings (including syntax highlighting and cross-referencing
+# information) to the DOCBOOK output. Note that enabling this will significantly
+# increase the size of the DOCBOOK output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_PROGRAMLISTING = NO
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+# AutoGen Definitions (see http://autogen.sf.net) file that captures the
+# structure of the code including all documentation. Note that this feature is
+# still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO, the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+# in the source code. If set to NO, only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES, the include files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES = ../../../ccnxlibs/libccnx/documentation/libccnx.doctags= \
+ ../../../cframework/libparc/documentation/libparc.doctags= \
+ ../../../cframework/longbow/documentation/longbow.doctags=
+
+
+
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE = metis.doctags
+
+# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+# the class index. If set to NO, only the inherited external classes will be
+# listed.
+# The default value is: NO.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS = YES
+
+# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH =
+
+# If set to YES the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
+
+HAVE_DOT = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS = 0
+
+# When you want a differently looking font in the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS =
+
+# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+# path where java can find the plantuml.jar file. If left blank, it is assumed
+# PlantUML is not used or called during a preprocessing step. Doxygen will
+# generate a warning when it encounters a \startuml command in this case and
+# will not generate output for the diagram.
+
+PLANTUML_JAR_PATH =
+
+# When using plantuml, the specified paths are searched for files specified by
+# the !include statement in a plantuml block.
+
+PLANTUML_INCLUDE_PATH =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP = YES
diff --git a/metis/documentation/stylesheet.css b/metis/documentation/stylesheet.css
new file mode 100644
index 00000000..fb5cda7c
--- /dev/null
+++ b/metis/documentation/stylesheet.css
@@ -0,0 +1,47 @@
+body {
+ xbackground-color: #111111;
+ xcolor: white;
+ margin: 0;
+ padding: 11% 11% 0 11%;
+}
+
+xdiv#top {
+ margin: 0 11% 0 11%;
+ padding: 4em 3% 4em 3%;
+ background-color: white;
+ color: black;
+ border-radius: 8px;
+}
+
+xdiv.header {
+ margin: 0 11% 0 11%;
+ padding: 4em 3% 4em 3%;
+ background-color: grey;
+ color: black;
+ border-radius: 8px;
+}
+
+div.contents {
+ xbackground-image: url(noise_gradient.jpg);
+ xbackground-repeat: no-repeat;
+ /*margin: 0 11% 0 11%;*/
+ /*padding: 4em 3% 4em 3%;*/
+/* background-color: white;*/
+ xcolor: white;
+ xborder-radius: 8px;
+}
+
+x#titlearea {
+ border: 2px solid red;
+ background-color: white;
+ color: black;
+}
+
+xhr.footer {
+ display: none;
+}
+
+x.footer {
+ background-color: #AAA;
+ color: black;
+}