NAME
tcng - Traffic control compiler
SYNOPSIS
tcng [ -c ] [ -d ... ] [ -E ] [ -i <default_interface> ] [ -l
<location_file> ] [ -n ] [ -q ] [ -r ] [ -w ] [ -W [no]<condition> ] [
-O [no]<option> ] [ -x <element>:<ext_target> ... ] [ -t [no]<target>
... ] [ -u <var_use_file> ] [ -X <phase>,<argument> ] [ <cpp_option> ]
[ <file> ]
DESCRIPTION
The tcng language is extensively described in several formats, you can
find these files in /usr/share/doc/tcng. This manpage describes
nothing but command-line arguments.
tcng reads traffic control specifications in the tcng language and
generates command or files for a number of mechanisms that are used to
implement traffic control functionality.
-c only check validity of input, don’t build a configuration. If
requested, the location file and the variable use file are also
generated when using -c
-d increase debugging level
-E only run cpp, and send its output to standard output. This is
useful for separately running files through cpp, while using the
default includes added by tcng.
-i <default_interface>
interface to use if none is specified in the description file.
See section “Interfaces revisited” for further details.
-l <location_file>
write a list of source code locations of traffic control
elements to the specified file. See section “Location map” for
details. Using the special file name “stderr” sends the output
to standard error.
-n do not include “default.tc”. By default, tcng includes this
file, which in turn includes the files described in section
“Include files”. This can be undesirable, e.g. if operating in
a non-TCP/IP context, or if using a different default include
file with application-specific definitions. In the latter case,
the following options should be used: tcng ... -n ...
-Xp,--include -Xp,/<directory>/<file> ...
-O[no]<option>
enable or disable the specified optimization. The following
optimizations are recognized:
cse common subexpression elimination
ne turn != into multiple ==s
prefix generate prefix matches instead of bit tests
By default, all optimizations except “cse” are turned off.
-q quiet, produce terse output
-r remove old queuing disciplines before adding new ones ("tc"
only)
-t [<elem:>][no]<target> ...
enable or disable target (see section “Targets”). The only
element currently supported is “if”. Supported targets are
“all”, “tc” (default), “c”, and “ext”. The -t options can be
repeated to enable or disable multiple targets.
-u<var_use_file>
for each variable, write its name and value to the specified
file. See section “Variable use list” for details. Using the
special file name “stderr” sends the output to standard error.
-V print version number and exit
-w suppress all warnings
-W[no]<condition>
enable or disable issuing a warning message on the specified
condition. The following conditions are recognized:
constpfx warn if using the / (mask) operator on a constant
IPv4 or IPv6 address, as in ip_src == 1.2.3.0/24, which should
probably be ip_src/24 == 1.2.3.0
expensive generate warnings when encountering “expensive”
constructs in “if” classifier. A construct is considered
“expensive” if processing it may take tcng an unusual amount of
time. Operations like negation, certain tests for non-equality,
or static classification that follows metering, are “expensive”.
Because “expensive” may be overly pessimistic, “exppostopt”
should be used whenever possible.
experror turns warnings from “expensive” or “exppostopt” into
fatal errors. Setting “experror” without also setting
“expensive” or “exppostopt” has no effect.
explicit warn if a class if explicitly specified for the inner
queuing discipline of “dsmark”, “egress”, or “ingress”
exppostopt like “expensive”, but test for “expensive”
constructs after trying to optimize the expression, which may
eliminate some apparently expensive constructs. “exppostopt” can
only indicate in which “if” classifier the expression occurred,
not in which selector of that classifier. “expensive” has no
effect if “exppostopt” is set.
Note that neither “expensive” nor “exppostopt” are useful when
using “nocombine” (see sectionbarriers).
redefine warn if re-defining variables
truncate warn if truncating values, e.g. when converting a
floating-point number to an integer
unused report unused variables
By default, all warnings except "explicit" and "unused" are
turned off.
-x <element>:<ext_target> ...
register external target (see section “Targets”). The -x option
can be repeated to register multiple external targets.
-X<phase>,<argument>
verbatim argument for specific build phase. See section “Phases
underneath tcng” for details.
<cpp_option>
one of the following options for the C pre-processor: -I<dir> ,
-D<name>[=<value>] , or -U<name>
tcng also recognizes a number of undocumented options, such as -B and
-N. These options usually enable experimental features, like
alternative algorithms for processing “if” expressions, and they are
not recommended for normal use of tcng. Changes to undocumented options
are mentioned in tcng’s change log (file /usr/share/doc/tcng/CHANGES).