tcng(1) Traffic control compiler


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> ]


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.

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
increase debugging level
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.
do not include ``''. 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> ...
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.
quiet, produce terse output
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.
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.
print version number and exit
suppress all warnings
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 ==, which should probably be ip_src/24 ==
``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.
verbatim argument for specific build phase. See section ``Phases underneath tcng'' for details.
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).