Wed Jun 23 10:15:00 2004 Young Hyun * tagged as arts++-1-1-a11 Added list ID and cycle ID to ArtsIpPath and ArtsIpPathData classes. Applied patch (submitted by "Philippe Raoult" ) to allow compilation with gcc 3.3.3 on Debian 20040422. Wed Apr 21 23:51:30 2004 Ken Keys * tagged as port-gcc3 Ported to g++ 3.2 with its stricter following of ISO/IEC 14882:1998, but retained compatiblity with g++ 2.95. Wed Jan 7 16:01:21 2004 Ryan Koga * tagged as arts++-1-1-a9 Thu Jun 6 18:52:00 2003 Ryan Koga * Changed Makefiles to work with non-GNU make. Fri May 30 23:42:39 2003 Ryan Koga * classes/src/ArtsIpPathData.cc Fixed mistaken output for RTT >= 1 second. Thu May 29 05:42:57 2003 Ryan Koga * classes/include/ArtsIpPath.hh classes/include/ArtsIpPathData.hh classes/include/ArtsIpPathEntry.hh classes/src/Arts.cc classes/src/ArtsIpPathData.cc classes/src/ArtsIpPathEntry.cc Made Rtt() return an actual timeval struct, instead of a reference. Changed read()/write() on some objects to pass flags around in addition to version. Changed internal rtt representation to 4 bytes instead of the 8 of a timeval. Changed output format of rtts for ArtsIpPathData to use 4 bytes instead of 8. rtts are now stored only in microseconds. Added ArtsIpPathEntry::k_rtt as a flag for determining whether or not to output intermediate rtts. Mon Apr 28 20:02:54 2003 Ryan Koga * classes/include/ArtsIpPathData.hh classes/src/ArtsHeader.cc classes/src/ArtsIpPathData.cc classes/src/ArtsIpPathEntry.cc Changed IsComplete() to DestinationReached() Changed IncompleteReason() to HaltReason() Changed TtlLimit() to GapLimit() Added IcmpCode() Added ReplyTtl() (and extra field to store it) Adjusted read/write/output functions to support changes. Fixed output of hex IP addresses to be always in host order. Sat Jan 4 00:57:31 2003 Ken Keys * classes/include/Ipv4PrefixPatricia.hh.in Completely rewritten: - Correctly allows insertion of nesting prefixes, with no requirement that more specific prefixes are inserted after less specific prefixes. - all iterators can be incremented and decremented - code size is about 1/3 of previous implementation Thu Nov 21 21:44:17 2002 Anukool Lakhina * classes/include/ArtsIpPath.hh classes/include/ArtsIpPathData.hh classes/src/ArtsIpPathData.cc Added support for numTries. Thu Nov 16 11:22:46 2000 Daniel W. McRobb * tagged as arts++-1-1-a8 Thu Oct 19 15:03:08 2000 Daniel W. McRobb * classes/src/Arts.cc Made 'operator =' properly clear memory. It had a memory leak. * classes/src/ArtsRttTimeSeriesTableData.cc Clear data before reading from an istream. Mon Oct 2 11:22:46 2000 Daniel W. McRobb * tagged as arts++-1-1-a7 Sat Sep 23 11:31:19 2000 Daniel W. McRobb * classes/src/ArtsRttTimeSeriesTableData.cc Implemented read() and write() members for file descriptors. * classes/src/ArtsPrimitive.cc Fixed reading of 3-byte values in: WriteUint32(int,const uint32_t & value, uint8_t len) We were not correctly returning 3 on success. Fri Aug 18 13:29:00 2000 Daniel W. McRobb * classes/include/ArtsIpPathData.hh classes/src/ArtsIpPathData.cc Added rtt argument to AddHop() member of ArtsIpPathData class. Mon Aug 14 15:23:05 2000 Daniel W. McRobb * classes/include/ArtsIpPathData.hh classes/src/ArtsIpPathData.cc Added flags for incomplete paths to ArtsIpPathData object (to support version 1 data). Version 1 of this object is now experimental. * classes/include/ArtsIpPathEntry.hh classes/src/ArtsIpPathEntry.cc Added new version of ArtsIpPathEntry. Includes support for per-hop RTT and the number of tries the poller needed to invoke a response from each hop. Tue May 23 15:07:26 2000 Daniel W. McRobb * tagged as arts++-1-1-a6 Sun Feb 27 14:38:53 2000 Daniel W. McRobb * Added '-l topN' command-line option to 'artsportmagg'. This option causes 'artsportmagg' to generate selected port table objects for the topN ports by bytes of traffic. This is now the most useful type of port_matrix -> selected_port_table aggregation. Sun Jan 9 00:08:53 2000 Daniel W. McRobb * tagged as arts++-1-1-a5 * classes/src/Makefile.in Fixed tarball target. Mon Nov 22 15:08:19 1999 Daniel W. McRobb * tagged as arts++-1-1-a4 Tue Nov 9 18:42:47 1999 Daniel W. McRobb * We can now build and use a shared version of the arts++ library. This is enabled with the '--enable-shared' argument to configure. If you want a lean and mean version of arts++, you can use: env CXXFLAGS=-O3 ./configure --enable-shared --disable-static make Mon Oct 18 14:50:04 1999 Daniel W. McRobb * tagged as arts++-1-1-a3 * apps/artsintfms/artsintfms.cc apps/artsnets/artsnets.cc apps/artsnets/artsnets.man apps/artsnexthops/artsnexthops.cc apps/artsnexthops/artsnexthops.man apps/artsportms/artsportms.cc apps/artsportms/artsportms.man apps/artsports/artsports.cc apps/artsports/artsports.man apps/artsprotos/artsprotos.cc apps/artsprotos/artsprotos.man apps/artstos/artstos.cc apps/artstos/artstos.man apps/artstoc/artstoc.cc apps/artstoc/artstoc.man Added '-b beginTime' and '-e endTime' options. Thu Oct 7 04:17:39 1999 Daniel W. McRobb * Fixed initialization of _sampleInterval in those classes which were setting it to zero in the constructor. We now use a _sampleInterval of 1 (as originally intended) in the default constructors. * Added setting of TotalBytes() and TotalPkts() in objects created by conversion functions in Arts*Aggregator classes. Fri Sep 3 06:10:08 1999 Daniel W. McRobb * apps/artsases/artsases.cc Added '-b beginTime' and '-e endTime' options. * Added time interval selection code to ArtsFileUtil class. Thu Sep 2 06:45:57 1999 Daniel W. McRobb * tagged as arts++-1-1-a2 * classes/src/ArtsIfIndexSelectionSet.lex classes/src/ArtsObjectTypeSelectionSet.lex Use in place of only if HAVE_STRSTREAM is defined. * classes/include/Ipv4PrefixPatricia.hh.in Added operator * that works on const iterators. * classes/include/ArtsSelectionSet.hh Fixed operator == Lord only knows how gcc-2.95 let this one get by; portChooser wasn't declared anywhere, and there were non-const calls against const objects. Mon Aug 30 20:11:50 1999 Daniel W. McRobb * tagged as arts++-1-1-a1 It's been a long time since a public release, so here's a quick list of changes. We can now combine data across interfaces using 'artsagg', select only data from particular interfaces to be aggregated, and select particular object types to be aggregated from 'artsagg'. This makes 'artsagg' the Swiss army knife of aggregation, and we should probably deprecate the other aggregation utilities. However, the other aggregation utilities are still around and have been updated with interface selection and combination functionality. All of the arts++ display utilities for cflowd data (artaases, artsnets, et. al.) now include the ability to select data by interface index. See the manpages. Some of them also permit only showing the top N entries in each selected object (useful for large objects like the net matrix), using the '-l maxEntries' command line option (feature requested by several, '-l' naming came from Paul Howell at Merit). Again, see the manpages. I fixed the aggregation code to correctly aggregate each individual object. This fixes a bug where we aggregated objects for the same interface (ifIndex) too early because we weren't loking at each object's timestamp but were instead aggregating a whole aggregator map when we got the first object of a given type whose timestamp was beyond the aggregation interval (if anyone but Daniel can understand that sentence...). This was reported by Christian B. Wiik on the cflowd mailing list on August 19, 1999 but we were already aware of it. A TOS table object now exists, and aggregation is supported (in the library and 'artsagg'). 'artstos' is the simple TOS display program. 'artstoc' now skips the data portion of objects, making it considerably faster in most cases (reading the contents of net matrix and port matrix objects can be very expensive when we're not even going to look at the data ;-)). cflowd data objects may now contain two new attributes: - interface description - interface IP address These are shown by the display utilities if present. They correspond to the name and IP address of the interface from which the data was collected. cflowd uses SNMP to retrieve these values. I've fleshed out Bgp4 classes, and they're now implemented (but not fully tested). CAIDA members-only code is using these classes to store and process BGP4 Adj-RIB-In dumps from mrtd (and soon a CAIDA bgp4 speaker that will work directly with the Arts Bgp4 classes). The Patricia template code is still a bit scary at the moment, so I wouldn't recommend using it yet (there are some undocumented gotchas). We now have RTT time series classes. These are used by CAIDA members-only programs like 'skping'. Thu Aug 26 04:52:12 1999 Daniel W. McRobb * Committed tweaks to aggregation code. We can now combine data across interfaces using 'artsagg', select only data from particular interfaces to be aggregated, and select particular object types to be aggregated from 'artsagg'. This makes 'artsagg' the Swiss army knife of aggregation, and we should probably deprecate the other aggregation utilities. Fri Aug 20 01:48:44 1999 Daniel W. McRobb * ArtsPortChooser.cc replaced by ArtsPortChooser.lex, since I put the port list lexer in (and removed the lexer code from the apps/artsportmagg/ directory). * Cleaned up aggregation code, moving functionality from aggregation utilities into the arts++ library. 'artsagg' will now accept '-s portlist' argument just like 'artsportmagg', since 'artsagg' may have to deal with port matrices in input. This also means that some ArtsFileUtil member functions now have an ArtsPortChooser argument they didn't have before. * Fixed aggregation to correctly aggregate each individual object. This fixes a bug where we aggregated objects for the same interface too early because we weren't loking at each object's timestamp but were instead aggregating a whole aggregator map when we got the first object of a given type whose timestamp was beyond the aggregation interval. Tue Aug 17 22:01:55 1999 Daniel W. McRobb * Now using '#ifndef NDEBUG' instead of '#ifdef ARTS_DEBUG_CLASS_ALLOC'. This means debugging support will be compiled in by default. It can be disabled using the '--disable-debug' option of configure. I've also eliminated the separate debugging target in classes/src/Makefile.in, since it wasn't seeing much use and it's easier to just have the debugging code in the normal library target (it's not heavy code). Wed Aug 11 11:48:55 1999 Daniel W. McRobb * Cleaned up for gcc-2.95. Minor tweaks to meet parts of C++ standard (yes, there is a C++ standard now). Unfortunately I haven't yet moved to a fully standard-compliant implementation, because I have to retain support for older compilers (for example, the old header file naming conventions and things like strstream). Fri Apr 30 03:24:35 1999 Daniel W. McRobb * Added aggregation support for TOS object in library and in 'artsagg'. Added 'artstos' program. * Added TOS table object for tracking traffic for each IP TOS value (will be used by cflowd system). Mon Apr 12 00:15:43 1999 Daniel W. McRobb * configure configure.in classes/include/ArtsAsMatrixData.hh classes/include/ArtsAsMatrixEntry.hh classes/include/ArtsHeader.hh classes/include/ArtsInterfaceMatrixData.hh classes/include/ArtsInterfaceMatrixEntry.hh classes/include/ArtsIpPathEntry.hh classes/include/ArtsNetMatrixEntry.hh classes/include/ArtsNextHopTableEntry.hh classes/include/ArtsPortMatrixData.hh classes/include/ArtsPortMatrixEntry.hh classes/include/ArtsPortTableEntry.hh classes/include/ArtsProtocolTableEntry.hh classes/include/ArtsSelectedPortTableEntry.hh classes/include/artslocal.h.in classes/include/caida_t.h.in classes/src/ArtsAsMatrixAggregatorMap.cc classes/src/ArtsBgp4AsPathSegment.cc classes/src/ArtsInterfaceMatrixAggregatorMap.cc classes/src/ArtsIpPath.cc classes/src/ArtsIpPathData.cc classes/src/ArtsNetMatrixAggregatorMap.cc classes/src/ArtsNetMatrixData.cc classes/src/ArtsNextHopTableAggregatorMap.cc classes/src/ArtsNextHopTableData.cc classes/src/ArtsPortChooser.cc classes/src/ArtsPortMatrixAggregatorMap.cc classes/src/ArtsPortTableData.cc classes/src/ArtsProtocolTableAggregatorMap.cc classes/src/ArtsProtocolTableData.cc classes/src/ArtsRttTimeSeriesTableData.cc classes/src/ArtsSelectedPortTableData.cc Now moving toward using ISO/IEC 14882:1998 header file names for Standard C++ Library headers. Unfortunately not all compilers are current, so I fall back to the old GNU names when I don't find the headers under their standard names. I do this by setting macros in classes/include/artslocal.h and conditionals in source files which use the macros. Eventually we should be able to get rid of classes/include/artslocal.h and remove the conditional gunk in our source (and just use the standard named). Some day... :-) Also committed some fixes in checking for fixed-width integer types, including now checking for * apps/artsases/artsases.cc apps/artsintfms/artsintfms.cc apps/artsnets/artsnets.cc apps/artsnexthops/artsnexthops.cc apps/artsportms/artsportms.cc apps/artsprotos/artsprotos.cc Now using istream_iterator to step through input files. Sun Apr 11 23:21:40 1999 Daniel W. McRobb * Added 'istream & operator >> (istream &, ArtsFoo &)' for each first-level descendant of the Arts class. This allows us to walk through an istream with an istream_iterator and only get a particular type of object (our operator skips over other types of objects). * Added public copy constructor for Arts class. This trickles down to first-level descendants of the Arts class. This was added mostly to handle those parts of STL which use the copy constructor. * Added DeleteData() and DeleteAttributes() to Arts class. This makes it easier to do cleanup in various places (like the read() member functions). * Fleshed out Bgp4 classes, and they're now implemented (but not fully tested). CAIDA members-only code is using these classes to store and process BGP4 Adj-RIB-In dumps from mrtd (and soon a CAIDA bgp4 speaker that will work directly with the Arts Bgp4 classes). * Added RTT time series classes. These are used by CAIDA members-only programs like skping. Sun Mar 21 18:45:24 1999 Daniel W. McRobb * apps/artsprotos/artsprotos.cc apps/artsprotos/artsprotos.man apps/artsports/artsports.cc apps/artsports/artsports.man apps/artsportms/artsportms.cc apps/artsportms/artsportms.man apps/artsnexthops/artsnexthops.cc apps/artsnexthops/artsnexthops.man apps/artsases/artsases.cc apps/artsases/artsases.man apps/artsnets/artsnets.cc apps/artsnets/artsnets.man apps/artsintfms/artsintfms.cc apps/artsintfms/artsintfms.man Added '-i ifIndex' command-line option for selecting data for a specific inpute interface. Note: in the case of 'artsintfms', this is the same as the '-s srcIntf' option, but checks the interface index attribute instead of the actual interface matrix entries. Tue Feb 9 02:03:20 1999 Daniel W. McRobb * tagged as arts++-0-9-b6 * apps/artsports/artsports.cc apps/artsports/artsports.man Added service name lookups for port numbers, and we now print them instead of the port numbers (unless the -n command line option is used, in which case we always print only the port numbers). Sun Feb 7 16:51:08 1999 Daniel W. McRobb * apps/artsases/artsases.cc apps/artsases/AsTrafficTotal.hh apps/artsases/artsases.man apps/artsases/Makefile.in Added '-t AS' option to 'artsases' to show only total traffic to/from a particular AS. Also added -r option to show rates instead of totals when using the '-t AS' option. Mon Jan 25 03:40:37 1999 Daniel W. McRobb * Added skeleton work for FreeBSD ports packaging. Hopefully I'll have this submitted before the FreeBSD 3.1-RELEASE cut (scheduled for mid-February 1999). * Added top-level 'debug' target which builds debugging library and applications. Note this is really intended for me (dwm) only; the 'install' target will strip out symbols but you'll still have reference counting if you used the 'debug' target. * Tested with egcs 1.1.1 on FreeBSD 3.0. Compiles and runs fine. * Added more reference counting code for debugging. Sun Jan 24 15:17:27 1999 Daniel W. McRobb * strip binaries before installing them, to save disk space. Sat Jan 23 05:16:02 1999 Daniel W. McRobb * Added 'asagg' program to aggregate all cflowd data in a single pass. * Started converting silly allocation debugging code to reference counting in class library. Note done yet. Fri Jan 22 00:20:52 1999 Daniel W. McRobb * apps/artsprotos/artsprotos.cc apps/artsprotos/artsprotos.man Print protocol names instead of protocol numbers, unless -n command line option is used. Wed Dec 23 00:16:40 1998 Daniel McRobb * Now using config.guess/config.sub to set OSNAME and to handle OS-dependent stuff in configure (using AC_CANONICAL_SYSTEM). A side-effect here is that the 'tarball' target now uses a different filename. The new tarball target contains the CPU type and OS name. Note that this means we now use 'solaris2.x' instead of 'SunOS_5.x'; this may be good or bad depending on your perspective. Note I'm still not using the full 'host' variable from AC_CANONICAL_SYSTEM; this may or may not change in the future. I'm currently using ${host_cpu}-${host_os} in the tarball output filename. Tue Dec 22 14:38:13 1998 Daniel McRobb * tagged as arts++-0-9-b5 * apps/artsportmagg/Makefile.in Added lex.yy.c to 'clean' target. Now using @FLEXINC@ and @FLEXLIB@ for flex include and library, respectively. * configure, configure.in Now setting FLEXINC and FLEXLIB (and substituting for them). Currently only used in apps/artsportmagg/Makefile.in Fri Dec 18 17:24:19 1998 Daniel McRobb * classes/src/Arts.cc Added initialization of _data._interfaceMatrix and _data._nextHopTable in Arts constructor. Mon Dec 14 07:06:46 1998 Daniel McRobb * tagged as arts++-0-9-b4 Sat Dec 12 06:18:32 1998 Daniel McRobb * Whoops... removed scoping in IdentifierName() member prototype in classes/include/ArtsHeader.hh (accidental cut-and-paste from ArtsHeader.cc). Fri Dec 11 13:31:04 1998 Daniel McRobb * tagged as arts++-0-9-b3 * Added ArtsHeader::IdentifierName() member. artstoc now uses it. Wed Dec 9 01:35:12 1998 Daniel McRobb * tagged as arts++-0-9-b2 * Added blurb about environment settings (PATH and MANPATH) in INSTALL. We also spit out a reminder for these settings when 'make install' has completed. * Fixed install targets in classes/include/Makefile.in and classes/src/Makefile.in. There was a problem when @includedir@ didn't exist. Mon Dec 7 02:49:15 1998 Daniel McRobb * tagged as arts++-0-9-b1 Sun Dec 6 08:20:46 1998 Daniel McRobb * Added simple 'artsintfmagg' program. * Added simple 'artsintfms' program. * Added simple 'artsnexthopagg' program. * Added simple 'artsnexthops' program. * Added aggregator classes for interface matrix and nexthop table data. * Added nexthop table to class library. This is intended to hold traffic data for each IP nexthop from a router. Each cell contains packets and bytes sent to an IP nexthop, and is associated with the IP address of the nexthop. Thu Dec 3 16:21:17 1998 Daniel McRobb * Added interface matrix object to class library. This is intended to hold traffic data for a router's interfaces: each cell contains packets and bytes sent from an input interface to an output interface. Mon Nov 9 12:30:36 1998 Daniel McRobb * tagged as arts++-0-9-a11 * Fixed configure script checks for integer types in and . The only right way to check for this is with AC_TRY_COMPILE() in configure.in. Fri Oct 30 22:53:53 1998 Daniel McRobb * tagged as arts++-0-9-a10 * Fixed TopSourcesByBytes() and TopDestinationsByBytes() in ArtsAsMatrixAggregator class. I now always return a vector whose size is the smaller of the caller's passed in size and the actual number of ASes in the data. Wed Oct 21 02:30:15 1998 Daniel McRobb * tagged as arts++-0-9-a9 * Added ArtsNetMatrixAggregatorMap, ArtsPortMatrixAggregatorMap and ArtsProtocolTableAggregatorMap classes. These are just like the ArtsAsMatrixAggregatorMap for the corresponding aggregator classes (ArtsNetMatrixAggregator, ArtsPortMatrixAggregator and ArtsProtocolTableAggregator, respectively). * Added ArtsAsMatrixAggregatorMap class, which is an STL with an ArtsAsMatrixAggregatorMapKey class as the key and an ArtsAsMatrixAggregator as the value. 'artsasagg' now uses this class (really no different than what is was already doing, just makes the code a tad bit cleaner). * Added Attributes() member to ArtsAsMatrixAggregator class. Thu Oct 15 00:42:08 1998 Daniel McRobb * Added initial primitive support for reading/writing floats and doubles in the ArtsPrimitive class. This required some ugliness in configure and a scary C macro rewrite to deal with a broken xdr_destroy() macro in on FreeBSD 2.x systems. We only rewrite the xdr_destroy() macro on FreeBSD 2.x systems, and then only if compiling a tiny program w/o our rewrite doesn't work (the compile check is in DWM_XDR_DESTROY_MACRO_DONT_PASS_POINTER in dwm.m4). * tagged as arts++-0-9-a8 * Sigh, fixed sed command in DWM_SET_VERSION (again). Lord how I wish sed was portable... Wed Oct 14 16:07:05 1998 Daniel McRobb * tagged as arts++-0-9-a7 * Fixed sed command in DMW_SET_VERSION in dwm.m4. * Fixed tar command in apps/artsports/Makefile.in * Added 'touch @PKG_VERSION@.@OSNAME@_@OSRELEASE@.tar' to tarball rule in top-level Makefile.in, before adding files to the tarball. Some versions of tar don't like 'tar -rvf foo bar' if foo doesn't already exist, so we force it to exist (but be empty since we remove it before touching it). * tagged as arts++-0-9-a6 * Added setting of @TAR@ in configure, so that we can add '-P' to the tar command on platforms with GNU tar. This is silly hardcoding at the moment, but it's only used for 'make tarball' (after 'make install'). * tagged as arts++-0-9-a5 * Added @OSRELEASE@ to name of output file for 'tarball' target. Tue Oct 13 22:15:35 1998 Daniel McRobb * Added tarball target to be used post-install. It tars up the installed files so you can use it to install binaries on another host of the same flavor. Tue Oct 13 15:06:35 1998 Daniel McRobb * tagging as arts++-0-9-a4 * Added ArtsPackageVersion class for simple version stuff based on CVS Name and Id tags. Added -v command-line option to utilities (which uses the ArtsPackageVersion class). Added better command-line checking to utilities. Fri Oct 9 00:17:33 1998 Daniel McRobb * Added code to 'artsports' to show total packets and bytes (sum of in and out) for each port, which also shows the total rates (packets/sec and bits/sec). Thu Oct 8 01:23:19 1998 Daniel McRobb * tagging as arts++-0-9-a3 * Added code to 'artsports' to handle ArtsSelectedPortTable objects in addition to ArtsPortTable objects. * Added functionality to 'artsportmagg' that permits generation of ArtsSelectedPortTable objects in the output instead of ArtsPortMatrix objects. This is available via the '-s portlist' command-line option (see the artsportmagg manpage). * Added member to ArtsPortMatrixAggregator class that will return a pointer to an allocated ArtsSelectedPortTable object that is generated from the ArtsPortMatrixAggregator data and a passed-in ArtsPortChooser object. This new member of the ArtsPortMatrixAggregator class is called ConvertToArtsSelectedPortTable(). This allows the class user to boil ArtsPortMatrix data down to ArtsSelectedPortTable data in a configurable manner. * Added ArtsSelectedPortTable class, which is like a shortened ArtsPortTable class: data is kept only for selected ports, with all 'other' ports lumped under an entry for port 0. This type of object is usually generated from ArtsPortMatrix data. * Added ArtsPortChoice and ArtsPortChooser classes, which are support classes to be used later for reducing port matrices to port tables. * Added SetAll() and UnsetAll() to ArtsBitString class. * Added initialization of this->_data._portMatrix to NULL in Arts constructor. The destructor depends on it; without it we will get calls to the ArtsPortMatrixData destructor on uninitialized ArtsPortMatrixData pointers. Wed Oct 7 19:58:39 1998 Daniel McRobb * Added ArtsBitString class, which is currently just a convenient bitstring class (it currently has no read/write functions and is not part of the Arts class heirarchy).