Traffic Control - Next Generation

Download

tcng main page

 tcng-10b (3-OCT-2004)
tcng-10b.tar.gz (507 kB)

Changes:

  • the "mtu" parameter in TBF is now optional
  • tcsim now uses KVERSION[NUM] instead of KFULLVERSION[NUM] to avoid breaking if EXTRAVERSION contains multiple dots or other surprises (reported by Eduardo Grosclaude)
  • scripts/runtests.sh now runs commands with LANG=C, to avoid localized error messages (reported by Eduardo Grosclaude)

 tcng-10a (28-SEP-2004)
tcng-10a.tar.gz (507 kB)

Changes:

  • configure is compatible with 2.4.27
  • updated kernel version example in README from 2.4.26 to 2.4.27
  • scripts/compatibility.sh: added 2.4.27
  • changed name of "tcc" to "tcng", for collision with "tiny cc" (reported by Matthias Urlichs)
  • scripts/localize.sh: now installs a wrapper for "tcng", pointing to "tcc"
  • scripts/symlinks.sh: now adds a link from "tcng" to "tcc"
  • tcsim/tcsim.c: now calls "tcc" as "tcng"
  • configure: changed "tcc" to "tcng" at all user-visible places
  • tcc/tcc.c: no longer identifies itself as "tcc" when invoked with -V
  • Makefile: the binary distribution for "tcc" is now called "tcng"
  • build/{tcng,tcsim}.spec.in: changed most references for "tcc" to "tcng"
  • Makefile: removed lib/tcng/include/klib/kernel/include from TCSIM_BINDIST
  • configure now uses include/SNAPSHOT.h instead of RELNOTES to detect iproute2 version
  • configure is now compatible with iproute2-2.6.8-ss040730 and iproute2-2.6.9-ss040831 (updated tests/cbqroot and tests/tbf)
  • tcng/README now recommends to download iproute2-2.6.9-ss040831.tar.gz (this also affects tcsim.spec)
  • recent versions of iproute2 only support MPUs <= 255 bytes (updated tests/mpu)
  • tcng can now use "conform-exceed" instead of "action" (updated tests/drop)
  • configure: new options "--action" (or "-a") and "--conform-exceed" (or "-A") to override action handling
  • tcc/Makefile now depends on ../config

 tcng-9m (9-MAY-2004)
tcng-9m.tar.gz (506 kB)

Changes:

  • configure is compatible with 2.4.26
  • updated kernel version example in README from 2.4.25 to 2.4.26
  • scripts/compatibility.sh: added 2.4.26
  • installation example in README now also mentions downloading the iproute2 tarball from Debian
  • configure and scripts/minisrc.sh now also recognize the Debian iproute tarball
  • tcsim/setup.klib: added "time_after" and "time_after_eq" to linux/sched.h
  • tcsim/setup.klib: converts dsfield.h to remove bare newlines from strings (needed to build tcsim with old kernel sources and a new gcc)
  • if_u32.c:dump_and now checks if any but the last && term changes the offset group (tests/tcng-9m; updated tests/tcng-2i, reported by Laurent Moutel)
  • tcsim/Makefile: compile tcsim.c without kernel includes, to avoid confusing glibc headers (reported by Nuutti Kotivuori)

 tcng-9l (29-FEB-2004)
tcng-9l.tar.gz (505 kB)

Changes:

  • configure did not preserve the YACC setting across sessions
  • configure now complains if -k, -i, -d, -t, or -y have no argument
  • tcc and tcsim now use -$ if -std=c99 does not work (updated tests/cppdollar)
  • configure: new options "-$" and "--c99" (or "-c99") to override dollar handling
  • the writer helper process of tcsim now always exits with _exit, to avoid running the exit handler that kills cpp
  • runtests.sh converts " parse " to " syntax " in stderr if expecting an error, because some YACCs print "parse error" instead of "syntax error"
  • examples/prio+fw, examples/tbf, examples-ng/pfifo_fast, examples-ng/prio+fw, examples/priority, tests/idiomatic, tests/packet, tests/tcsattpro, tests/tcsattpsv, tests/tcsattset, tests/tcsdefinc, tests/trace, tests/u32dlb, and tests/u32slb now avoid using variadic macros with an empty argument list all, to keep some versions of CPP from complaining
  • tests/tcng-7g forced a syntax error at EOF, which yielded inconsistent results with different versions of CPP
  • updated kernel version example in tcng/README from 2.4.22 to 2.4.25
  • q_htb.c: used ~0UL to mean "0xffffffffUL"
  • moved removal of .depend from "clean" to "spotless" make target
  • tcsim/Makefile: removed left-over dependencies on module cleanup targets "ephemeral-mod" and "clean-mod"
  • tcsim/modules/Makefile did not define OBJS

 tcng-9k (28-FEB-2004)
tcng-9k.tar.gz (504 kB)

Changes:

  • cpp 3.3.3 unceremoniously dropped "-$", so we're now using "-std=c99" (updated tests/cppdollar, tests/phasep; based on patch by Robin H. Johnson)
  • tcc and tcsim now invoke cpp with argv[0] set to the name of cpp (instead of the name with which tcc or tcsim was invoked), for cpp 3.3.3 compatibility (updated tests/tcng-6u; fixed by Robin H. Johnson)
  • POSIX obsoleted "tail -N", using "tail -n N" now (updated tests/tstcond; fixed by Robin H. Johnson)
  • Makefile: added remark that the ebuild that comes with tcng isn't nearly as good as the one from Gentoo
  • build system now uses bison if "configure" finds no yacc
  • configure: added option --yacc (-y) to set the YACC command
  • toys/comtc now uses extension .i instead of .cpp, since the latter caused cpp to switch to C++ mode
  • configure: changed "dir_or_tarball" to "dir_or_tar.bz2" in description of "--kernel" argument
  • configure now also accepts tarballs for iproute2
  • added scripts/minisrc.sh which extracts the files needed to build tcsim from an iproute2 tarball
  • changed UNDEF_U32 from ~0UL to ~0U for 64 bit compatibility
  • tcc/ext_io.c:expand_errors added casts to avoid complaints when using a pointer difference in printf on 64 bit
  • setup.klib: elements of "struct timeval" are now "unsigned long" instead of "unsigned" for better compatibility with glibc on 64 bit
  • kmod_cc and tcmod_cc now use -fPIC for amd64 compatibility
  • tcc/ext/Makefile and tcc/ext/tcc-ext-test.in now use -fPIC for amd64 compatibility
  • tcc/iflib_actdb.c:debug_subtree printed pointer to policier instead of its number
  • setup.klib: linux/types.h now just #includes stddef.h instead of trying its own definitions for size_t and NULL
  • changed long obsolete "make upload" to equal "make upload-sf"

 tcng-9j (26-FEB-2004)
tcng-9j.tar.gz (502 kB)

Changes:

  • Makefile: targets "tcc" and "tcsim" depend also on "shared" (reported by Mustafa Ogun)
  • configure is compatible with 2.4.24 and 2.4.25
  • scripts/compatibility.sh: added 2.4.23, 2.4.24, and 2.4.25
  • minksrc.sh now only extracts kernel source from tarball if the source has not already been extracted
  • moved progress reporting from "configure" to "minksrc.sh"
  • "make clean" now also removes temporary files of "configure"

 tcng-9i (22-NOV-2003)
tcng-9i.tar.gz (502 kB)

Changes:

  • tcc now supports TBF with an inner qdisc (tests/tbfqdsyn, tests/tbfqdtc, tests/tbfqdext, tests/tbfqdrun)
  • removed redundant flag QDISC_HAS_DEFAULT
  • added build/tcng.ebuild file for Gentoo (by "raptor")
  • Makefile: added "gentoo" target
  • setup.klib no longer uses a symbolic link to the original source tree
  • configure: added option --no-defaults to skip loading of old config file
  • tcsim/Makefile.unclean tcsim/modules/Makefile: object files now depend on the config file
  • added scripts/minksrc.sh which extracts the files needed to build tcsim from a kernel tarball
  • added scripts/compatibility.sh which runs all regression tests involving tcsim for all supported kernel versions
  • Makefile: added "compatibility" target
  • "make sf-upload" now prints the MD5 message digest before uploading
  • configure: removed 2.4.11 kernel, which was withdrawn
  • configure: -k argument can be a kernel tarball
  • runtests.sh: added option -t to run only tests probably using tcsim
  • setup.klib: unconditionally defining LONG_MAX in include/linux/kernel.h broke 2.5.4 builds

 tcng-9h (7-NOV-2003)
tcng-9h.tar.gz (497 kB)

Changes:

  • tcc/ext/Makefile: dependencies now only include .c files compiled in that directory, removing a warning when building RPMs
  • split tcsim/Makefile into Makefile.unclean and Makefile.clean to avoid rebuilding klib and ulib when cleaning up after configuration changes
  • configure is compatible with 2.4.22 and 2.4.23 (pre-release, tested with 2.4.23-pre9)
  • setup.klib generates linux/smp.h needed for 2.4.22
  • tcsim/trace.c and tcsim/modules/sch_discard.c adjust ..._drop prototype for interface change in 2.4.22
  • setup.klib clears LANG before using sed on [^ -~]
  • setup.klib adds "err" and "error_report" members to "struct sock" in af_netlink.c (for 2.4.23)
  • updated kernel version example in tcng/README from 2.4.21 to 2.4.22
  • configure: added options --no-manual and --with-manual (abbreviations -m and -M) to allow building tcng with or without the documentation (suggested by "raptor")
  • configure: automatically assumes --no-manual if either latex or dvips is not in the PATH

 tcng-9g (6-NOV-2003)
tcng-9g.tar.gz (496 kB)

Changes:

  • tcsim leaked memory for variable names (fixed by Dimitry Ketov)
  • tcsim now frees commands after execution (based on a patch by Dimitry Ketov)
  • tcsim -c freed command variables on each access (tests/tcng-9g)
  • scripts/runtests.sh: the -c option had no effect and was not mentioned in the usage
  • changed "tree color meter" to "three color meter" in documentation (fixed by Martin A. Brown)

 tcng-9f (19-JUN-2003)
tcng-9f.tar.gz (496 kB)

Changes:

  • updated kernel version example in tcng/README from 2.4.20 to 2.4.21
  • setup.klib is now compatible with 2.4.21 (final release) (by Dimitry Ketov)
  • fixed setup.klib compatibility with old kernels, like 2.4.3

 tcng-9e (28-APR-2003)
tcng-9e.tar.gz (496 kB)

Changes:

  • updated tests/tcng-6u to accept captialization of cpp 3.2
  • put back packet ID in tcsim_filter output, which was removed in tcng-8x because I had forgotten that it was used for delay calculation in tcsim_plot (fixed by Dimitry Ketov; updated tests/basic, tests/tcng-8x, tests/tcsattpro, tests/tcsattpsv, and tests/tcsattset)
  • doc/tcsim.inc: updated tcsim_filter output format description accordingly
  • examples/dsmark+policing, examples/ef-prio, and examples/gred used UDP_HDR instead of IP_HDR
  • "make rpm" and "make tcsim-rpms" now use "rpmbuild" instead of "rpm" if available

 tcng-9d (14-JAN-2003)
tcng-9d.tar.gz (495 kB)

Changes:

  • updated kernel version example in tcng/README from 2.4.19 to 2.4.20
  • configure is now compatible with 2.4.21 (pre-release, tested with pre3)
  • tcsim -V now also prints the versions of the kernel and iproute2 used to build it
  • make "upload-sf" now runs md5sum after uploading
  • README: changed tar xfI to more compatible bzcat | tar xf -
  • generalized argument-fetching mechanism of sprintf, and split it into sprintf.c and sprintf_generic.c
  • removed extra % from sprintf's precision error message (updated tests/sprintf)
  • comtc's second pass now invokes tcc with the -n option, because some versions of CPP don't allow -include with -fpreprocessed
  • toys/comtc mis-converted stdin location tags when using cpp 2.96 (reported by Martin A. Brown)
  • tcsim executed original rtnl_close, closing an undefined file descriptor, which sometimes upset flex, causing it to fail with "input in flex scanner failed" (reported by "bauer")

 tcng-9c (14-NOV-2002)
tcng-9c.tar.gz (494 kB)

Changes:

  • if_u32 badly mis-ordered rules with multi-phase policers (tests/u32pol)
  • updated tests/arith, tests/egress, tests/intro, tests/selpath, tests/selpathcbq, tests/selpathdup, tests/selpathgred, tests/tcng-2n, and tests/tcng-7o to use unified match format introduced with above fix
  • tcc and tcsim silently ignored invalid digits in octal numbers (tests/tcng-9c)
  • tcsim did not report EOF in tcng section as an error (tests/tcng-9c)
  • updated tests/typerr and tests/varhash accordingly
  • if_u32.c can now generate fw and tcindex classifiers from meta-fields (tests/metau32)
  • for consistency, dsmark can now also default parameter "value" from qdisc (tests/u32pol)
  • tests/tcstimstp used packets that caused SFQ to segfault under efence
  • scripts/runtests.sh: also "comtc" now filters efence blabber
  • added known range check problem to TODO

 tcng-9b (21-OCT-2002)
tcng-9b.tar.gz (491 kB)

Changes:

  • tcsim tried to ignore system HZ (tc/tc_core.c:tc_core_init), but didn't
  • test "SLB with MPU (ext)" actually used tc, not the external interface (tests/mpu)
  • added dependency on ../VERSION for tcc.o and tcsim.o
  • if_u32.c now generates hashes only if they are actually referenced
  • updated tests/cbqroot, tests/comtc, tests/egress, tests/htbng, tests/intro, tests/selpath, tests/selpathcbq, tests/selpathdup, tests/selpathgred, tests/tcng-2h, tests/tcng-2i, tests/tcng-2j, tests/tcng-2q, tests/tcng-3g, and tests/tcsenq accordingly

 tcng-9a (18-OCT-2002)
tcng-9a.tar.gz (491 kB)

Changes:

  • iflib_not.c:single_bit_test failed an assertion when comparing 128 bit values (tests/tcng-9a, reported by Jacob Teplitsky)
  • shared/addr.c:ipv{4,6}_host now cache query results in order to avoid inconsistencies when external database changes during tcc run
  • updated TODO accordingly
  • added top-level Makefile target "count-tests"
  • top-level Makefile targets "test", "tests", and "valgrind" weren't .PHONY
  • "c" target did not detect unsupported field roots (tests/tcng-9a)
  • "c" target now supports the "protocol" meta field (tests/protc)
  • renamed meta.h to tccmeta.h and added it to tcc's public include files
  • added support for meta-field to external interface (tests/protext)

 tcng-8z (10-OCT-2002)
tcng-8z.tar.gz (489 kB)

Changes:

  • tcc and tcsim allowed passing more than one file name to cpp, which treats the second file name as output file (tests/tcng-8z)
  • protocol support for u32 mis-attached subexpressions under new field root (tests/protcomb)
  • tests/htbquant and tests/tcstimstp did not probe if HTB is available before using it
  • tcsim stopped HTB timers before last packet was sent (tests/tcstimstp)
  • tcsim now detects stopped devices with packets pending at "end" (tests/tcstimstp)
  • updated tests/basic, tests/tcssnap, tests/u32dlb, and tests/u32slb according to above change
  • -Wexpensive did not warn about implicit negation (tests/tcng-8z)
  • tcc: replaced -E with -Wexperror, and -E -E with -Wexppostopt (tests/newexp)
  • updated tests/bitfield, tests/bittest, tests/expensive, tests/ne, tests/tcng-5y, and tests/tcng-7a according to above change
  • tcc -E now runs cpp without any further processing (just like gcc -E; tests/tccin)
  • tcc: added option -f infile to read from specified file, ignoring input file argument (tests/tccin)
  • tcc now writes location map after dumping, in order to include target-specific fixups in map
  • added script toys/comtc that copies comments immediately preceding elements to tc output (tests/comtc)
  • runtests.sh: added command comtc to invoke toys/comtc
  • tcc sometimes forgot that "prio" qdisc now supports policing (tests/tcng-8z)
  • cleaned up hack causing compiler warning in if_u32.c

 tcng-8y (21-SEP-2002)
tcng-8y.tar.gz (484 kB)

Changes:

  • HTB quantum can now be specified in bytes or seconds (tests/htbquant)
  • documented various parameter handling differences between tcng and tc
  • added first example from HTB documentation to tests/htbng
  • tcsim now uses default.tcsim to automatically include packet.def and ports.tc, similar to how tcc uses default.tc (tests/tcsdefinc)
  • tcsim: added option -n to disable inclusion of default.tcsim (tests/tcsdefinc)
  • updated tests/cbqroot, tests/cpp31, tests/defcbq, tests/defdsm, tests/ext, tests/idiomatic, tests/tcng-2j, tests/tcng-3i, tests/tcng-3t, tests/tcng-4n, and tests/trace to either invoke tcsim with -n, or to avoid using ip.def
  • removed use of ip.def from all examples (examples/*, examples-ng/*)
  • tcc/defaults.tc now resets the line number in order to work around strange cpps that embed -included file instead of including it, causing line numbers to be off by the length of the -included file (reported by "raptor")
  • tcsim now stops SFQ and HTB timers at end (tests/tcstimstp)
  • updated examples/sfq and examples-ng/sfq accordingly
  • moved helper functions alloc, alloc_t, stralloc, and alloc_sprintf to tcng/shared/memutil.*
  • added %c format to alloc_sprintf
  • removed potential buffer overruns in tcsim/module.c and tcsim/cfg.l by using alloc_sprintf
  • tcc did not complain when specifying "limit" in bytes and in packets for FIFO qdisc (tests/tcng-8y)
  • added awk to build prerequisites

 tcng-8x (20-SEP-2002)
tcng-8x.tar.gz (481 kB)

Changes:

  • tcc: added HTB queuing discipline (tests/htbng, by Jacob Teplitsky)
  • tcsim no longer resets the "protocol" attribute when traversing a link (tests/tcsattpsv)
  • tcsim attributes now have two priorities (normal and default, indicated with the keyword "default"), and the global attributes can be set with the command "attributes" (tests/tcsattset)
  • tcsim: IP_PCK and IP6_PCK now set the "protocol" attribute with "default" priority (tests/tcsattpro)
  • updated kernel version example in tcng/README from 2.4.18 to 2.4.19 (change log incorrectly stated this had been done already in 8u)
  • added warning when taking prefix of IPv4 or IPv6 constant instead of field (tests/constpfx, suggested by Jacob Teplitsky)
  • added warning switch "constpfx" to control above warning (tests/constpfx)
  • added new make target "immaculate" which also removes pre-built files
  • tcc/ports.tc is now removed by "immaculate", not "clean"
  • doc/Makefile can now re-generate EPS files (from FIG)
  • .depend is now always removed on "spotless", never on "clean"
  • various other minor "make clean" and "make spotless" corrections (most of them reported by Jacob Teplitsky)
  • added dummy targets "depend" and "dep" to doc/Makefile
  • documentation: added section describing parameter propagation rules
  • tcng/README now lists packages required for building and using tcng (suggested by "raptor")
  • setup.klib now reverts PSCHED_CLOCK_SOURCE to PSCHED_JIFFIES in case it was changed in the source tree (reported by "raptor")
  • runtests.sh got confused by END CONDITIONAL followed by BEGIN CONDITIONAL (tests/tstcond)
  • tcc let various types of "drop on" slip through, crashing it later (tests/dropon)
  • moved "drop on" test from tests/misfeatures to tests/dropon
  • tcsim_filter failed to select by device name (tests/tcng-8x)
  • documentation: -c was missing in "tcsim_filter tos=0xb8" example
  • tcsim_filter included packet ID in output, although documentation claims it doesn't, which makes more sense (tests/tcng-8x)
  • tcc failed to refuse element ID zero in "fw" filter (tests/tcng-8x)
  • updated tests/blocks, tests/cbqzero, tests/extndm, tests/location, tests/misfeatures, tests/newsynmsc, tests/semicolon, tests/tag, tests/tcng-5g, and tests/tcng-6w accordingly
  • tcsim/packet6.def:IP6_HDR did not initialize $ip6_plen
  • added pending issues related to protocol selection support to tcng/TODO

 tcng-8w (13-SEP-2002)
tcng-8w.tar.gz (474 kB)

Changes:

  • added root of meta fields (__meta) and definitions for meta-fields in meta.tc (included via fields.tc)
  • added some layer > 2 protocol numbers to values.tc
  • tcsim's send command now has a "protocol" attribute (default: ETH_P_IP)
  • updated documentation according to above changes
  • ip_hdr and ip6_hdr now check meta_protocol if USE_META_PROTOCOL is #defined
  • added protocol selection support to if_u32.c (tests/protu32)
  • filters fw, tcindex, and u32, now default to ETH_P_ALL instad of ETH_P_IP
  • updated tests/cbqroot, tests/egress, tests/named, tests/selpath, tests/selpathcbq, tests/selpathdup, and tests/setpathgred accordingly
  • configure now detects and prints kernel extra version (e.g. pre7)

 tcng-8v (12-SEP-2002)
tcng-8v.tar.gz (472 kB)

Changes:

  • configure is now compatible with 2.4.20 (pre-release, tested with pre6)
  • tcsim/setup.klib: added struct notifier_block declaration for 2.4.20-pre6 compatibility
  • tcsim/setup.klib: disables psched_tick (added in 2.4.20) when terminating
  • added HTB and its various dependencies to the tcsim kernel build process
  • runtests.sh now only counts tests instead of running them if environment variable TCNG_TESTS_COUNT is set
  • runtests.sh: added conditional test execution (tests/tstcond)
  • runtests.sh: added command runtests for regression testing the regression test script
  • README: described how to build tcsim with HTB support (tests/htb)
  • tcsim now sets printk log level to KERN_WARNING (4)
  • tcsim: added option -k to set kernel logging threshold
  • updated documentation accordingly
  • added "help" target to top-level Makefile

 tcng-8u (12-AUG-2002)
tcng-8u.tar.gz (469 kB)

Changes:

  • updated kernel version example in tcng/README from 2.4.18 to 2.4.19
  • configure is now compatible with 2.4.19 (final release)
  • tcc refused to left-shift 32 bit values by 0 bits (tests/tcng-8u)
  • configure now checks for defective cpp (reported by "raptor")
  • added undocumented options --kversions and --iversions to configure
  • added script build/findsrc to locate source files
  • "make tcsim-rpms" now uses any supported version of kernel and iproute2, not only the suggested one
  • added more experimental code for FSM-based classification (not yet useful)
  • documentation: tcsim figure still called tcsim_filter and tcsim_plot "filter.pl" and "plot.pl"

 tcng-8t (16-JUL-2002)
tcng-8t.tar.gz (466 kB)

Changes:

  • tcc: changed some "error"s to "lerrors"s (by Jacob Teplitsky)
  • updated tests/tcng-4i accordingly
  • tcc selected CBQ class 0 when using negation, causing the kernel to busy loop (tests/cbqzero; reported by Bert Hubert)
  • updated tests/cbqroot accordingly
  • tcsim/cfg.[ly] claimed their names were tcsim.[ly]
  • tcsim allowed second and jiffie values to begin with opening square bracket (tests/tcng-8t)
  • tcsim now supports SI prefixes "M", "k", "m", and "u" for second and jiffie values (tests/tcssi)
  • tcsim now supports relative time for "time" and "until" (tests/tcsrelt)
  • updated documentation according to above two changes
  • copied acknowledgements from README to documentation preamble
  • began adding support for FSM-based classification to external interface (untested and undocumented)
  • changed "-C" to "nounspec" in all test titles of tests/defdsm
  • RPM build didn't build "shared" directory introduced in tcng 8s

 tcng-8s (21-JUN-2002)
tcng-8s.tar.gz (463 kB)

Changes:

  • merged u128.[ch] from tcsim and tcc into shared/libtcngmisc.a
  • tcsim now sets the line style globally, such that it can be overridden with -cmd, e.g. -cmd "set data style linespoints"
  • tcsim_plot didn't check return value from system (reported by Bodo Bauer and Don Provan)
  • tests/tcng-8q exercises masking via offset and size (suggested by Jacob Teplitsky)
  • merged ipv4_host/ipv6_host from tcc and evaluate_ipv4 and evaluate_ipv6 from tcsim into shared/libtcngmisc.a
  • tcc and tcsim did not accept address 255.255.255.255 (tests/tcng-8q)
  • scripts/update-port-numbers.sh: increased ports file update interval from one week to 92 days, and switched to using temporary file for download
  • documented that "." does not work as an operator and therefore can't be used with parentheses (tests/misfeatures)

 tcng-8r (31-MAY-2002)
tcng-8r.tar.gz (463 kB)

Changes:

  • tcsim: added out_of_line_bug to linux/kernel.h for compatibility with recent 2.4.19 pre-releases (tested with 2.4.19-pre9)
  • tcsim: added min_t to linux/netdevice.h for compatibility with recent 2.4.19 pre-releases (tested with 2.4.19-pre8)
  • doc/Makefile now strips extraneous meta-information from EPS included in Postscript output when converting from DVI to Postscript
  • fixed truncated comment in build/tcsim.spec.in
  • build/tcng.spec.in: added conflict between current tcc and tcc-devel < 7r
  • tcsim_plot: new option -cmd gnuplot_command to pass commands to gnuplot
  • updated doc/tcsim.inc accordingly
  • doc/tcsim.inc: tcsim_filter synopsis did not include -jpeg and -png

 tcng-8q (26-MAY-2002)
tcng-8q.tar.gz (462 kB)

Changes:

  • removed doc/external.tex and doc/build.asc
  • flagged tcc/README, tcc/LANGUAGE, and tcsim/README as obsolete
  • added much improved documentation in doc/
  • upgraded scripts/t2x.pl to version "26-MAY-2002" (various improvements)

 tcng-8p (22-MAY-2002)
tcng-8p.tar.gz (386 kB)

Changes:

  • added %f format to sprintf (tests/sprintf)
  • added "uninstall" target to tcng/Makefile
  • added section comments to tcng/Makefile
  • tcsim now pretty-prints enqueuing results, as it only did when tracing (tests/tcsenq)
  • updated tests/trace accordingly
  • scripts/trinity.sh now puts $topdir/bin first in the PATH, to avoid getting confused by installed version of tcng

 tcng-8o (21-MAY-2002)
tcng-8o.tar.gz (385 kB)

Changes:

  • if execvp fails, now also tcsim prints the path of the CPP it tried to run (reported by munro)
  • tcsim/packet6.def initialized fictitious $ip6_proto instead of $ip6_nxt
  • tcsim/packet4.def: changed size prefix of $ip_src, $ip_dst, and $igmp_group from nl: to ipv4:
  • added optional "mpu" (minimum policed unit) parameter to metering macros, with default value 0B (tests/mpu)
  • added support for buckets with non-zero mpu parameter to if_u32.c (tests/mpu)
  • police.c:dump_police_tc issued mpu as rate, not as size

 tcng-8n (17-MAY-2002)
tcng-8n.tar.gz (384 kB)

Changes:

  • forgot to include tests/sprintf in distribution, oops
  • sprintf ignored leading zero in format string (tests/sprintf)
  • sprintf caused tcc to abort when processing %% with a format specification yielding not exactly one character (tests/sprintf)
  • sprintf now also supports octal output (%o), and precisions other than "*" (tests/sprintf)
  • documented further IPv6 constraints in TODO
  • tcsim_filter now prints snapshots before processing events at the same time
  • tcsim_filter now sorts snapshots
  • added regression tests for tcsim_filter's -s option, and the corresponding bypass in tcsim_plot (tests/tcssnap)
  • tcsim_plot ignores snapshots from tcsim_filter if writing the plot to standard output (tests/tcssnap)
  • ".ipv6" test was missing in tests/ipv6
  • updated change log entry of version 8d accordingly

 tcng-8m (17-MAY-2002)
tcng-8m.tar.gz (382 kB)

Changes:

  • util.c:alloc_sprintf advanced pointer too far on %.*s
  • util.c:alloc_sprintf mis-calculated length if string is shorter than precision
  • tcng: added new function sprintf(fmt,...) with Perl-like semantics (tests/sprintf)
  • tcsim_filter: new option -s
  • tcsim_plot copies lines beginning with "#" to standard output

 tcng-8l (16-MAY-2002)
tcng-8l.tar.gz (381 kB)

Changes:

  • new Makefile target "valgrind" to run all regression tests under Valgrind
  • rel_access over-optimized <= and >= with masked access, yielding incorrect classifiers (tests/relmask)
  • added external program tcc-ext-null that blackholes input, which is useful for performance tests
  • updated Makefile, build/tcng.spec.in, and scripts/symlinks.sh according to above change

 tcng-8k (16-MAY-2002)
tcng-8k.tar.gz (380 kB)

Changes:

  • iflib_arith.c:ne_to_eq now also supports IPv6 addresses (tests/ipv6relne)
  • iflib_arith.c:rel_general now also supports IPv6 addresses (tests/ipv6relge)
  • updated tests/ipv6relar accordingly
  • removed obsolete entries from TODO

 tcng-8j (14-MAY-2002)
tcng-8j.tar.gz (378 kB)

Changes:

  • tcsim_plot still called tcsim_filter filter.pl (tests/tcng-8j)
  • tcsim_plot, tcsim_filter, and tcsim_pretty still called themselves in comments plot.pl, filter.pl, and pretty.pl, respectively
  • added tcsim_plot to programs recognized by scripts/runtests.sh
  • "egress" classes were not converted to "dsmark" when using tc output (tests/tcng-8j)
  • tcsim_plot now writes to standard output if the file name for -p, -png, or -jpeg is "-"
  • tcsim_plot now sets output to /dev/null before terminating, to avoid plotting twice
  • added rules for common configurations of srTCM and trTCM to if_u32.c (tests/u32srtcm, tests/u32trtcm)
  • if_u32.c:issue_actions ignored the do_actions flag and generated actions at each phase, which would yield invalid advanced meters (like trTCM)

 tcng-8i (14-MAY-2002)
tcng-8i.tar.gz (376 kB)

Changes:

  • tcc: -xall:... implies "all" (tests/extall, suggested by Jacob)
  • iflib_arith.c: rel_math, rel_to_eq, and rel_eq_or now also support IPv6 addresses (tests/ipv6relar)
  • updated TODO accordingly

 tcng-8h (30-APR-2002)
tcng-8h.tar.gz (374 kB)

Changes:

  • tests/intro was not included in distribution
  • constant overflow in multiplication and bit-shifts now yields an error (tests/range)
  • constant overflow caused by right-shift of access now yields a warning (tests/range)
  • updated tests/access and tests/ipv6 accordingly
  • attempting to take the modulo of an address now yields an error (tests/tcng-8h)
  • tcc/named.c:ipv6_host always used AI_NUMERICHOST, even if allow_dns was set
  • tcc/tcng.y: clarified that "host" must be identical to "host4"
  • tcsim now supports IPv6 addresses and 128 bit arithmetic (tests/ipv6tcs)
  • tcsim has new type qualifiers "ipv4" and "ipv6" (tests/ipv4tcs, tests/ipv6tcs)
  • split packet.def into packet4.def and packet6.def, with new packet.def that includes both
  • updated Makefile, build/tcsim.spec.in, and scripts/symlinks.sh according to above change
  • added remaining pending IPv6 issues to TODO

 tcng-8g (30-APR-2002)
tcng-8g.tar.gz (370 kB)

Changes:

  • tcsim now accepts an optional unit name after the interface rate (tests/tcsiru)
  • changed tcc/iflib_arith.c:rel_access to use 128 bit arithmetic
  • updated tests/access accordingly
  • if_u32.c and if_ext.c now support 128 bit matches (tests/ipv6u32 and tests/ipv6ext)
  • new tcc include file default.tc, which is included by default (tests/definc)
  • split fields.tc into fields4.tc and fields6.tc, with new fields.tc that includes both
  • updated Makefile, build/tcng.spec.in, and scripts/symlinks.sh according to above two changes
  • new tcc option -n to suppress inclusion of default.tc (tests/definc)
  • updated tests/cpp31 accordingly

 tcng-8f (29-APR-2002)
tcng-8f.tar.gz (367 kB)

Changes:

  • oops, 8e had wrong release date
  • tcsim/usvc.c:rtnl_open did not initialize rth->seq, yielding a complaint from Valgrind
  • removed corresponding sections from build/valgrind.supp.in
  • configure is now compatible with iproute2-2.4.7-now-ss010803, 010824, and 020116(-try)
  • tcng/README now recommends to download iproute2-2.2.4-now-ss010824.tar.gz (this also affects tcsim.spec)

 tcng-8e (26-APR-2002)
tcng-8e.tar.gz (367 kB)

Changes:

  • added new operators "host4" and "host6" to processs IPv4 and IPv6 addresses, respectively (tests/ipv4, tests/ipv6)
  • tcng.l now recognizes RFC2373-style IPv6 addresses (tests/ipv6, tests/misfeatures)
  • print_data can now print IPv6 addresses (tests/ipv6)
  • decisions with non-logical operators are now caught earlier (tests/decerr)
  • various minor fixes in nascent but still unusable IPv6 support (tests/ipv6)

 tcng-8d (25-APR-2002)
tcng-8d.tar.gz (365 kB)

Changes:

  • IPv4 addresses have now their own first-class data type (tests/ipv4)
  • in debugging output and variable use output, IPv4 addresses are now printed as dotted quads instead of hexadecimal integers
  • updated tests/named2 accordingly
  • added size qualifiers "ipv4" and "ipv6" (tests/ipv4, tests/ipv6)
  • dotted quads and "host" now yield IPv4 addresses instead of integers (tests/ipv4)
  • "/" becomes a mask operator when applied to an IPv4 address (tests/ipv4)
  • added partial (useless) support for IPv6 addresses
  • added 128 bit arithmetic operations in u128.[ch]
  • print_expr now also prints an operator's type if it is not dt_none, dt_unum, or dt_decision
  • fields.tc: changed type of ip_src, ip_dst, and igmp_group from .nl to .ipv4 (tests/ipv4)
  • inside tcng.y, FIELD_NAME was of type char * instead of FIELD *

 tcng-8c (24-APR-2002)
tcng-8c.tar.gz (362 kB)

Changes:

  • scripts/runtests.sh: added command-line option -g for using Valgrind (see http://developer.kde.org/~sewardj/)
  • added Valgrind suppression file build/valgrind.supp.in
  • added fields for old-style TOS octet (RFC791) to idiomatic.tc (suggested by Jacob)

 tcng-8b (25-MAR-2002)
tcng-8b.tar.gz (361 kB)

Changes:

  • merged class of ingress/egress was sometimes referenced after freeing, yielding weird results or crashes (tests/merged, reported by Jacob)
  • tcc now warns that class for shared qdisc should be implicit (tests/merged)
  • added warning switch "explicit" to control above warning (tests/merged)
  • updated tests/classvar, tests/dpcwng, tests/egress, tests/extqch, tests/ingin, and tests/tcng-7n accordingly

 tcng-8a (15-MAR-2002)
tcng-8a.tar.gz (360 kB)

Changes:

  • changed tests/intro to use "egress" instead of "dsmark"
  • improved error message when attempting to use class selection path with non-class (tests/tcng-8a, reported by Jacob)
  • updated tests/nullcsp accordingly
  • "tc" target didn't call egress "dsmark", and forgot to add default index parameter (tests/tcng-8a)
  • updated tests/egress accordingly

 tcng-7z (12-MAR-2002)
tcng-7z.tar.gz (359 kB)

Changes:

  • runtests.sh: added commands tcsim_unadorned and tcc_unadorned to invoke the respective program without adding options or arguments
  • changed tests/tcng-6z to use tcsim_unadorned and tcc_unadorned instead of tcsim/tcsim and tcc/tcc, respectively
  • default fifos are no longer added to yet-to-be-numbered (by a class selection path) class, where they then then caused a complaint about numbering a class with shared qdisc (tests/tcng-7z, reported by Jacob)

 tcng-7y (12-MAR-2002)
tcng-7y.tar.gz (359 kB)

Changes:

  • added new qdisc "egress" that is synonymous to "dsmark", except that it implies "default_index 0", and that using it as an "inner" qdisc produces a warning (tests/egress)
  • changed all error and warning messages mentioning "dsmark" to say "egress" if using egress (tests/egress)
  • updated tests/extndm accordingly
  • added regression test for dsmark's unnumbered and parameterless class warning (tests/dpcwng)
  • fixed off by one error in dsmark index out of range diagnostic (tests/tcng-7y)
  • updated tests/dsind and tests/tcng-1i accordingly
  • ingress qdisc generated invalid default classification decision dt_class instead of dr_class (tests/tcng-7y)

 tcng-7x (12-MAR-2002)
tcng-7x.tar.gz (358 kB)

Changes:

  • tests/ingin: added tcc-ext-echo example
  • added introductory example script tests/intro (suggested by Jacob)
  • policer id assignment is now almost O(n), instead of O(n^2) (tests/fastpol)
  • tcc/Makefile did not rebuild ports.tc after "make clean"

 tcng-7w (11-MAR-2002)
tcng-7w.tar.gz (356 kB)

Changes:

  • tcc: moved class selection path code to separate file csp.c
  • dsmark now accepts class zero generated via class selection paths (tests/tcng-7w)
  • class selection paths can now be empty (tests/nullcsp)
  • tcng now allows ingress qdisc to have a child qdisc, like dsmark (tests/ingin)
  • updated tests/ingext accordingly
  • support for class selection paths is now qdisc flag (tests/tcng-7w)
  • updated tests/extndm accordingly

 tcng-7v (7-MAR-2002)
tcng-7v.tar.gz (354 kB)

Changes:

  • variable name lookup now uses a hash instead of a linear search
  • tcc: added undocumented option -H to dump hash statistics (tests/varhash)
  • iflib_actdb.c: when assigning preferred action numbers, use an unsorted list of preferred numbers first, then a sorted list, instead of always walking the whole action tree (tests/fastpref)

 tcng-7u (5-MAR-2002)
tcng-7u.tar.gz (352 kB)

Changes:

  • removed "ingress" qdisc restriction when using -Xx,all (tests/ingext)
  • changed error messages for ingress qdisc to include location (tests/ingext)
  • in diagnostics related to an inner qdisc, gred and dsmark now report qdisc location, not class location (tests/tcng-7u)
  • updated tests/grederr accordingly

 tcng-7t (4-MAR-2002)
tcng-7t.tar.gz (351 kB)

Changes:

  • tcsim/klink.c: backed out accidential (but harmless) inclusion of linux/ip.h
  • tcc/ext/tccext.c: allocation for bit strings is now rounded to the next full machine word (suggested by Jacob)
  • printing the usage of redefined variables containing structures crashed tcc (tests/tcng-7t, reported by Jacob)
  • increased packet size in tests/barrier because too short packets could crash dsmark since tcsim pretends they're IPv4 anyway

 tcng-7s (4-MAR-2002)
tcng-7s.tar.gz (351 kB)

Changes:

  • updated kernel version example in tcng/README from 2.4.17 to 2.4.18
  • configure is now compatible with 2.4.19 (pre-release, tested with pre2), 2.5.3, and 2.5.4
  • README: clarified valid kernel versions, i.e. that 2.5.5 and above are currently not supported
  • began adding "Bivio Networks" where "Network Robots" is used, or replacing the latter

 tcng-7r (1-FEB-2002)
tcng-7r.tar.gz (350 kB)

Changes:

  • tccext: added new construct "barrier", indicated by TCCEXT_RULE->actions == NULL, to delimit uncombined, locally optimized rule sets
  • updated tccext.h, tccext.c, echo.c, and match.c accordingly (tests/barrier)
  • tccext: new configuration keyword "nocombine" to keep tcc from merging ifs into a single large expression (suggested by Jacob; tests/nocombsta, tests/nocombmet)
  • tcc-ext-test now also accepts option "nocombine" (tests/barrier)

 tcng-7q (31-JAN-2002)
tcng-7q.tar.gz (348 kB)

Changes:

  • "drop with u32" was missing in version 7o change log entry
  • changed if_ext_act.c to store pointers to buckets/classes, instead of values extracted from them
  • tcc: renamed if_ext_act.c to iflib_actdb.c to reflect sharing with if_u32.c
  • u32 target now supports SLB and DLB meters (tests/u32slb, tests/u32dlb)
  • tcc incorrectly required "mtu" if "peakrate" was not specified (tests/tcng-7q)
  • meters.tc: meter test macros did not enclose argument in parentheses, and grammar did not allow parentheses around policer definition (tests/tcng-7q)
  • meters.tc: meter test macros now evaluate macro argument only once (tests/metmac)

 tcng-7p (29-JAN-2002)
tcng-7p.tar.gz (344 kB)

Changes:

  • fixed buggy buffer use in location.c (tests/tcng-7p)
  • in variable use file, each structure entry now yields a separate line, even if the whole structure was generated in a single assignment (tests/struct)
  • data_clone left parent pointer of top-level structure elements uninitialized
  • compound expressions may now also include field definitions (tests/compound)
  • meters.tc now has macros SLB, DLB, srTCM, and trTCM which are used $var = SLB(...) instead of set_SLB($var,...) (tests/meters2)

 tcng-7o (29-JAN-2002)
tcng-7o.tar.gz (343 kB)

Changes:

  • tcc: -S now omits separator entirely
  • updated tests/tcng-7n accordingly
  • back-ported match generation back-end from external interface to u32, to allow for transparent elimination of contradictory matches
  • updated tests/tcng-2o accordingly
  • also u32 targets now propagates actions to leaf nodes
  • u32 did not generate correct default classification when negating (tests/tcng-7o)
  • u32 target now supports "drop" action (tests/u32drop)

 tcng-7n (27-JAN-2002)
tcng-7n.tar.gz (342 kB)

Changes:

  • tcc: undocumented option -S joins structure entries in variable use output with an underscore instead of a dot (tests/tcng-7n)
  • dsmark now auto-assigns class number if using only one class, so that this class has the implicit qdisc (reported by Jacob; tests/tcng-7n)
  • values.tc now complains if included directly, not via fields.tc (tests/includes)
  • tcsim's packet.def pretends to be fields.tc when including values.tc (tests/includes)
  • new header file idiomatic.tc, for inclusion from fields.tc, with convenience macros for idiomatic patterns in TCP/IP packets (tests/idiomatic)
  • updated scripts/symlinks.sh and build/tcng.spec.in to include idiomatic.tc
  • dsmark did not detect duplicate class numbers (tests/tcng-7n)

 tcng-7m (26-JAN-2002)
tcng-7m.tar.gz (340 kB)

Changes:

  • added first-class data type "bucket", which is similar to "police", but it only takes parameters "rate", "burst", "mpu", "pragma", and "tag", has no attached decisions, and cannot be used in filter ... police ... expressions (tests/bucket)
  • updated meters.tc to use buckets instead of policers (the "mtu" parameter is still accepted, but now ignored)
  • tcc/data.[ch]: removed ancient #ifdefs that controlled whether data_destroy* really free data
  • added compound expression construct { $var = ...; ...; expression; } (tests/compound)
  • added structure data type (associative arrays) (tests/struct)
  • updated tests/tcng-1h and tests/typerr to reflect changed diagnostics due to parser modifications
  • unit suffixes and size qualifiers are now processed in parser instead of scanner, reducing name space restrictions (tests/tcng-7m)
  • tcc accepts (and ignores) option -S again (will be used for compatibility mode in the future)

 tcng-7l (25-JAN-2002)
tcng-7l.tar.gz (336 kB)

Changes:

  • several small corrections in tcc's usage output
  • tcc: removed option -S (obsolete since version 6w)
  • updated tests/tcng-6w accordingly
  • configure is now compatible with 2.5.3 (pre-release, tested with pre5)
  • tcsim/setup.klib: changed af_netlink.c filter for 2.5.3-pre5 compatibility

 tcng-7k (15-JAN-2002)
tcng-7k.tar.gz (336 kB)

Changes:

  • renamed tcsim's pretty.pl to tcsim_pretty
  • updated tcsim/README accordingly
  • added tcsim_pretty to tcsim RPM
  • upgraded scripts/t2x.pl to version "15-JAN-2002" (adds %%end directive and fixes meta-characters as \verb deliminators)
  • several small corrections in tcsim's usage output and tcsim/README

 tcng-7j (1-JAN-2002)
tcng-7j.tar.gz (336 kB)

Changes:

  • updated kernel version example in tcng/README from 2.4.16 to 2.4.17
  • configure is now compatible with 2.4.18 (pre-release, tested with pre1), 2.5.2 (pre-release, tested with pre5)
  • field roots are now syntactically equivalent to fields and can be combined with offsets and size qualifiers (tests/tcng-7j)
  • updated tests/grpalloc accordingly
  • corrected missing access size adjustment uncovered by field root syntax change
  • if_ext.c: added assertion to catch above type of bug

 tcng-7i (31-DEC-2001)
tcng-7i.tar.gz (335 kB)

Changes:

  • credits at the beginning of README now also mention Jacob Teplitsky's contributions
  • added new tcng construct "field_root" to set non-zero base offset group (tests/froot)
  • updated tcc/LANGUAGE accordingly
  • tcc now assigns offset group numbers starting with 100 (defined in config.h:AUTO_OFFSET_GROUP_BASE, tests/grpalloc)
  • updated tests/bitfield, tests/extmult, tests/field, tests/field2, tests/precond, and tests/tcng-2u accordingly

 tcng-7g (18-DEC-2001)
tcng-7g.tar.gz (330 kB)

Changes:

  • macro expansions used by tcc_var2fix.pl were incompatible with Red Hat cpp 2.96-54; rewrote tcc_var2fix.pl to use different expansion mechanism
  • tcc gave syntax error for file beginning with semicolon (tests/tcng-7g)
  • tcsim treated semicolons after whitespace in tcc input as comments (tests/tcng-7g)

 tcng-7f (14-DEC-2001)
tcng-7f.tar.gz (330 kB)

Changes:

  • split tcc/fields.tc into fields.tc and values.tc to allow inclusion of the latter by packet.def
  • updated tcc/LANGUAGE accordingly
  • added tcsim/packet.def, a modernized version of ip.def (tests/packet)
  • -N skips most optimizations in the "old" algorithm, for experiments with "smart" backends
  • mask operator generated mask 0 instead of 0xffffffff for ":32" (reported by Jacob; tests/tcng-7f)

 tcng-7e (13-DEC-2001)
tcng-7e.tar.gz (327 kB)

Changes:

  • the use of bare words as strings in expressions or in warning labels is now a syntax error
  • updated tests/bare, tests/host, tests/ports, tests/tag, and tests/tcng-7c accordingly

 tcng-7d (13-DEC-2001)
tcng-7d.tar.gz (327 kB)

Changes:

  • tcc now issues a warning if treating a bare word as a string in expressions and in warning label lists (tests/bare)
  • updated tcc/LANGUAGE accordingly
  • updated examples-ng/prio+rsvp, tests/extrasemi, tests/host, tests/misfeatures, tests/named, tests/named2, tests/ports, tests/semicolon, tests/tag, tests/varredef, tests/waprpos, and tests/warn accordingly

 tcng-7c (13-DEC-2001)
tcng-7c.tar.gz (326 kB)

Changes:

  • fields.tc: changed definitions of ip_RF, ip_DF, ip_MF, tcp_URG, tcp_ACK, tcp_PSH, tcp_RST, tcp_SYN, and tcp_FIN to return 0 or 1, not 0 or 2^n (tests/bitfield)
  • Makefile now uses rpm --eval instead of build/dummy.spec hack
  • removed build/dummy.spec
  • filter "route" parameter "fromif" now accepts constant expressions, and no longer requires fixed string (tests/tcng-7c)

 tcng-7b (11-DEC-2001)
tcng-7b.tar.gz (326 kB)

Changes:

  • added option -N or --with-tcsim to "configure"
  • tcc/iflib-red.c: fixed gcc 3.1 syntax incompatibility
  • changed tests/cppdollar to ignore extra blank lines emitted by cpp 3.1
  • tcc/location.c: changed default file name from "(stdin)" to "", for cpp 3.1 compatibility (tests/cpp31)
  • tcc/location.c now inserts "" when encountering empty file name, e.g. from older versions of cpp (tests/cpp31)
  • updated tests/bands, tests/basic, tests/blocks, tests/cbqroot, tests/defdsm, tests/drop, tests/dsind, tests/expensive, tests/extcbq, tests/extflt, tests/extlocbas, tests/extlocext, tests/extndm, tests/fredef, tests/grederr, tests/host, tests/ifnamsiz, tests/location, tests/misfeature, tests/named, tests/newsynmsc, tests/phasep, tests/ports, tests/selpath, tests/setpathcbq, tests/selpathdup, tests/selpathext, tests/semicolon, tests/tag, tests/tcng-1g, tests/tcng-1h, tests/tcng-1i, tests/tcng-1j, tests/tcng-2e, tests/tcng-2k, tests/tcng-3k, tests/tcng-3m, tests/tcng-4f, tests/tcng-4i, tests/tcng-4u, tests/tcng-5a, tests/tcng-5c, tests/tcng-6t, tests/tcng-6w, tests/tcng-6x, tests/tcng-7a, tests/typerr, tests/variables, tests/varredef, tests/waprpos, and tests/warn accordingly
  • updated tcng/tcc/README accordingly (i.e. also location map uses "" instead of "-")
  • added -X phase "P" for tcsim's cpp
  • tcsim/cfg.l also follows "" convention (tests/cpp31)
  • changed tests/modules to work around strange environment variable propagation in recent version of bash
  • scripts/run-all-tests: work-around for case insensitive character range bug in some versions for bash

 tcng-7a (7-DEC-2001)
tcng-7a.tar.gz (325 kB)

Changes:

  • tcc -E -E no longer refuses ">" and ">=" as "expensive" even though iflib_arith.c:rel_general could handle them (tests/tcng-7a)

 tcng-6z (6-DEC-2001)
tcng-6z.tar.gz (325 kB)

Changes:

  • updated kernel version example on tcng/README from 2.4.14 to 2.4.16
  • configure is now compatible with 2.4.16, 2.4.17 (pre-release, tested with pre5), 2.5.0, and 2.5.1 (pre-release, tested with pre5)
  • if tcsim couldn't exec tcc, it claimed cpp was missing
  • tcc.c:main did not allocated room for -$ in cpp argv, causing tcsim to segfault if invoked without arguments (tests/tcng-6z)
  • tcc/Makefile: added comment explaining why "make clean" and "make spotless" don't remove file "port-numbers"
  • tcc did not accept semicolons immediately following opening curly brace (tests/tcng-6z)

 tcng-6y (20-NOV-2001)
tcng-6y.tar.gz (325 kB)

Changes:

  • tcc/README: added unnamed scopes to description of variable usage output
  • tcsim now allows double quotes around interface names (tests/tcng-6y)
  • tcc-ext-test subsystem now removes .so, .o, and .out files after usage
  • fields.tc: fragment flag values were shifted by four bits (tests/tcng-6y)
  • updated tests/subbyte accordingly

 tcng-6x (19-NOV-2001)
tcng-6x.tar.gz (324 kB)

Changes:

  • tcc and tcsim now invoke cpp with the option -$ (tests/cppdollar)
  • tcng: blocks ({...}) are allowed anywhere inside other blocks (tests/blocks)
  • updated tcc/LANGUAGE accordingly
  • removed comment explaining past syntax weirdness from tcc/tcng.y
  • lexer read token past closing curly brace with inner scope (tests/tcng-6x)
  • tcc_var2fix.pl generated macros with same name as variables, causing conflicts when using -$
  • removed explicit detection of old-style syntax error of named device without block (tests/newsynmsc)
  • like classes and filters, now also qdiscs can be extended (tests/extend)
  • util.h:__DP_CHECK did not print error location (tests/tcng-6x)
  • on SIGINT, tcc tried to close stream even if already closed, failing assertion
  • added external script tcc-ext-abort that simply sends a SIGABRT to itself
  • tcc now fully decodes and reports exit status and signals from external program (reported by Ronald Murphy; tests/tcng-6x)

 tcng-6w (15-NOV-2001)
tcng-6w.tar.gz (322 kB)

Changes:

  • tcc's usage output did not mention -u in the synopsis
  • tcc: backwards-compatibility -S no-op now yields a warning (tests/tcng-6w)
  • filter.c:unum_only now prints source code location on error (tests/tcng-6w)
  • tcc did not refuse filters other than tcindex on child qdiscs or their classes when using "all" with external interface (tests/tcng-6w)
  • tcc adds empty classifier if classifier is missing when using "all" with external interface (tests/tcng-6w)
  • updated tests/extlocbas, tests/pragma, tests/tcng-4d, tests/tcng-4l, tests/tcng-4o, and tests/tcng-5s accordingly

 tcng-6v (9-NOV-2001)
tcng-6v.tar.gz (321 kB)

Changes:

  • updated kernel version example on tcng/README from 2.4.13 to 2.4.14
  • configure is now compatible with 2.4.15 (pre-release, tested with pre1)
  • iflib_red.c:bubble_or mis-converted (a || side_effect) && b (tests/tcng-6v)
  • iflib_act.c:iflib_actions now does second round of optimizations to resolve constants hidden between actions (see above)
  • updated tests/misfeatures accordingly
  • type error messages now contain the type found, and frequently also the type expected (tests/typerr)
  • updated tests/ports, tests/tcng-6t accordingly

 tcng-6u (26-OCT-2001)
tcng-6u.tar.gz (320 kB)

Changes:

  • tcc and tcsim did not look at exit status of cpp subprocess (reported by Ronald Murphy; tests/tcng-6u)
  • changed tcc_var2fix.pl to use a field instead of a dummy macro assignment, such that no cleanup is needed after invoking the "next" macro, and continuation (i.e. semicolon or curly brace) following the generated macro can be applied to the "next" macro

 tcng-6t (25-OCT-2001)
tcng-6t.tar.gz (319 kB)

Changes:

  • assert in qdisc.c:add_default_fifos assumed qdisc was already sanity-checked (reported by Ronald Murphy; tests/tcng-6t)
  • updated kernel version example on tcng/README from 2.4.12 to 2.4.13
  • configure is now compatible with 2.4.14 (pre-release, tested with pre1)
  • dropped tcc/tcm.tc from the distribution (and all its offsprings)
  • added scripts/update-port-numbers.sh and scripts/extract-port-numbers.pl to download IANA port-numbers file and to convert it a format suitable for inclusion by tcng scripts (tests/ports)
  • added ports.tc to source distribution and to all tcc binary distributions
  • in expressions X+0, 0+X, and X-0, type of X was not verified (tests/tcng-6t)
  • tcsim/ip.def now uses ports.tc for port definitions (PORT_DNS changed to PORT_DOMAIN)
  • updated examples-ng/u32, examples/u32, tests/ext, and tests/trace accordingly
  • removed description of ambiguous drop with old syntax from tcc/LANGUAGE

 tcng-6s (23-OCT-2001)
tcng-6s.tar.gz (290 kB)

Changes:

  • cleaned up "TODO"
  • fields.tc: ip_RF, ip_DF, ip_MF, tcp_URG, tcp_ACK, tcp_PSH, tcp_RST, tcp_SYN, tcp_FIN no longer contain explicit comparison, allowing tcc to perform better optimizations
  • updated tests/subbyte accordingly
  • moved scripts/var2fix.pl to tcc/tcc_var2fix.pl
  • scripts/symlinks.sh links tcc/tcc_var2fix.pl to bin/
  • build/tcng.spec.in: included tcc/tcc_var2fix.pl in the tcc-devel RPM
  • scripts/symlinks.sh tried to link to directory with ln -s instead of ln -sfn

 tcng-6r (23-OCT-2001)
tcng-6r.tar.gz (290 kB)

Changes:

  • alternate device name syntax "dev " (suggested by Simon Nuthall; tests/named2)
  • updated tests/location and tests/tag accordigly (used device name "dev")
  • updated tcc/LANGUAGE accordingly
  • enabled "new" algorithms (except for the "new" bit-tree) and removed some old code (iflib_red.c:optimize_eq, shift handling in iflib_bit.c:eq_fsm, special treatment of -N in tcc.c:main)
  • updated tests/arith, tests/access, tests/bittest, tests/buckfill, tests/misfeatures, tests/tcng-2k, tests/tcng-5z
  • moved various shift and mask related problems from tests/misfeatures to tests/tcng-6r

 tcng-6q (23-OCT-2001)
tcng-6q.tar.gz (291 kB)

Changes:

  • ext_io.c now cleans up temporary files when interrupted with SIGINT
  • added scripts/run-all-tests which does what the name suggests
  • TCNG_TESTS_BINDIST and tcng-tests RPM include run-all-tests
  • removed toys/cbq and toys/if
  • updated toys/cspnest and toys/tunnel to use new syntax
  • -E -E now reports negation only when encountering it (tests/bittest)
  • expressions without relational operator are automatically treated as X != 0 (added in 6o; tests/bittest)
  • iflib_not optimizes double negation and single bit tests (tests/bittest)

 tcng-6p (23-OCT-2001)
tcng-6p.tar.gz (290 kB)

Changes:

  • switched tcc to exclusively use new syntax (also affects meters.tc and var2fix.pl)
  • cleaned up syntax for classes, filter specifications in selections, and the two "... if" cases previously requiring %prec
  • updated tests/newsynmsc and tests/semicolon accordingly
  • fixed minor glitch in tests/extrasemi
  • updated tcc/LANGUAGE

 tcng-6o (23-OCT-2001)
tcng-6o.tar.gz (291 kB)

Changes:

  • tcc/tcng.y: changed rules for assignments, qdiscs bodies, class bodies, filter bodies, and selector lists from right-hand side to left-hand side recursion to avoid overflowing YACC stack
  • tests/misfeatures: noted that dsmark with class selection paths gets confused if nounspec is set, the classification is not self-contained, and default_index points to a non-existent class number
  • changed /.*something.*/ to /^.*something.*/ in sed regexps of tests/buckfill and tests/tcng-6j, making the tests up to four times faster (this was the "very slow tcsim send" bug)
  • tcc: -N -N didn't switch to "old" algorithm
  • tcc: -N -N -N switches to common "access rel constant" conversion algorithm iflib_arith:rel_access (tests/access)
  • dump_failed now prints shorter "can't dump subexpression", and optionally the reason of failure instead of the line number
  • updated tests/additive, tests/access, tests/misfeatures, and tests/tcng-5q accordingly
  • changed if_u32.c:dump_eq and if_ext.c:dump_match to handle multiple ands (previously filtered by iflib_red.c:optimize_eq)
  • tcng.l used strtol to parse uint32_t, limiting all integer literals to 31 bits (tests/tcng-6o)
  • tcsim's cfg.l used strtol to parse binary uint32_t (tests/tcng-6o)

 tcng-6n (20-OCT-2001)
tcng-6n.tar.gz (288 kB)

Changes:

  • "tag" parameter did not accept expressions (tests/tcng-6n)
  • "pragma" parameter did not accept expressions (tests/tcng-6n)
  • tests/misfeatures: "pragma" should accept normal expressions, not only primary expressions
  • tcc/meters.tc.in: all meter definition macros (set_*) now have optional parameters "tag" and "pragma" to set the tag and one pragma for the buckets generated (only with new syntax; tests/mettagpra)
  • moved old TCM examples in toys/srtcm.tc and toys/trtcm.tc to tests/pol_ext
  • tcng tests bindist and tcng-tests RPM no longer include toys/srtcm.tc and toys/trtcm.tc
  • prio now automatically raises default for "bands" parameter if necessary (tests/bands)
  • updated tests/tcng-4u accordingly

 tcng-6m (20-OCT-2001)
tcng-6m.tar.gz (287 kB)

Changes:

  • scripts/runtests.sh now invokes tcc with -S -S -S, and tcsim with -Xc,-S -Xc,-S -Xc,-S -DTCNG_SEMICOLON
  • converted examples-ng/* to new syntax
  • converted tcc/example to new syntax
  • converted toys/srtcm.tc and toys/trtcm.tc to new syntax
  • de-crowded tests/arith, tests/host, tests/misfeatures, tests/named, tests/tcng-1i, tests/tcng-1j, tests/tcng-1o, tests/tcng-2f, and tests/tcng-3g
  • converted all regression tests to new syntax
  • removed ambiguous syntax tests from tests/misfeatures
  • removed ugly old syntax tests from tests/newsynmsc and tests/semicolon
  • tests/tcng-5y showed spectacular failure of old syntax, with subtle syntax ambiguity leading to subtle error in generated classifier
  • TODO: removed entry for mythical __ file bug

 tcng-6l (19-OCT-2001)
tcng-6l.tar.gz (287 kB)

Changes:

  • extra semicolons are now allowed where one semicolon or a block end appears, e.g. ;;; is equivalent to ; and }; is equivalent to } (tests/extrasemi)
  • new syntax requires interface sections to be enclosed by curly braces (tests/newsynmsc)
  • new syntax does no longer allow filters specified in selectors to have their own blocks (tests/newsynmsc)
  • tcc now handles both old-style and new-style syntax for filters specified in selectors (tests/newsynmsc)
  • updated tests/semicolon accordingly
  • documented new syntax in tcc/LANGUAGE
  • tcc.c:main did not allocated room for -DTCNG_*SEMICOLON in cpp argv, causing tcc to segfault if invoked without arguments
  • empty tags are now ignored (updated tests/tcng-5a accordingly)
  • empty pragmas are now ignored (updated tests/pragma accordingly)
  • tags can now also be specified as "tag " (updated tests/tag)
  • strings are now first-class data types in the tcng language, can be compared with relational operators, and can be concatenated with + (tests/string)
  • updated tcc/LANGUAGE accordingly
  • "host" can now be followed by an expression, not only a host name or IPv4 address (tests/named2)
  • host, port, ipproto, and (ether) protocol parameters can now be also use strings expression, not just string literals or numeric expressions (tests/named2)
  • variables now record the location where they are created, yielding much better location information in warnings
  • updated tests/location, tests/selpath, tests/tcng-3k, tests/tcng-5c, tests/varredef, tests/waprpos, and tests/warn accordingly
  • syntax changes changed the location indicated in some error messages. Updated tests/named accordingly
  • tcc/LANGUAGE: split parameters section to cover expressions in their own section

 tcng-6k (19-OCT-2001)
tcng-6k.tar.gz (283 kB)

Changes:

  • fixed precond() example in tcc/LANGUAGE (reported by Ronald Murphy)
  • tcng language will soon require semicolons at the end of constructs, unless they end with a block, e.g. $x = 5 will be $x = 5; fifo will be fifo; but prio { ... } will stay the same
  • tcc can help migration with the undocumented -S option: without -S, behaves like it did before, with -S it warns when using semicolons (for comments), with -S -S semicolons no longer begin comments, and tcc warns if a semicolon is missing somewhere, and with -S -S -S missing semicolons yield an error (tests/semicolon)
  • updated fields.tc accordingly (remains backwards-compatible)
  • tcc adds -DTCNG_NOSEMICOLON to CPP options if no or only one -S it set, -DTCNG_SEMICOLON if more than one -S is set
  • meters.tc is now generated via macro-generating preprocessor scripts/var2fix.pl
  • updated meters.tc such that it is generated to contain a part with, and one without semicolons (new files meters.tc.in and meters_nosemi.tc.in)
  • duplicate global pragma location is reported more accurately
  • updated tests/waprpos accordingly

 tcng-6j (17-OCT-2001)
tcng-6j.tar.gz (281 kB)

Changes:

  • Makefile: "tcc" has no dependency on "symlink", breaking RPM build in 6i
  • tcc/location.c:file_open printed wrong file name on error
  • meters.tc: trTCM_red fell through if packet conformed to Tc, but not to Tp (tests/tcng-6j)
  • if_ext_act.c:add_actions gave up too quickly when encountering unusual expressions (tests/tcng-6j)

 tcng-6i (17-OCT-2001)
tcng-6i.tar.gz (281 kB)

Changes:

  • tcc and tcsim now print CPP's path if CPP isn't found (reported by Jacob)
  • tcng-tests RPM no longer includes tests/usage, which can safely be tested in a regular build environment, and is very location-dependent
  • fields.tc: renamed fields "ip", "tcp", etc. to "ip_hdr", "tcp_hdr", etc.
  • updated tests/classvar, tests/field, tests/tcng-4n, and tests/tcng-5y accordingly
  • described now consistent field naming convention in tcc/LANGUAGE
  • tcm.tc now fails with an #error (was #warning) and will be removed very soon
  • updated TODO

 tcng-6h (15-OCT-2001)
tcng-6h.tar.gz (281 kB)

Changes:

  • unless -B is set: -N is now enabled by default, and double -N switches off -N (to reuse old regression tests for a while)
  • updated tests/buckfill, tests/classvar, tests/expensive, tests/fastpath, tests/relop, tests/tcng-5j, tests/tcng-5y, and tests/tcng-5z accordingly
  • build/tc{ng,sim}.spec.in: %doc came before %defattr, which caused documentation files to pick up wrong ownership
  • meters.tc was not compatible with SuSE's CPP that identifies itself as CPP 2.95.2 but appears to be different from the CPP that comes with GCC 2.95.2

 tcng-6g (15-OCT-2001)
tcng-6g.tar.gz (279 kB)

Changes:

  • tcc: moved generation of location map and variable use list before build phase, so external programs can use these files
  • doc/external.tex: clarified that tokens need to be added to a bucket not only on "conform", but also on "count".
  • removed corresponding (rather obscure) tests from tests/misfeatures
  • tcc/ext/match.c and tcc/tcm_cls.c now refill buckets on "count" too (tests/buckfill)
  • iflib_red.c:prune_shortcuts sometimes removed count in "count ... || 1" (tests/buckfill)
  • tcm_cls.c now prints policer state if DEBUG is #defined
  • added correct solution for double count test, and failure of "old" algorithm (tests/misfeatures)

 tcng-6f (12-OCT-2001)
tcng-6f.tar.gz (279 kB)

Changes:

  • updated path to fields.tc in tcc/LANGUAGE
  • added function "precond" that evaluates the preconditions of its argument (tests/precond)
  • added regression tests for bit and other sub-byte fields (tests/subbyte)
  • fixed subtle pointer aliasing issues in field.c

 tcng-6e (12-OCT-2001)
tcng-6e.tar.gz (277 kB)

Changes:

  • updated kernel version example on tcng/README from 2.4.10 to 2.4.12
  • configure is now compatible with 2.4.12 and 2.4.13 (pre-release, tested with pre1)
  • added #warning to tcm.tc, telling users to switch to meters.tc
  • added test for count-count crash with -N -B to tests/misfeatures
  • scripts/runtests.sh now searches PATH for executables
  • build/Makefile: "variable" expansion sed scripts only expanded first occurrence of "variable"
  • TCSIM_BINDIST and tcsim-devel now also contain header files from ulib/iproute2/include*, ulib/iproute2/tc/tc_{util,core}.h, toys/?rtcm.tc, and all examples
  • tcc/ext/tcc-ext-test is now relocatable via TCNG_TOPDIR
  • make tcsim-rpms now also generates tcng-tests RPM
  • trimmed usage lines of tcc and tcsim to avoid wrap-around if installed at default location

 tcng-6d (11-OCT-2001)
tcng-6d.tar.gz (277 kB)

Changes:

  • added more regression tests for fields (tests/field2)
  • fields in variables were expanded too early, i.e. at the time of assignment instead of at the time of use (moved tests from tests/misfeatures to tests/tcng-6d)
  • pseudo parameter names for meter macros can now be macros themselves (added tests to tests/meters)
  • updated tests/expensive, tests/fastpath, and tests/tcm to use meters.tc instead of tcm.tc

 tcng-6c (11-OCT-2001)
tcng-6c.tar.gz (276 kB)

Changes:

  • meters.tc: set_SLB sometimes used __dlb_ names, causing a variable uninitialized error (tests/tcng-6c)
  • added tests for SLB and DLB macros, and the set_* macros of srTCM and trTCM (tests/meters)

 tcng-6b (11-OCT-2001)
tcng-6b.tar.gz (275 kB)

Changes:

  • tcng expression syntax didn't include unary minus, oops :-) (tests/tcng-6b)
  • tcc/LANGUAGE acknowledges that there are "standard" header files and naming conventions
  • added tcc/meters.tc with improved TCM macros and single/double leaky bucket macros, obsoleting tcm.tc
  • fields in variables are expanded too early, i.e. at the time of assignment instead of at the time of use, which can cause problems with preconditions (tests/misfeatures)

 tcng-6a (10-OCT-2001)
tcng-6a.tar.gz (272 kB)

Changes:

  • extended tests/relop to check range 0-31 (was 0-16) to ensure better coverage of upper bits
  • tcc, tcsim: added -X phase "p" for tcc's cpp (tests/phasep)
  • tcng: the "warn" directive can now appear anywhere where variables or fields are allowed (tests/waprpos)
  • tcng: the global pragma can now appear after global variables, fields, or "warn" directives (tests/waprpos)
  • updated tcc/LANGUAGE accordingly, described pragmas, and renamed the "preamble" to "processing directives"
  • tcng no longer allows the empty string as a pragma value (tests/pragma)
  • tccext.c included keyword "pragma" among pragma values for qdiscs and classes (updated tests/pragma)
  • tcng/README now recommends to download iproute2-2.2.4-now-ss001007.tar.gz instead of iproute2-current.tar.gz (this also affects build/tcsim.spec)
  • build/Makefile: target "all" now depends on "rpmstuff"

 tcng-5z (10-OCT-2001)
tcng-5z.tar.gz (271 kB)

Changes:

  • "C" target didn't support < or >= (tests/tcng-5z)
  • iflib_bit.c did not recognize matches with values larger than the field size as always false (tests/tcng-5z)
  • tcc can now translate relational operators with arbitrary constants (tests/relop)
  • added list of unfiled items to TODO

 tcng-5y (9-OCT-2001)
tcng-5y.tar.gz (270 kB)

Changes:

  • new option -Wexpensive to warn about expensive operations (as opposed to -E, which yields a fatal error; added tests to tests/expensive)
  • variables can now be re-defined, just like fields (tests/varredef)
  • new option -Wredefine (tests/varredef)
  • updated tcc/LANGUAGE accordingly
  • iflib_red.c:bundle could not handle multiple optimizations at the same level and has fence-post error when optimizing expressions of the type (ab || a) (tests/tcng-5y)
  • updated tests/not accordingly
  • oops, build/dummy.spec was never added (since tcng-5v)

 tcng-5x (5-OCT-2001)
tcng-5x.tar.gz (268 kB)

Changes:

  • util.c: new function alloc_sprintf that acts as asprintf with error handling
  • fixed about a dozen potential buffer overflows, many of them by using alloc_sprintf
  • if_c.c: changed asserts on bucket/result overflow to errorf; moved array size definitions to config.h
  • updated tests/additive according to above changes
  • added and enabled data_destroy and data_destroy_1
  • fixed calls to data_destroy* iflib_act.c and iflib_arith.c, and access after destroy problems in iflib_red.c

 tcng-5w (5-OCT-2001)
tcng-5w.tar.gz (267 kB)

Changes:

  • new external program tcc-ext-file that writes the configuration data to the file specified with -Xx,file=
  • added tcc-ext-file to binary distributions
  • child termination detection in tcc/ext_io.c was unnecessarily complicated and caused a race condition between child termination and processing of errors reported by child

 tcng-5v (4-OCT-2001)
tcng-5v.tar.gz (267 kB)

Changes:

  • changed the names of filter.pl and plot.pl to tcsim_filter and tcsim_plot, respectively
  • updated tcsim/README, scripts/symlinks.sh, scripts/runtests.sh, tests/pol_traffic, tests/tbf, tests/tcng-3i, and tests/usage accordingly
  • scripts/runtests.sh: changed trinity.sh to "trinity" in order to eliminate last remaining bash-ism
  • updated tests/ext, tests/tcng-2u, and tests/usage accordingly
  • build/tcng.spec.in: split tcc RPM into tcc and tcc-devel
  • added echoh.h to tcc-devel RPM
  • Makefile: changed dependencies on ".distisuptodate" to the equivalent "dist"
  • Makefile: added target "rmaltdist" to remove all binary distributions in tar.gz files or in RPMs, and any SRPMs, leaving only source distributions created with "make dist"
  • "make rpm" now symlinks tcng source instead of copying it
  • added experimental spec file build/tcsim.spec.in and helper file build/dummy.spec to build tcsim RPM (use with make tcsim-rpms )
  • Makefile: re-structured RPM-related targets
  • TCSIM_BINDIST now also includes directories lib/tcng/include/klib/include and lib/tcng/include/klib/kernel/include
  • added missing dependency of tcsim on symlinks

 tcng-5u (3-OCT-2001)
tcng-5u.tar.gz (265 kB)

Changes:

  • TODO: removed obsolete remark about bubble_and
  • tcc: removed obsolete options -A, -C, and -F
  • tcc: new option -W[no]... to enable/disable specific warnings
  • -Wtruncate enables warning when truncating value ranges (disabled by default; used to be always enabled)
  • updated tests/tcng-2e accordingly
  • -Wnounused disables unusued variable warning (enabled by default)
  • updated tests/devbra and tests/tcng-5g (also removing several of useless -w), and tests/extlocbas and tests/misfeatures accordingly, i.e. by changing -w to -Wnounused
  • tcng: new construct "warn [no]warning,..." to include -W options in configuration files (tests/warn)
  • duplicate class selection paths are now valid, and are treated as distinct classes at top-level dsmark, in order to allow use of marking at top-level dsmark (tests/selpathdup)
  • removed duplicate class selection path test from tests/selpath

 tcng-5t (3-OCT-2001)
tcng-5t.tar.gz (263 kB)

Changes:

  • tcc/ext/tccext.* added field "location" to TCCEXT_BLOCK, TCCEXT_QDISC, TCCEXT_CLASS, and TCCEXT_BUCKET, containing pre-formatted location string
  • tcc/ext/echoh.*: added function echoh_buckets to print buckets
  • tcc/ext/echoh.* now prints an error with location information and exits, if encountering pragma "force_failure"
  • added regression tests for error feedback (tests/extlocext)
  • tcc/ext/tccext.c:tccext_destroy did not free block->name
  • tcc/ext.c no longer uses yyerror, because it's usually invoked either before parsing the first line or at EOF anyway
  • removed tccext output formatting from TODO

 tcng-5s (3-OCT-2001)
tcng-5s.tar.gz (262 kB)

Changes:

  • location specifications enclosed in [<...>] in standard error from external programs are now translated by tcc back to source code locations (tests/extlocbas)
  • added new external program tcc-ext-xlat used by tests/extlocbas
  • -Xx,fifos no longer attaches fifos to numbered dsmark classes (tests/tcng-5s, reported by Jacob)
  • tcc now prints "expression" as the value of non-constant variables (tests/tcng-5s)
  • updated tcc/README accordingly
  • child process for external program executed exit handler, causing attempt to unlink input file twice, which failed, and output file was not deleted as a consequence (tests/tcng-5s, reported by Jacob)

 tcng-5r (2-OCT-2001)
tcng-5r.tar.gz (259 kB)

Changes:

  • configure is now compatible with 2.4.11 (pre-release, tested with pre2)
  • tcsim/setup.klib: added MODULE_LICENSE to include/linux/module.h for 2.4.11 compatibility
  • added targets "ephemeral", "dep", "depend", and "clean" to build/Makefile
  • added "build" to DIRS in top-level Makefile, in particular so that "make ephemeral" now descends into "build"
  • Makefile and scripts/Makefile: added "all" to .PHONY
  • doc/Makefile: added .PHONY

 tcng-5q (2-OCT-2001)
tcng-5q.tar.gz (259 kB)

Changes:

  • q_gred.c: changed diagnostics to provide better location data
  • added set of regression tests for GRED error detection (tests/grederr)
  • q_gred.c tested for presence of qdisc parameter "grio" in class scope (tests/grederr)
  • q_prio.c: changed diagnostics to provide better location data
  • updated tests/tcng-1i, tests/tcng-1j, and tests/tcng-4u accordingly
  • q_dsmark.c:sel_add_hier_filters "return"ed when encountering GRED, instead of "continue"ing, thereby possibly skipping other qdiscs (tests/tcng-5q, reported by Jacob)
  • updated tests/selpathgred accordingly
  • iflib_act.c:bubble_and now explicitly checks for invalid condition (tests/tcng-5q)
  • updated tests/misfeatures accordingly
  • tcc/LANGUAGE: clarified role of parent classes within the same qdisc in class selection path
  • added set of regression tests for class selection paths with CBQ (tests/selpathcbq)

 tcng-5p (28-SEP-2001)
tcng-5p.tar.gz (258 kB)

Changes:

  • tcc/LANGUAGE: documented variables containing expressions
  • tcc now refuses interface names longer than IFNAMSIZ-1 (15) characters (tests/ifnamsiz)

 tcng-5o (28-SEP-2001)
tcng-5o.tar.gz (258 kB)

Changes:

  • variables can now contain expressions (tests/varexp)

 tcng-5n (27-SEP-2001)
tcng-5n.tar.gz (257 kB)

Changes:

  • added portable default value for BuildRoot to build/tcng.spec.in

 tcng-5m (26-SEP-2001)
tcng-5m.tar.gz (257 kB)

Changes:

  • tcc.spec.in: added LGPL to "copyright" tag
  • tcc.spec.in used COPYING instead of COPYING.{GPL,LGPL}
  • tcc.spec.in: RPM_BUILD_ROOT test for / had logic reversed
  • copied copyright information from tcng/README to tcng/tcc/README
  • "make rpm" now moves RPM file to tcng top-level directory and removes directory "rpm" after use
  • "make clean" now removes directories "build-test" and "rpm"
  • "make rpm" now generates a relocatable RPM, and also the SRPM for tcng
  • moved bytesex.c and tcc.spec.in to new directory tcng/build
  • updated tcng/configure accordingly
  • moved setting of topdir from tcc.spec.in to build/rpmrc and build/rpmmacros (see build/README for details)

 tcng-5l (25-SEP-2001)
tcng-5l.tar.gz (256 kB)

Changes:

  • scripts/symlinks.sh still created obsolete links to kmod_cc and tcmod_tcc in tcng/bin
  • tcc-ext-test.in still expected kmod_cc and tcmod_cc in $TOPDIR/bin, not $TOPDIR/lib/tcng/bin
  • scripts/localize.sh now allowed environment variable TCNG_INSTALL_CWD to override its notion of the current directory
  • "make all" and "make install" now automatically skip tcsim if disabled in configuration
  • added tcc RPM spec file tcng/tcc.spec.in, and Makefile target "rpm"

 tcng-5k (25-SEP-2001)
tcng-5k.tar.gz (255 kB)

Changes:

  • added assorted regression tests using class variables (tests/classvar)
  • new directory locations:
  • tcc-module, tcc-ext-err, kmod_cc, and tcmod_cc now go into $TOPDIR/lib/tcng/bin instead of $TOPDIR/bin
  • libtccext.a, tcm_cls.c, and tcm_f.c now go into $TOPDIR/lib/tcng/lib instead of $TOPDIR/lib
  • tccext.h, echoh.h, fields.tc, ip.def, tcngreg.def, and the symbolic links to tcsim/klib and tcsim/ulib now go into $TOPDIR/lib/tcng/include instead of $TOPDIR/include
  • updated scripts/symlinks.sh, Makefile, scripts/localize.sh, tcc/tcc.c, tcc/if_c.c, tcc/tcc-module.in, tcc/ext/tcc-ext-test.in, tcsim/tcsim.c, tcsim/modules/kmod_cc.in, and tcsim/modules/tcmod_cc.in accordingly
  • moved toys/tcm.tc to tcc/tcm.tc (and $TOPDIR/lib/tcng/include)
  • updated tests/expensive, tests/fastpath, and tests/tcm accordingly
  • tcc/ext_io.c now adds $TOPDIR/lib/tcng/bin to the PATH
  • removed now unnecessary PATH=$PATH:tcc/ext from the following tests: arith, bitopt, cbqroot, classvar, defifo, drop, dsind, expensive, ext, extcbq, extflt, extmult, extndm, extqch, fastpath, field, fredef, location, misfeatures, not, phasex, pol_ext, setpathext, tcm, tcng-2u, tcng-3b, tcng-3h, tcng-3m, tcng-3n, tcng-3p, tcng-3r, tcng-3s, tcng-4a, tcng-4c, tcng-4d, tcng-4f, tcng-4h, tcng-4j, tcng-4l, tcng-4n, tcng-4p, tcng-4u, tcng-4w, tcng-4z, tcng-5a, tcng-5j, and unspec
  • updated kernel version example on tcng/README from 2.4.9 to 2.4.10

 tcng-5j (25-SEP-2001)
tcng-5j.tar.gz (254 kB)

Changes:

  • iflib_red.c: added debbugging function to dump matrix considered by "bundle"
  • iflib_red.c:bundle_skip effectively limited bundling to one level
  • updated tests/not and tests/tcng-2j accordingly
  • iflib_red.c: changed order of transformations when using -N so that common uses of trTCM can be optimized too (tests/fastpath)
  • ext_all.c: _root hack came back to bite us when using multiple interfaces (tests/tcng-5j)
  • iflib_cheap.c: rewrote detection of expensive combination of static classification and policing (tests/expensive)

 tcng-5i (21-SEP-2001)
tcng-5i.tar.gz (253 kB)

Changes:

  • tcc: it is now an error to try to use the obsolete options -A, -C, and -F
  • updated tests/defifo and tests/location accordingly
  • iflib_red.c:bubble_or removed incorrect comment about side-effect of iflib_act.c:self_contained
  • tcc: added new option -E to make tcc fail if encountering an "expensive" operation, such as negation (either explicitly or via !=, > or >=), or an action tree that is not self-contained (tests/expensive; suggested by Jacob)
  • iflib_red.c:bubble_or now more aggressively eliminates right-hand side of logical and
  • README and configure: tcc is not compatible with kernel versions < 2.4.3

 tcng-5h (20-SEP-2001)
tcng-5h.tar.gz (252 kB)

Changes:

  • tcc/iflib_red.c:iflib_normalize no longer bubbles actions through static classification in expressions ending in ... && (conditions || decision) (tests/fastpath; only with -N; suggested by Jacob)
  • tcc/iflib_red.c:iflib_normalize makes expressions typical in simple multi color markers self-contained, thereby making above optimization possible in a wider range of cases (only with -N; tests/fastpath)
  • toys/tcm.tc: added constrained versions of the color test macros, which tcc can process more easily.
  • if_ext.c: removed redundant pass through iflib_normalize when using the "old" algorithm

 tcng-5g (19-SEP-2001)
tcng-5g.tar.gz (251 kB)

Changes:

  • "make spotless" did not imply "make clean", leaving e.g. .symlinks
  • TODO: documented tests/selpathgred incompatibility with older kernels
  • added device and tunnel data types to simplify implementation of variable use scope information output
  • variable use output (-u) now includes scope information
  • updated tcc/README, tests/tcng-5f, and tests/varuse accordingly
  • filters had no blank between "filter" and identifier in variable use output (tests/tcng-5g)
  • added more precise location information to CBQ error messages (suggested by Jacob)
  • updated tests/cbqroot accordingly

 tcng-5f (19-SEP-2001)
tcng-5f.tar.gz (249 kB)

Changes:

  • tcsim/setup.klib: added max_t for compatibility with recent 2.4.10 pre-releases
  • tcc/LANGUAGE: clarified that class selection paths cannot be nested (see toys/cspnest)
  • tcc did not suppress pseudo-parameter "class_sel_path" in tccext output
  • added regression tests for class selection path with external interface (tests/selpathext)
  • ext_all.c now issues a warning when defaulting to CBQ root class (suggested by Jacob)
  • scripts/cvsupdate.sh: added option -n to avoid accidental file changes
  • class selection path data structures are now deallocated after use
  • class selection paths now also work with GRED (tests/selpathgred)
  • tcc/README: CBQ support is no longer "untested" (spotted by Gautam Thaker)
  • tcc/iflib_act.c: self_contained did not handle constants or op_count correctly, was too optimistic with logical or, and did not consider that boolean operations involving self-contained subexpressions constrain their possible values, even though they may not be self-contained themselves
  • tcc/iflib_red.c:bubble_or no longer tries to "normalize" actions, because iflib_act.c:push_action has to re-arrange them anyway (experimental)
  • tcc/iflib_act.c: added function trim_self_contained to remove self-contained sub-expressions before doing anything else (experimental, may be redundant)
  • variable use list did not include forward-declared variables (tests/tcng-5f, reported by Jacob)
  • undocumented tcc command-line option -N now sets general algorithm mode (also for old algorithm) and no longer implies -B

 tcng-5e (14-SEP-2001)
tcng-5e.tar.gz (247 kB)

Changes:

  • updated TODO to reflect changes in version 5d
  • last two entries were missing in CHANGES section of version 5d
  • tcc/README: documented the -u option
  • tcc/LANGUAGE: documented class selection paths

 tcng-5d (13-SEP-2001)
tcng-5d.tar.gz (246 kB)

Changes:

  • added experimental <...> construct to automatically generate tcindex-based classification system in conjunction with dsmark (tests/selpath)
  • made dsmark "indices" parameter optional
  • mask and value parameters that are equivalent to default values are ignored

 tcng-5c (11-SEP-2001)
tcng-5c.tar.gz (241 kB)

Changes:

  • tcc: new option -u var_use_file to write content of variables to the specified file (tests/varuse)
  • variables before first implict device now really have global scope (tests/tcng-5c)
  • unused global variables are reported at end of file (tests/tcng-5c)
  • updated tests/tcng-3k accordingly
  • tcsim/plot.pl: added PNG (-png) and JPEG (-jpeg) output (based on patch by Gautam and Nikhil Thaker)
  • dsmark no longer complains if class with a number above "indices" sets "mask" or "value" to values that imply no change (tests/dsind)
  • dsmark: "indices" is now optional, and set to the next power of two above the highest class number (tests/dsind)
  • q_dsmark.c: changed diagnostics to provide better location data
  • updated tests/tcng-1i accordingly
  • configure now exits on the first error
  • tcsim/Makefile.ulib now invokes further makes with -e, to facilitate cross-compilation (reported by Langie Light)

 tcng-5b (8-SEP-2001)
tcng-5b.tar.gz (239 kB)

Changes:

  • added new debugging function debugf2 that prints if debug > 1
  • scripts/symlinks.sh no longer prints the names of directories in "list" mode (this broke "make spotless")
  • added "new" bit graph algorithm in tcng/tcc/iflib_newbit.c (it's completely useless at the moment)
  • tcc: new undocumented option -N to select "new" bit graph algorithm

 tcng-5a (30-AUG-2001)
tcng-5a.tar.gz (230 kB)

Changes:

  • added helper functions for run-time measurement (start_timer, print_timer)
  • fixed uninitialized variable bug in tcc/if_u32.c:dump_offset
  • fixed harmless uninitialized variable warnings in tcc/iflib_bit.c:{dump_static,dump_all_paths_to}
  • file names containing blanks or other unprintable characters are now printed as in location map (tests/tcng-5a)
  • empty strings are no longer allowed as tags (tests/tcng-5a)
  • added new reporting functions lwarn and lwarnf
  • changed most yy{error,warn}* to l{error,warn}* in ext_all.c, if_c.c, and if_ext.c
  • updated tests/additive, tests/extcbq, tests/extflt, and tests/extndm accordingly
  • iflib_bit.c now validates reference counts after all major operations unless NDEBUG is defined
  • iflib_bit.c:{bubble_static,swap_bits} were badly broken (tests/tcng-5a, reported by Jacob)
  • when debugging (-d), iflib_bit.c:unique_state validates that all bit types are still valid (they become invalid if free'ing a bit still in use)
  • unique_state now eliminates bits when discovering that they are redundant (bit->true == bit->false), yielding more compact results
  • adapted tests/tcng-4p accordingly

 tcng-4z (29-AUG-2001)
tcng-4z.tar.gz (228 kB)

Changes:

  • tcc/police.c:assign_policer_ids was only invoked once, but more policers could be defined afterwards (tests/tcng-4z, reported by Jacob)
  • configure, scripts/runtests.sh, and scripts/symlinks.sh assumed that the shell looks for files to source in the current directory instead of following the PATH if no explicit path is given (reported by Jacob)
  • configure now reports loading defaults from old config file
  • configure is now compatible with 2.4.10 (pre-release, tested with pre2)

 tcng-4x (23-AUG-2001)
tcng-4x.tar.gz (227 kB)

Changes:

  • removed useless -I- from tcsim/Makefile
  • new binary distribution target bindist-tcng-tests added (not generally useful yet)
  • extended scripts/runtests.sh to take TOPDIR and TCNG_TOPDIR from the environment, and to use reasonable defaults if "config" is absent
  • modified scripts/trinity.sh.in to use environment variable TCNG_TOPDIR (if present) instead of configured-in TOPDIR
  • Makefile: added target "scripts" (how did scripts/trinity.sh ever get built without ??)
  • changes names of binary distribution files from -.tar.gz to --bin.tar.gz
  • tcc/config.h:TCC_MODULE_CMD always used hard-coded TOPDIR instead of allowing TCNG_TOPDIR override
  • configure: new options --big-endian (-b) and --little-endian (-l) to set the bytesex
  • configure: now also "inherits" bytesex from old config file

 tcng-4w (22-AUG-2001)
tcng-4w.tar.gz (226 kB)

Changes:

  • fixed a few glitches in the CHANGES section of 4v
  • updated tcsim/setup.klib to handle max(type,a,b) macro introduced in 2.4.9
  • updated kernel version example on tcng/README from 2.4.7 to 2.4.9
  • fields now have scoping, like variables (tests/tcng-4w)
  • updated tests/misfeatures and tests/fredef accordingly (moved old misfeature test to tests/tcng-4w, but moved one now broken test from tests/fredef to tests/misfeatures and added new tests for similar problem with variables)
  • devices now have optional braces around their qdiscs in order to avoid ambiguous variable scope (tests/devbra)
  • updated tcc/LANGUAGE according to the two changes above
  • tcc: added option -w to suppress all warnings

 tcng-4v (22-AUG-2001)
tcng-4v.tar.gz (225 kB)

Changes:

  • configure: added option --no-tcsim (abbreviation -n) to enable build of tcc only
  • top-level make now refuses all targets depending on tcsim, and build-test if tcsim is disabled in configuration
  • removed unnecessary inclusion of ../../config from tcsim/modules/Makefile (caused complaint on make cvsupdate in virgin tree)
  • scripts/symlinks.sh now sources "config" only if linking (unconditional sourcing caused complaint on make cvsupdate in virgin tree)
  • tcc now sorts sibling classes by class ID (tests/sort; suggested by Jacob)
  • updated tests/extqch accordingly
  • tcc now allows fields to be re-defined wherever one can put a variable assignment (tests/fredef)
  • known bug: fields still have global scope (tests/misfeatures)

 tcng-4u (16-AUG-2001)
tcng-4u.tar.gz (224 kB)

Changes:

  • configure is now compatible with 2.4.9 (pre-release, tested with pre4)
  • tcc/README: "Invocation" section was obsolete and incorrect (reported by Mika Yrjola)
  • added realistic tcc example in tcc/example
  • tcsim: added option -c to perform only syntax check
  • new test tests/examples checks all examples in examples/*, examples-ng/*, and tcc/example for correct syntax
  • tcsim/setup.klib now skips cls_u32.c patch applied somewhere in 2.4.8-pre*
  • dump_if_u32 now also handles negation
  • updated tests/tcng-3g accordingly
  • location map used "file:line", not "file line" as described in README
  • location map now uses "-" instead of empty string to indicate stdin. Clarified tcc/README accordingly.
  • updated tests/location and tests/tag according to above changes
  • dsmark did not adjust parent qdisc when resolving class 0 collision (tests/tcng-4u)
  • inner qdisc of explicit CBQ root class was not dumped on tc (tests/tcng-4u)
  • CBQ messed up order of filters on parent and root (which are the same), so now tcc refuses this bizarre combination (tests/tcng-4u)
  • -B now sorts bits (in a very ugly way), just like without -B (tests/tcng-4u)

 tcng-4t (10-AUG-2001)
tcng-4t.tar.gz (222 kB)

Changes:

  • split make target "bindist" into "bindist-tcc" and "bindist-tcsim"
  • added missing target "tcsim" to tcng/Makefile

 tcng-4s (9-AUG-2001)
tcng-4s.tar.gz (222 kB)

Changes:

  • "make clean" in tcng/tcsim tried to access klib/ulib, which may not exist after partial build
  • forgot to include scripts/localize.sh in distribution

 tcng-4r (9-AUG-2001)
tcng-4r.tar.gz (222 kB)

Changes:

  • added tcng/tcc/ext/tcc-ext-err to tcng/bin
  • modified tcc/tcc.c, tcc/tcc-module.in, tcsim/tcsim.c, tcsim/modules/kmod_cc.in, and tcsim/modules/tcmod_cc.in to use environment variable TCNG_TOPDIR (if present) instead of compiled-in TOPDIR
  • added option --install-directory (or -d) to configure
  • added "make install" target and "make bindist" targets
  • new script scripts/localize.sh to generate wrapper scripts for tcc and tcsim
  • tcc/Makefile now uses scripts/topdir.sh to build tcc-module
  • described installation procedure in tcng/README

 tcng-4q (9-AUG-2001)
tcng-4q.tar.gz (221 kB)

Changes:

  • added new target "ephemeral" to most Makefiles
  • added new target "cvsupdate" to top-level Makefile, which removes ephemeral files from CVS' list
  • added scripts scripts/cvsupdate.sh invoked for above target
  • added new target "bindist" to top-level Makefile to build binary distributions of tcc and tcsim
  • scripts/symlinks.sh now accepts the mode of operation as its first argument ("list" or "link")
  • fixed various files forgotten by "make clean" and such

 tcng-4p (8-AUG-2001)
tcng-4p.tar.gz (220 kB)

Changes:

  • optimized iflib_bit.c:clear_counters (from O(2^N) worst-case to O(N))
  • added new field BIT.dump_number to optimize iflib_bit.c:deassign_numbers (from O(2^N) worst-case to O(N))
  • slightly improved heuristic used by iflib_bit.c:pick_best to produce up to 80% fewer matches
  • updated tests/tcng-3r accordingly
  • copy_list selected first, not last common node, confusing eliminate_bundle (tests/tcng-4p)
  • tcng/tcc/Makefile did not use CC_OPTS (from tcng/Common.make)

 tcng-4o (7-AUG-2001)
tcng-4o.tar.gz (219 kB)

Changes:

  • added more compact test case for bug fixed in 4n (tests/tcng-4n)
  • added more precise location information to dsmark_default_class error message
  • updated tests/defdsm accordingly
  • dsmark failed to merge auto-generated class 0 with explicitly specified class 0, yielding duplicate class 0 (tests/tcng-4o; reported by Jacob)
  • tccext.c did not find nested classes and therefore erroneously created dummy classes (tests/tcng-4o; reported by Jacob)
  • fixed tests/extqch accordingly

 tcng-4n (3-AUG-2001)
tcng-4n.tar.gz (218 kB)

Changes:

  • tcc/iflib_bit.c:swap_bits did not distinguish true and false, causing tcc to crash (tests/tcng-4n)

 tcng-4m (3-AUG-2001)
tcng-4m.tar.gz (218 kB)

Changes:

  • tests/location did not include test for ingress qdisc
  • error.h: added new error reporting functions lerror, lerrorf, vlerrof
  • improved reporting of error location in parameter handling
  • updated tests/tcng-2e accordingly

 tcng-4l (30-JUL-2001)
tcng-4l.tar.gz (218 kB)

Changes:

  • broke if_ext.c down into individual functions allowing to dump exactly what is needed in each mode
  • updated tests/extmult accordingly; added bucket test to tests/extmult
  • tccext.h: renamed TCCEXT_ACTION.u.classes to class_list to avoid ambiguity with TCCEXT_QDISC/TCCEXT_CLASS.classes (suggested by Jacob)
  • updated tccext.c, echo.c, and match.c accordingly
  • configure is now compatible with 2.4.8 (pre-release)
  • tccext.c now detects duplicate items on input (tests/dupext)
  • tcc-ext-echo used to loop if there was more than one bucket (tests/tcng-4l)
  • tcc: renamed DEVICE.qdisc to DEVICE.egress
  • -A ("all") no longer requires use of if to generate code (tests/tcng-4l)

 tcng-4k (24-JUL-2001)
tcng-4k.tar.gz (217 kB)

Changes:

  • tcc: undocumented options -A, -C, -F now print warning
  • tcc-ext-test now accepts "nounspec" argument, and echoes it in config mode
  • updated tests/defcbq, tests/defdsm, tests/defifo, tests/extflt, tests/extmult, tests/extndm, tests/extqch, tests/location, tests/pragma, tests/tcng-3m, tests/tcng-3s, tests/tcng-4a, tests/tcng-4d, tests/tcng-4f, and tests/unspec to no longer use undocumented options, or to suppress the warning
  • callers of scripts/runtests.sh can now pass file name information using a FILE directive
  • q_cbq.c now always generates an explicit root class, if none is present (tests/cbqroot)
  • updated tests/extndm, tests/extqch, tests/location, tests/tcng-1n, tests/tcng-2c, tests/tcng-2h, and tests/tcng-4f accordingly
  • q_cbq.c combines the root class with the qdisc when generating tc output (tests/cbqroot)
  • qdisc.c:make_class did not initialize all fields of new class, causing stray problems with require_class

 tcng-4j (24-JUL-2001)
tcng-4j.tar.gz (215 kB)

Changes:

  • tccext: moved actions and rules from global scope to block scope
  • updated tccext.h, tccext.c, echo.c, and tests/tcng-3s accordingly
  • tcc/ext/match.c now detects and refuses multiple blocks (at run-time)
  • tcc/ext/echo.c now prints offsets and buckets before blocks, to maintain at least some resemblance of order
  • updated tests/pragma, and tests/tcng-3s accordingly
  • suppressed cross-block sharing in if_ext_act.c (tests/extmult)
  • CHANGES: tcng-4h entry for iflib_act problem was incomplete and also missing in TODO
  • tcc/ext.c:ext_build used shadowed variable "name", yielding confusing reports
  • lex hack to express if anchors conflicted with "drop if", causing enigmatic syntax errors (tests/tcng-4j)
  • fields.tc: added field udp_data, for symmetry with TCP

 tcng-4i (24-JUL-2001)
tcng-4i.tar.gz (214 kB)

Changes:

  • added runtests.sh, trinity.sh, topdir.sh, and configure to usage format checking (tests/usage)
  • tcc, tcsim, runtests.sh: added new -X phase "x" or "x" to send command-line arguments to programs at tcc's external interface (tests/phasex)
  • ext.c now prints standard output of external program when -d is set
  • divided TODO into short-term and long-term issues
  • ext_all now follows CBQ classes for further classification (tests/extcbq)
  • removed corresponding misfeature test from tests/extflt
  • ext_all now selects root class if classification fails completely in CBQ, instead of yielding an error (tests/extcbq)
  • ext_all now refuses priomap parameter (tests/extcbq)
  • qdisc.c:assign_class_id did not detect duplicate class IDs (tests/tcng-4i)
  • variable scoping was outside-in (tests/tcng-4i)
  • "drop" without selector now warns that it's useless (tests/tcng-4i)

 tcng-4h (23-JUL-2001)
tcng-4h.tar.gz (213 kB)

Changes:

  • updated kernel version example on tcng/README from 2.4.6 to 2.4.7
  • external interface: there is now only a single action per action line, which simplifies the code and makes the data structures less ambiguous
  • eliminated TCCEXT_ACTIONS and added "index" and "next" fields in TCCEXT_ACTION
  • updated doc/external.tex accordingly
  • updated tests/pragma, tests/tcm, and tests/tcng-3s accordingly
  • oops, iflib_bit never emitted "action N" clauses (tests/tcng-4h)
  • iflib_act.c:bubble_and turns Action && Match into M && A without considering possible side-effects of A or M (note: the resulting mess fails at later processing stages, so at least no incorrect output is generated)

 tcng-4g (22-JUL-2001)
tcng-4g.tar.gz (212 kB)

Changes:

  • split qdisc.c into qdisc.c, qdisc_common.h, q_ingress.c, q_cbq.c, q_dsmark.c, q_fifo.c, q_gred.c, q_prio.c, q_red.c, q_sfq.c, and q_tbf.c
  • split filter.c into filter.c, filter_common.h, f_if.c, f_fw.c, f_route.c, f_rsvp.c, and f_tcindex.c
  • qdiscs now dump to external interface via QDISC_DSC.dump_ext (using new file ext_dump.c)

 tcng-4f (20-JUL-2001)
tcng-4f.tar.gz (210 kB)

Changes:

  • ext_all now allows simple configurations with other qdiscs than dsmark at root (tests/extndm)
  • ext_all tried to include priomap parameter in output (tests/tcng-4f)
  • tcc now refuses duplicate parameters in same parameter list
  • updated tcc/LANGUAGE accordingly
  • simplified intriguingly complicated (and rather fragile) contraption to add "bands 3" for PRIO at ext_all
  • dsmark can now also generate default classification if default_index is absent, but set_tc_index is present (tests/defdsm)
  • CBQ can now also generate default classification (tests/defcbq)
  • ext_io.c is now better at deleting temporary files (reported by Jacob)
  • make clean-test now also removes "precious" files generated by tcc-ext-test
  • tcc-ext-test.in and tcc/ext/match.c: changed name of file with tccext data from _m*.out to __m*.out to simplify cleanup

 tcng-4e (19-JUL-2001)
tcng-4e.tar.gz (207 kB)

Changes:

  • tcc now registers the source code location of all major language elements
  • tcc: added new option -l location_map_file to generate source code location map for language elements (tests/location)
  • updated tcc/README accordingly
  • a user-defined tag can be assigned to devices, qdiscs, classes, filters, filter elements, policers, and tunnels, by including a string in the parameter list (tests/tag)
  • added test that usage lines of tcc, tcc-module, tcsim, filter.pl, and plot.pl are short enough (tests/usage)

 tcng-4d (17-JUL-2001)
tcng-4d.tar.gz (203 kB)

Changes:

  • ext_all leaked default parameters among sibling classes (reported by Jacob)
  • symbolic links are now generated by scripts/symlinks.sh for better CVS compatibility (suggested by Langie Light)
  • link to echoh.h was missing in distribution
  • when using -B, action "unspec" was called "continue"
  • added draft description of new external protocol rules (doc/README.tccext)
  • renamed tcc/ext.c to tcc/ext_io.c
  • added prototype implementation of new external protocol
  • tcc/ext: updated tcc-ext-err, echo.c, echoh_main.c, and tcc-ext-test.in accordingly
  • made output selection in tests/ext less dependent on naming conventions of tcc-ext-test
  • updates tests/tcng-3s to obey new calling conventions
  • external program now needs to be available even if tcc faild before the build phase; updated tests/extflt accordingly
  • dependency on "tcc" was missing for "make test"

 tcng-4c (16-JUL-2001)
tcng-4c.tar.gz (201 kB)

Changes:

  • added trailing line of dashes to each test title
  • added "drop if" construct, which is roughly synonymous to "class if (...) && drop" (tests/drop, tests/misfeatures)
  • updated tcc/LANGUAGE accordingly
  • accessing "raw" without specifying an index crashed iflib_off.c:use_offset
  • added cases where bit strings are combined across presence boundaries to tests/misfeatures
  • included TODO file

 tcng-4b (14-JUL-2001)
tcng-4b.tar.gz (198 kB)

Changes:

  • tcsim: an end time can now be specified for "every" (suggested by Stefano Avallone; test in tests/until)
  • added description of test writing concepts in tests/README
  • verified that filter ID range is indeed 1..0xffff, as filter.c assumes
  • ext_all.c:filter_path now checks that tcindex classifiers don't use policing (tests/extflt)
  • ext_all.c:filter_path accessed prm_mask in element, where it doesn't exist (but by sheer luck happens to have the right value)
  • tcng/README did not mention that also echoh is under the LGPL
  • echoh_blocks now accepts a file argument, and tcc-ext-echoh prints on stderr, not stdout
  • updated kernel version example on tcng/README from 2.4.3 to 2.4.6
  • runtests.sh now strips trailing line of dashes from test title, allowing writing of more easily readable test files

 tcng-4a (13-JUL-2001)
tcng-4a.tar.gz (196 kB)

Changes:

  • tcc/param.c:param_print would de-reference NULL pointer on childless elements (reported by Jacob)
  • Common.make didn't remove __*.in files generated at external interface
  • ext.c did not clean up temporary files after error exit
  • libtccext.a: added new function echoh_block to print qdisc/class hierarchy (suggested by Jacob)
  • added link from include/echoh.h
  • added corresponding external program tcc-ext-echoh
  • tcc/ext_all.c:filter_path did shift before mask instead of mask before shift
  • tcc/ext_all.c:filter_path messed up default parameters
  • plot.pl now weights samples when calculating the average rate over multiple packets (based on a patch by Lars Wischhof)

 tcng-3z (12-JUL-2001)
tcng-3z.tar.gz (195 kB)

Changes:

  • added patch to iproute2/tc to fix offset increment for data items larger than 4 bytes (patches/tc-u32-incr)
  • new qdisc flags QDISC_CHILD_QDISCS and QDISC_SHARED_QDISC to indicate how many child qdiscs a qdisc can have
  • new undocumented option -F to add FIFO qdiscs wherever a default qdisc is used (tests/defifo)
  • tccext.h: clarified that TCCEXT_BLOCK.qdiscs points to the top-level qdisc
  • started adding infrastructure for clean external interface protocol
  • replaced huge "if_ext calls ext_all" hack by several smaller ones

 tcng-3y (10-JUL-2001)
tcng-3y.tar.gz (192 kB)

Changes:

  • external.tex did not mention that qdisc and class pragmas begin with the keyword "pragma"
  • documented how qdisc and class structure is represented at external interface
  • added support for class hierarchy and pointers to child qdiscs to tcc/ext/{tccext.[ch],echo.c} (tests/extqch)
  • ext_all.c generated qdiscs parent-first, not child-first
  • tccext: introduced new type TCCEXT_CLASS_LIST for list of classes (so that classes can be linked according to their own hierarchy)
  • added comment to tcc/ext/echo.c to clarify its role

 tcng-3x (9-JUL-2001)
tcng-3x.tar.gz (190 kB)

Changes:

  • tccext.c:tccext_destroy may have looped on qdisc destruction
  • tccext and ext_all now support pragmas on qdiscs and classes (tests/pragma)

 tcng-3w (9-JUL-2001)
tcng-3w.tar.gz (190 kB)

Changes:

  • new default parameter handling model involving a stack (currently only used by ext_all.c)
  • param_get now sets prm_priority.v to 1e6 times the floating-point value
  • config.h, error.c: renamed MAX_STACK_DEPTH to MAX_DEBUG_DEPTH
  • added dependency on mkprminc to all .inc files generated by it
  • mkprminc now names fields in structure initializer
  • tcc/ext/{tccext.[ch],echo.c} now know about parameters, and a little bit about the structural relationship between qdiscs and classes
  • added description of qdiscs, classes, and parameters to doc/external.tex

 tcng-3v (6-JUL-2001)
tcng-3v.tar.gz (188 kB)

Changes:

  • pragma on devices did not set param_def, which could crash tcc (test added to tests/pragma)

 tcng-3u (6-JUL-2001)
tcng-3u.tar.gz (188 kB)

Changes:

  • in tccext, changed "queue" to "qdisc", "QUEUE" to "QDISC"
  • added experimental module for dumping full configuration (activated with -A)
  • tccext recognizes (and ignores) "class"

 tcng-3t (4-JUL-2001)
tcng-3t.tar.gz (185 kB)

Changes:

  • configure is now compatible with 2.4.7 (pre-release)
  • configure now takes defaults from old config file if one exists
  • ip.def: UDP_HDR did not evaluate parameters (reported by Stefano Avallone)
  • tcsim/modules/kmod_cc and scripts/runtests.sh used [ with == instead of =, causing problems with older versions of bash (reported by Nikhil Thaker)

 tcng-3s (4-JUL-2001)
tcng-3s.tar.gz (185 kB)

Changes:

  • at external interface, "class" action can now be a comma-separated list of queue/class numbers
  • tcc-ext-echo now prints action number in decimal instead of hex
  • tcc-ext-echo now prints items in the order described in doc/external.tex
  • prio default classification was off by a factor of two
  • adjusted tests accordingly (pragma, unspec)
  • tccext.c could not parse consecutive drops actions

 tcng-3r (2-JUL-2001)
tcng-3r.tar.gz (184 kB)

Changes:

  • remove_duplicates did not handle branches with multiple ingress paths right

 tcng-3q (2-JUL-2001)
tcng-3q.tar.gz (184 kB)

Changes:

  • iflib_bit.c:make_bit now clears counters to avoid buggy-looking debugging output
  • added daVinci URL to scripts/fsm2dav.pl
  • scripts/fsm2dav.pl now also supports "conform" and "count"
  • added missing prototype of if_ext.c:get_offset_group
  • added masks and shifts to iflib_bit.c
  • added mask and shift tests tests/bitops, derived from tests/ifopt

 tcng-3p (1-JUL-2001)
tcng-3p.tar.gz (183 kB)

Changes:

  • oops, iflib_bit.c:dump_this_action had qdisc and class number swapped
  • made iflib_bit.c bug list more complete
  • moved toys/tcm-tests to tests/tcm to show off the new algorithm
  • added test to show double inequality (tests/tcng-3p)

 tcng-3o (29-JUN-2001)
tcng-3o.tar.gz (181 kB)

Changes:

  • integrated early development prototype of "if" expression optimization based on a finite state machine (not useful yet; invoke with -B)
  • added script fsm2dav.pl to convert "raw" FSM output to daVinci term representation

 tcng-3n (27-JUN-2001)
tcng-3n.tar.gz (177 kB)

Changes:

  • syntax "if conform ($p)" is now accepted
  • policer variables can now be redefined (a syntax conflict was introduced in version 3k)
  • greatly simplified the way how the "police" prefix is made optional
  • data_equal: added assertion that arguments aren't operators
  • added debugging output to tcc/var.c

 tcng-3m (26-JUN-2001)
tcng-3m.tar.gz (177 kB)

Changes:

  • tcng language documentation update (use of bare words is discouraged, "police" keyword before variables is optional in if expressions, described "if" and related constructs)
  • added tests for negation combined with field conditions (tests/field)
  • dsmark complained about class for inner qdisc if using default parameters
  • after negation, the && and || actions were not swapped, causing incorrect processing of multiple nested negations
  • tcc/ext/match.c incorrectly refused to count packets for which not enough tokens were available
  • policing may be too permissive if using "count" without prior "conform" (misfeature)
  • tcsim used bit size to check room in byte-sized buffer
  • tcsim did not check room for default size (one byte)
  • tcsim now checks values of packet data for correct range
  • require_class always searched for class 0, yielding incorrect default selections if such a class existed
  • added missing tests for arithmetic replacement of non-equality (tests/arith)

 tcng-3l (19-JUN-2001)
tcng-3l.tar.gz (174 kB)

Changes:

  • qdiscs now have flags expressing their capabilities
  • more rigid checking for qdisc capabilities
  • ingress, dsmark, and prio now generate default class selection (currently enabled with undocumented tcc option -C)
  • added new action "unspec" which is taken in the absence of -C
  • updated tests accordingly (ext, field, misfeature, not, tcng-2u)
  • tcc now knows that # 1 "." from cpp really means ""

 tcng-3k (18-JUN-2001)
tcng-3k.tar.gz (172 kB)

Changes:

  • tcc no longer warns when using "milli" for seconds
  • "police" prefix before variable name is now optional
  • likewise, "filter" prefix before variable name on "on" expression is now optional
  • tcc incorrectly refused "eth0 $q = prio ..."
  • tcc still refuses above assignment with default device (misfeature)
  • tcc incorrectly refused use of qdisc variables at top level
  • "mtu" is no longer required for policers if target is not "tc"
  • updated tests according to above change (pol_ext, pol_traffic, pragma, tcng-3b, vartype)

 tcng-3j (14-JUN-2001)
tcng-3j.tar.gz (171 kB)

Changes:

  • tccext_destroy did not free buckets and actions
  • added "pragma" parameter to all traffic control elements
  • added global pragma directive (tcc)
  • added tcc/ext/echo.c to print parsed configuration on standard error
  • added regression test tests/pragma to test pragmas
  • updated doc/external.tex accordingly

 tcng-3i (14-JUN-2001)
tcng-3i.tar.gz (168 kB)

Changes:

  • added patch patches/tc-dsmark-dfl for iproute2/tc to accept default_index 0 (reported by Stefano Avi)
  • tcc now refuses "if" rooted at classes, or combined with other filters
  • added preliminary support for negation in "if" expressions

 tcng-3h (12-JUN-2001)
tcng-3h.tar.gz (166 kB)

Changes:

  • tcm.tc overestimated tcc's clearvoyance skills by including "count" in negated expressions, from where it may not be removed in time
  • action numbering did not work when "drop" was involved (it did not recognize that "drop" equals "drop", and generated a new inverted tree every time)
  • scripts/runtests.sh now prints a grammatically correct message when there is only a single test

 tcng-3g (12-JUN-2001)
tcng-3g.tar.gz (166 kB)

Changes:

  • if_ext_act.c now tries to use class numbers as action numbers in order to ease visual inspection (suggested by Jacob)
  • updated tests accordingly (tests/field, tests/tcng-2u, tests/tcng-3b)
  • fields.tc is now protected against multiple inclusion
  • iflib_red.c:prune_shortcuts incorrectly reduced 0 || X to 1
  • op.c:unum1_eval incorrectly assumed operands were always constant
  • added TCM design study in toys/tcm.tc

 tcng-3f (11-JUN-2001)
tcng-3f.tar.gz (165 kB)

Changes:

  • added various simple arithmetic optimizations (iflib_arith.c)
  • added corresponding tests in tests/arith
  • tcsim crashed when device name was missing after "dev"
  • u32 target now also supports boolean constants 0 and 1
  • disabled globbing in runtests.sh to allow the use of asterisks in titles
  • iflib_reduce is no longer called by common if code in filter.c:if_dump_tc
  • iflib_red.c:do_optimize_eq shifted the default mask in the wrong direction
  • if_u32 still has problems with masks; recorded them in tests/misfeatures

 tcng-3e (7-JUN-2001)
tcng-3e.tar.gz (162 kB)

Changes:

  • tcc: fields can now be redefined (added test tests/field)
  • policing results can now be used explicitly in "if" expressions (see tests/lib/pol_single_drop.tcsim)
  • added action "drop" to tccext

 tcng-3d (7-JUN-2001)
tcng-3d.tar.gz (161 kB)

Changes:

  • configure is now compatible with 2.4.6 (pre-release)
  • global "make" now also builds content of documentation directory
  • new file tests/pol_traffic with "live" policing tests for "C" and "ext"
  • policing in tcc/ext/match.c didn't work at all
  • added "block" statement to external interface
  • if_ext now sorts bits within the same match and offset group by offset
  • updated regression tests according to above two changes
  • forgot to include scripts/rlatex, oops

 tcng-3c (5-JUN-2001)
tcng-3c.tar.gz (158 kB)

Changes:

  • ether_proto_print(ether_proto(N)) can now return different name than N, or number (to handle protocols unknown to tc, or known under a different name)
  • policer list wasn't NULL-terminated
  • major redesign of action handling in if_ext, resulting in more compact actions group
  • added flag "combine" to iflib_offset to make optimizations suitably tame for if_ext (reported by Jacob)
  • above change makes if_ext generate less elegant offset expressions. Adjusted tests accordingly and moved old test to toys/reminiscence
  • actions may now also include "action N" to point to that action. Updates documentation accordingly.

 tcng-3b (1-JUN-2001)
tcng-3b.tar.gz (155 kB)

Changes:

  • moved runtests.sh to scripts/ where it rightfully belongs
  • iflib_act issued redundant expressions, creating the impression that they were not self-contained
  • moved action_tree from if_ext.c to iflib_act.c
  • action_tree now knows that C || X is an action tree (C = self-contained)
  • iflib_act incorrectly walked into action trees when walking an || chain, making incorrect transformations
  • README still pointed to old download location (reported by Jacob)
  • moved protocol/host/port lookups from tcng.y to new file named.c
  • all filters: new parameter "protocol" to set ether protocol (suggested by Steven Van den Berghe)
  • added a bunch of tests for named items (tests/named)

 tcng-3a (1-JUN-2001)
tcng-3a.tar.gz (153 kB)

Changes:

  • if_ext now moves policing below matches (using iflib_act.c)
  • if_ext now detects redundant or conflicting tests and reduces matches/rules accordingly
  • if_ext now maintains an actions registry, eliminating the shared counter hack
  • added regression tests for above to tests/pol_ext and tests/ext
  • added tests for things to fix: tests/misfeatures

 tcng-2z (31-MAY-2001)
tcng-2z.tar.gz (151 kB)

Changes:

  • added policing support to tcc/ext/match.c
  • added support for overflow bucket to tccext.[ch]
  • doc/external.tex: documented overflow bucket and excluded 0 as bucket index
  • doc/external.tex: count does not count below zero
  • if_ext now generates policing information
  • added regression tests for build process with policing (tests/pol_ext)

 tcng-2y (30-MAY-2001)
tcng-2y.tar.gz (149 kB)

Changes:

  • added pointer to PAX PDL to fields.tc (pointer from Michael Richardson)
  • if_ext.c now generates action indices and actions (largely untested)
  • tccext.c now parses actions and buckets groups
  • adjusted tests/tcng-2u and tccext.[ch] accordingly
  • added warning that tccext_destroy does not free memory objects attached to user fields
  • added policing operators "conform" and "count"
  • added policer parameter "overflow"
  • data.c:print_data now also prints a policer's number
  • added policer construction examples toys/srtcm.tc and toys/trtcm.tc
  • "rate" parameter was optional in CBQ
  • if_ext.c now only invokes debugf if debug > 1

 tcng-2x (29-MAY-2001)
tcng-2x.tar.gz (147 kB)

Changes:

  • tcc/tc.h tcc/tcdefs.h: put macro name after #endif in comments
  • tcsim's include/linux/time.h only provides struct timeval #ifdef __KERNEL__; added #include to provide it where needed (2.4.5 compatibility)
  • tcsim used flag 1 in pseudo-CPP # lines, confusing cpp 2.96-81

 tcng-2w (29-MAY-2001)
tcng-2w.tar.gz (147 kB)

Changes:

  • tcc/ext/tccext: added context as explicit argument to TE_SIZEOF macro (by Jacob Teplitsky)
  • cleaned up tcc/PARAMETERS; moved RSVP and CBQ differences to tcc/README
  • moved description of external format from tcc/if_ext.c to doc/external.tex
  • added scripts/t2x.pl for conversion from LaTeX to ASCII
  • added scripts/rlatex for automatic repeated invocation of LaTeX
  • implemented some of the changes to the external interface
  • renamed tcc-ext-cat to tcc-ext-err and changed output from stdout to stderr
  • updated regression tests to follow external interface changes
  • added new targets sf-upload and upload-sf to upload tcng to SourceForge

 tcng-2v (25-MAY-2001)
tcng-2v.tar.gz (136 kB)

Changes:

  • added test for additive headers (tests/additive)
  • u32 can't handle additive headers; removed code pretending it can

Last update: 3-OCT-2004   Werner Almesberger