capt_get_packet(): check for key press only every 20ms
[iptraf-ng.git] / CHANGES.old
blob28f12e491e2c5c08d05d72d0b4b44ad9b9427fbd
1 CHANGES File for IPTraf 3.0.0
3 Changes to IPTraf 2.7.0 and new features in IPTraf 3.0.0
5         New filter behavior.  Except for TCP traffic in the IP traffic
6         monitor, filters now do not automatically match reverse packets
7         for TCP and UDP IPTraf-wide.  Rather, each filter entry has
8         a field which tells IPTraf whether to match packets flowing
9         in the direction opposite that specified.
11         The filters for non-TCP, non-UDP IP traffic (ICMP, IGRP, OSPF,
12         etc.) which never automatically matched packets flowing in the
13         opposite direction, now have that same option field.  This way
14         related packets (like ICMP echo request/echo reply) can be
15         matched with a single entry.
17         Because reverse-matching is no longer the default IPTraf-wide,
18         the labels are now changed to read Source and Destination.
20         Default value for blank address filter fields is now 0.0.0.0,
21         rather than 255.255.255.255. Fields are therefore no longer
22         pre-filled with 0.0.0.0.
24         Miscellaneous IP filter entries feature a field for other IP
25         protocols not specifically indicated in the dialog.  The user
26         must enter a comma-separated list of individual protocols or a 
27         range.  IP protocols are defined in the /etc/protocols file.
29         The IP traffic monitor consults the /etc/protocols file for 
30         miscellaneous IP packets for the protocol names.  Previously
31         recognized protocols (ICMP, UDP, OSPF, etc) are still looked up 
32         internally for performance reasons.
34         The filter rule selection now indicates the mask in CIDR format
35         (e.g. 10.1.0.0/16) for clarity and to save screen space.
37         Filter selection list box is now alphabetically sorted.
39         Likewise, the CIDR notation can be used when entering IP address
40         data.  However the CIDR notation is translated into a mask and
41         discarded.  Subsequent editing of the filter will show the 
42         corresponding mask.
44         Changed color coding for unknown IP packets (those looked up
45         from /etc/services to bright white on blue (instead of yellow on
46         red, which looked like "errors").
48         Added internal recognition for L2TP, IPSec AH, and IPSec ESP
49         packets.
51         Changed size of the IP traffic monitor's TCP hash table to 1033
52         buckets.  Prime number used to improve hash efficiency.  
54         A new function tx_box() has been added to the screen support
55         library as a solution to the ncurses box() function not accepting
56         the color set by wattrset(), at least on Red Hat 7.3.  All calls
57         to box() have been replaced with this tx_box() instead.  It takes
58         exactly the same parameters.
60         Added support for tun and brg (tunneling and bridging) interfaces.
61         Thanks to Marcio Gomes <tecnica_at_microlink.com.br>.
63         Modified logging options.  The -L parameter now works with any
64         command-line invocation of a facility, even in foreground mode.
66         Added -I command-line parameter to override logging interval
67         configuration option.
69         (Thanks to the contributors of the -I and -L patches. I lost your
70         emails when SEUL reinstalled. Please acknowledge. Thanks.
71         
72         Corrected promiscuous mode control code.  It ignored Token Ring 
73         interfaces.
75 Changes to IPTraf 2.6.1 and new features in IPTraf 2.7.0
77         Corrected bug wherein the detailed interface statistics
78         did not filter out the packets based on the selected
79         interface.  Thanks to the members of the mailing list for
80         this.
82         Corrected minor interface name comparison bugs in the
83         general interface statistics and TCP/UDP service statistics.
85         Corrected stale locks when IPTraf did not start due to an
86         improper terminal size.
88         Added support for additional DVB interfaces sm2*, sm3*, penta*.
90         Added support for wireless LAN interfaces (wlan*, wvlan*).
92         Fixed segfault that occurs when /proc/net/dev is empty or
93         contains no active interfaces.  Thanks to Chris Armstrong 
94         <wolfwings_at_zana.changa.nu> for actually trying it out.
96         Added error box to handle the /proc/net/dev error condition
97         mentioned above.
99         Added error box when tx_operate_listbox is invoked on an empty
100         list.
101         
102 Changes to IPTraf 2.6.0
104         Corrected a segfault in the IP traffic monitor and TCP/UDP service
105         breakdown when a sort is attempted on an empty screen.  Thanks
106         to <lord_at_elreyforce.org> for the report.
108         Corrected segfaults in the TCP/UDP service monitor when
109         scrolling using PgUp and PgDn (or space and '-').  Thanks
110         to Ross Gibson <windows_at_prefixservice.com>.
112         Corrected post-sorting PgUp problem in TCP/UDP monitor.
114         Corrected inaccuracies in the IP traffic monitor's TCP byte
115         counts and flow rates.  *** THE BUG ADDRESSED BY THIS CORRECTION
116         DEFERS IPTRAF 2.6.0. ***
118         Adjusted black-and-white color scheme.
120         Minor adjustments to the printlargenumber() function.
122         Minor cosmetic adjustments.
124 New features in IPTraf 2.6.0 and changes to IPTraf 2.5.0
126         Added support for Token Ring interfaces.  Thanks to many people
127         for help with patches and testing, including J. Kahn Koontz
128         <csjmk_at_eiu.edu>, Dan Seto <mail_at_seto.org>, and Tomas Dvorak
129         <avatar_at_kanal.ucw.cz>.
131         Added support for sbni long-range modem interfaces (Dmitry
132         Sergienko <trooper_at_dolphin.unity.net>).
134         Added support for Free s/WAN IPSec logical interfaces (Doug Nazar
135         <nazard_at_dragoninc.on.ca>).
137         Code cleanup.  Got rid of an ugly goto in itrafmon.c.  I hate
138         goto no matter what.
140         Moved write_timeout_log.c to tcptable.c.
142         Recoded the PgUp/PgDn routines in the IP traffic monitor,
143         TCP/UDP service monitor, and LAN station monitor.  These
144         routines now directly manipulate the table pointers instead
145         of merely calling the single-line scrolling routines repeatedly.
146         Faster.  More efficient.
148         Added a highlight bar to the IP traffic monitor, allowing better
149         readability, especially on long-line screens (> 80 characters),
150         and individual flow rate computation.
152         Added flow rates for the highlighted TCP flows (IP traffic
153         monitor) and TCP/UDP ports (TCP/UDP statistical breakdown) I
154         believe this is the best way to allow viewing of data rates
155         without excessively sacrificing CPU time for packet capture.
157         Filters now apply to all facilities except the packet size
158         breakdown and LAN station monitor.  You can now view the loads
159         and protocol breakdowns on selected packets only using the
160         filters.
162         No more byte counters in the IP traffic monitor.  This line now
163         just contains a simple packet counter at one end, and the TCP
164         flow rate information at the other.
166         Moved menu, selection listbox, and dialog box functions to a
167         separate support/ directory.  These routines are first compiled
168         into a library and later on linked into iptraf.
170         Added a confirmation box to the main menu's Exit command.  This
171         is as much for me as it is for a lot of people.  I accidentaly
172         exit too.
174         Added broadcast packet and byte counts to the detailed interface
175         statistics log.
177         Some cosmetic adjustment.
179         Added 5-minute timeout for rvnamed child processes.
181 New features in IPTraf 2.5.0 and changes to IPTraf 2.4.0
183         Now includes a more specific dialog for non-TCP and non-UDP
184         filters.  Allows specification of packets by source and
185         destination IP addresses.
187         Better organized the filter management and manipulation
188         functions in fltedit.c, fltselect.c, othipflt.c, and utfilter.c.
189         
190         othfilter.c renamed to fltselect.c, same thing with the .h.
192         All filters are now unified in a single data structure allowing
193         handling of TCP, UDP, misc IP, and non-IP toggles with one set
194         of functions.
196         Separate TCP and non-TCP filter menus abolished, everything
197         is now grouped under a Filters... submenu under the main menu.
199         Corrected wrong placement of timer in the packet size breakdown.
201         Corrected scanning code for timed out entries in the IP traffic
202         monitor sort function.  Wrong computation for elapsed time
203         resulted in active connections being placed in the list of
204         closed entries.  Thanks to Gal Laszlo <slowTCP_at_hotmail.com> for
205         pointing out the symptom.
207         Added support for Frame Relay FRAD/DLCI interfaces.  Thanks to
208         Raffaele Gariboldi <lele_at_italynetwork.it> for the information
209         and testing.
211         Sorting is now done with the Quicksort algorithm.
213         IP Traffic Monitor now adds connection entries to the TCP window
214         upon the receipt of header-only packets.  There are cases in which
215         we have to check for possible TCP scans which are implemented with
216         non-SYN packets.
218         The reverse DNS lookup function revname() now times out after
219         five seconds, and stops reverse lookups for that session in case
220         rvnamed dies.
222         Added some notes to the packet size breakdown window.
224         Moved rvnamed cache index update code such that updating of the
225         cache indexes will only be performed once fork() succeeds,
226         otherwise, the allocated slot will just be reallocated for
227         the next queries.  This is so that should the fork() fail,
228         future invocations for that IP address won't have the rvnamed
229         parent thinking its resolving when there actually wasn't a child
230         performing the resolution.  If the fork() problem condition was
231         temporary, the next invocation can still have rvnamed fork() off
232         to resolve the address.  This of course assumes the IP address
233         hasn't expired from the cache.
235         Some cosmetic updates (as always).
237         The manual features a new format for the sidebars.  Corrected
238         typos and spelling errors.
240         iptraf-x.y.z.tar.gz no longer comes with precompiled
241         binaries.  However a separate iptraf-x.y.z.i386.bin.tar.gz will
242         come only with the precompiled x86 executable programs
243         (i386/glibc-2.1/ncurses-5.0).
245 New features in IPTraf 2.4.0 and changes to IPTraf 2.3.1
247         This version now allows multiple instances of the same facility
248         in different processes, but only one instance can monitor an
249         interface.  Please see the RELEASE-NOTES file.
251         As a consequence of the above changes, the default names of the
252         logfiles then reflect the instance or interface being
253         monitored.  See the RELEASE-NOTES file.
254         
255         Implemented a dialog box allowing the user to log to a custom
256         log file.
258         Implemented -L command-line parameter to allow specification of
259         the log file name when IPTraf is started with the -B parameter.
261         Removed hardcoded UNIX-domain socket name bound by IPTraf, instead
262         a socket name is generated from the current time and pid.  Also
263         removed hardcoded socket name in rvnamed, to which it directs
264         replies to IPTraf.  rvnamed still binds to hardcoded socket names
265         though.
267         IP Traffic Monitor can optionally display the source MAC addresses
268         for LAN-based packets.  Added appropriate configuration item.
270         IPTraf now reads /etc/ethers in addition to its own database of
271         MAC addresses.  Thanks to Frederic Peters <fpeters_at_debian.org> for
272         the patch.
274         Moved time-related configuration items to a Timers... submenu to
275         save on screen space.
277         The version.h file no longer exists, rather, a plain version file
278         is in place containing merely the version number.  The Makefile
279         reads this file, determines the target machine information
280         and passes this data to the compiler with -D parameters.
282         Imposed an upper limit of 200 on rvnamed child  processes.
283         rvnamed should really not go runaway with a normally-functioning
284         DNS server, but I had the good fortune of experiencing a dead DNS
285         server while monitoring.  Took my machine down real fast.
287         Precompiled executables now require glibc-2.1 dynamic libaries.
289         Included a Setup installation script to ease somewhat the
290         installation process (installation can still be done the old way
291         though).
293         Cosmetic/color changes.
295         Reflected changes to manual.
297 Changes to IPTraf 2.3.0
299         Fixed segfault bug when sorting is attempted on an empty TCP
300         window.  Thanks to Ramon van Elten <mainwave_at_datura.cx> for the
301         report and for the assistance in diagnosis.
303         Fixed cosmetic error (sort progress window doesn't disappear)
304         when attempt is made to sort a TCP window with only 1 entry.
305         Thanks again to Ramon for the report.
307         Updated some comments.
309 New features in IPTraf 2.3.0 and changes to IPTraf 2.2.2
311         Implemented sorting in the IP traffic monitor, TCP/UDP statistical
312         breakdown, and LAN station monitor.  Great thanks go to Gal Laszlo
313         <slowTCP_at_hotmail.com> for the patch.  (Note to Gal: I had to do a
314         heck of a lot of overhaul, and had to implement a clearer screen
315         design, but your patch provided the basis :) Thanks a lot.)
317         Implemented better bounds checking in the text input routine.
319         Added information boxes to TCP/UDP delete and detach filter
320         functions.
322         Added recognition of GRE packets.  Modified non-TCP display filters
323         accordingly.
325         Fixed bug in unrecognized IP display and filter code.
327         Added filter item for unrecognized IP packets.
329         Removed leftover code from the old warning on IP masquerading.
331         Reflected changes and corrected typos in manual.
333 Changes to IPTraf 2.2.1
335         Fixed recognition problem with DVB interfaces.
337         Fixed small buffer overrun in TCP timeout log routine, which can
338         cause a segmentation fault under certain conditions.
340         Minor cosmetic adjustment in TCP connection window.
342 Changes to IPTraf 2.2.0
344         Fixed segfault in IP Traffic Monitor due to packets from an
345         unsupported link type.
347         Fixed segfault in promiscuous mode management module in the (rare)
348         case of a failure to save or load the interface flags from the
349         temporary storage files. Normally due to a bad installation.
350         Thanks to Udo A. Steinberg <sorisor_at_Hell.WH8.TU-Dresden.De> for
351         the report.
353         Added support for Ethernet-emulated FDDI interfaces. Thanks to Udo
354         A. Steinberg <sorisor_at_Hell.WH8.TU-Dresden.De> for the report and
355         help with the testing.
357         Added support for DVB interfaces, thanks to Alex
358         <vasile_at_keeper.meganet.ro> for the notification and the help.
360         Replaced inet_addr() references on filter address entries with
361         inet_aton().  This fixes failure of filters on packets with
362         255.255.255.255 in their source or destination address fields.
363         Thanks for Peter Magnusson for the report and the test
364         environment.
366         Overhauled TCP/UDP editing facility.  Fixed bug wherein garbage
367         entries remain in the filter's parameter list even if an insert/
368         add dialog is aborted.
370         Fixed detailed interface statistics logging bug (activity and
371         packets-per-second figures were the same).
373         Apologies to Dustin Trammell for my failure to credit him for his
374         report on the behavior of IPTraf on bridges.
376 Changes to IPTraf 2.1.1 and new features in IPTraf 2.2.0
378         Immediate flushing of disk buffers after a log file write to
379         better accomodate separate logfile parsing scripts.
381         Addition of a manual and automatic clearing of closed and idle
382         TCP entries in the IP Traffic Monitor
384         Added a TCP closed/idle persistence configuration option to
385         control the TCP closed/idle clearing interval.
387         Clarified TCP timeout logfile entries.
389         Saves the state of the interface flags at startup of a facility,
390         and restores them on exit, allowing interfaces previously set to
391         promiscuous mode to retain that state.  Important on bridges.
392         Thanks to Dustin D. Trammell <dtrammell_at_cautech.com> and Holger Friese
393         <evildead_at_bs-pc5.et-inf.fho-emden.de> for the patch.  However, I had
394         to modify it a little more than a bit and had to overhaul quite a
395         good deal of the rest of the software to better accomodate
396         multiple instances.
398         Promiscuous mode is set only when a facility is started, and
399         restored when it exits.  Promiscuous mode is no longer forced at
400         menus.  Restoration is not performed though if there is still
401         another facility running, but the interface state remains saved.
403         Fixed a minor bug in the LAN station monitor.  The raw socket is
404         now closed when the facility exits. duh.
406         Fixed rare bug in the packet size distribution.  The lock file didn't
407         get deleted if the raw socket open failed.
409         Changed the promiscuous mode option to "Force promiscuous".
410         Cosmetic.
412         Added PID's (a la syslog) to daemon log entries.
414         Minor cosmetic adjustments.
416 Changes to IPTraf 2.1.0
418         Fixed bug in the packet size statistical breakdown.  The facility
419         didn't filter packets based on interface name, thus causing
420         inaccurate counts on systems with multiple network interfaces.
422         Fixed a few minor cosmetic errors.
424         Corrected some typographical errors in the manual.
426         Added a FAQ (or the beginnings thereof).
428         Added a spec file for RPM generation.  Thanks to Dag Wieers
429         <dag_at_life.be>.  I'm not a really good RPM'er beyond RPM
430         installation and removal.  :)
432 Changes to IPTraf 2.0.2 and new features in IPTraf 2.1.0
434         Added non-IP to the display/logging filter selections
436         Added interface selection to the IP Traffic Monitor and LAN
437         Station Monitor (with an "All Interfaces" option).
439         Related to the above: now requires an interface name as an
440         argument to the -i and -l command-line parameters.  'all' may be
441         specified for monitoring all interfaces.
443         Added -B command-line parameter to fork program into the
444         background solely for logging purposes.  Several people had
445         requested this.
447         Corrected TCP/UDP filter file placement error.  Included cfconv
448         program to move files to the proper place.
450         Added program-wide Ctrl+L sequence to redraw the screen if
451         corrupted by outside factors (write, talk, syslog).
453         Added TCP/UDP filter editing facility.
455         Corrected several possible buffer overruns in TCP/UDP filter
456         module.
458         Corrected errors and reflected changes to manual and man pages.
460 Changes to IPTraf 2.0.1
462         Fixed a rarely-occuring but nevertheless severe segmentation fault
463         bug when long hostnames are coupled with long service names.
464         Great thanks go to Ronald Wahl <rwahl_at_gmx.net> for the advice and
465         the help.  Ron, I'm really gonna find the time to do the code the
466         Right Way  :)
468 Changes to IPTraf 2.0.0
470         Fixed minor non-IP byte count bug in detailed interface statistics.
472         Fixed minor cosmetic bug causing elapsed time indicator to appear
473         in the wrong line on screens not containing 25 lines.  Thanks to
474         Uwe Storbeck <uwe_at_datacomm.ch> for the patch.
476 New features/changes in IPTraf 2.0 from 1.4.2
478         Now uses the new PF_PACKET socket family as its packet capture
479         mechanism.  Requires Linux 2.2.
481         Added target/source IP addresses in ARP packet
482         request/reply packet entries in the IP traffic monitor.  Also
483         added target/source MAC addresses to RARP request/reply entries.
485         Reorganized menu structure, see the README file for details.
487         Moved packet counts by size to a facility of its own.  Added
488         corresponding -z command-line option.
490         New incoming/outgoing packet and byte counts and activity rates in
491         the detailed interface statistics facility.
493         Corrected a bug in the FDDI packet parsing code (wrong link type).
495         Added a check for the IFF_UP flag when generating interface
496         lists, to omit inactive interfaces (but still in /proc/net/dev).
497         This covers the General Interface Statistics and all interface
498         selection lists.
500         Now uses the maximum number of columns on the screen.  High thanks
501         to Michael "M." Brown <m2brown_at_waterloo.ca> for the patch.  Saved
502         me a lot of tedious work. :)
504         Reformatted TCP screen to show only one hostname:port per line,
505         with connections indicated by the green "brackets".  I think
506         that's clear enough.
508         Added ARP/RARP opcode and target addresses in the ARP/RARP
509         indicator lines.
511         Added vertical scrolling to the lower (non-TCP) window in the
512         IP traffic monitor to allow for long lines (ICMP, OSPF, some UDP).
514         Allowed for slightly longer host names in the lower IP traffic
515         monitor window.
517         Still increased the rvnamed cache size to 2048 entries.
519         Miscellaneous cosmetic changes.
521         Manual now includes screen shots and comes in HTML format only.
523 Changes to IPTraf 1.4.1
525         Fixed SEGV condition when attempts are made to load a filter list
526         application or deletion with a zero-length filter list file, which
527         could be caused by deleting the last filter.  Thanks to Daniel
528         Savard <daniel.savard_at_gespro.com> for the report.
530         Makefile comes with the -m486 option commented out
532 Changes to IPTraf 1.4.0
534         Moved configuration status window to unobscure a long menu option.
536 Changes to IPTraf 1.3.0 and new features in 1.4.0
538         Support for PLIP interfaces.
540         Support for other ISDN encapsulations (specifically raw IP and 
541         Cisco HDLC) high thanks to Gerald Richter <richter_at_ecos.de> for
542         the information and testing.
544         Added -q parameter to suppress the 1.3.0 masquerading warning for
545         users who wish to automate the various facilities from their
546         inittab and similar non-interactive fashions.  Incorporated into
547         the Debian version of 1.3.0 by Debian maintainer Frederic Peters
548         (<fpeters_at_debian.org>, carried over to general release 1.4.0.
550         Added an option to change activity indications between kbits/s and
551         kbytes/s.  On a suggestion by Paul G. Fitzgerald
552         <pgfitzgerald_at_buckman.com>.
554         Incorporated more flexible compile-time control of directories for
555         configuration, log, and other files.  Thanks to Stefan Luethje
556         <luethje_at_sl-gw.lake.de> for the patch.
557         
558         Corrected minor flaws in the default screen update delay code
559         (visually insignificant), that led to occasional skips of the
560         delays.  (Call it nitpicking if you will.  :))
561         
562         Moved signal() calls to after terminal checks in iptraf.c,
563         allowing standard behavior of signals when error/warning messages
564         may still be sent to stderr.  Allows the user to break out of it
565         with Ctrl+C at the terminal warning if so desired. 
567         Reformatted IP traffic monitor log entries on Gerald Richter's
568         <richter_at_ecos.de> suggestions for easier processing with Perl 
569         scripts.
571         Included logfile rotation with the USR1 signal.  Again on Gerald
572         Richter's <richter_at_ecos.de> suggestion.
574         Moved first-instance tag sequence to after the initscr() call.
576         Indicated IP fragments with no additional information in the lower
577         traffic monitor window.  Datagram size, addresses, and interface
578         are still indicated.
580         Changed Non-IP count in IP traffic monitor to byte count
581         (including data-link header lengths) from packet counts.
582         Consistency purposes.
584         Added some extra information for certain non-IP packets.  These
585         may eventually grow, but not in too much detail, since this is an
586         IP-oriented utility.  Thanks to David Harbaugh
587         <dlh_at_linux.cayuga-cc.edu> for the patch.
589         Removed bind() operation on raw socket to address a condition in
590         which the detailed interface statistics and TCP/UDP statistics
591         stop counting if an interface goes down then up again.  This will
592         be studied further.  Symptom report sent in by Roeland Jansen
593         <bengel_at_xs4all.nl>.
595         Changed Ethernet/FDDI/PLIP description file formats from binary to
596         plain text, allowing database appends.  Other files (configuration
597         and filters) are still binary.  On a suggestion by David Harbaugh
598         <dlh_at_linux.cayuga-cc.edu>.
600         Copied IP and upper-layer headers and some data from Ethernet, 
601         PLIP, FDDI, and loopback frames into an aligned buffer.  Avoids
602         SIGBUS on picky systems (like SPARCs) and general alignment
603         problems.  I don't know yet which is worse, the overhead of
604         a 96-byte transfer or the performance hit with misaligned reads.
605         Thanks to Jonas Majauskas <jmajau_at_soften.ktu.lt> for reports and
606         tests.
608         Replaced __-type references with u_int-type references.
610         Increased cache array size in rvnamed to 1024 entries from the
611         previous 512, to better handle combinations of busy networks and
612         slow DNS servers.
613         
614         Cleared up a few instructions in the Makefile, thanks to Arjan
615         Opmeer <a.d.opmeer_at_student.utwente.nl>
617 New features in IPTraf 1.3.0 and changes to IPTraf 1.2.0
619         Experimental FDDI support.  High thanks to Paonia Ezrine 
620         <paonia_at_massart.edu> for the initial tests on the FDDI code.  More 
621         feedback is requested on the FDDI functionality.  Bugs may still
622         be present.
624         Reestablished ippp interfaces (synchronous PPP over ISDN) after
625         reports that the ISDN problem was fixed with Linux 2.0.34.
627         Fixed fragmentation oversight in TCP/UDP service monitor.
629         Applied the bind() system call to the raw socket to have the
630         kernel filter out packets from interfaces we're not interested in.
631         Makes for better capture times on multiple-interfaced machines.
632         However, a strncmp() is still performed on the returned interface
633         name to counter the race condition between the socket() and bind()
634         calls.
635         
636         Fixed interface statistics print routines to print unsigned
637         rather than signed numbers.
639         Added additional option to adjust screen updates.  Useful for
640         IPTraf sessions run on remote terminals (thanks to Lutz Vieweg
641         <lkv_at_isg.de> for the suggestion and Dean Gaudet
642         <dgaudet_at_arctic.org> for the base patch.  I modified it a bit,
643         Dean.)
645         Discovered terrible performance penalty due to screen refresh with
646         heavily loaded LAN segments.  Therefore, with the new screen
647         update interval option set to 0, all facilities have a 50 ms delay
648         between refreshes (exception: the LAN station monitor has a delay 
649         of 100 ms). This is still visually fast (although updates
650         look kinda slower), but this gives more time to packet capture,
651         therefore increasing accuracy and capture performance.  Thanks to
652         everyone who responded to my request for advice on this matter and
653         to Ronald Wahl <rwahl_at_gmx.net> for giving me the symptom report.
655         Modified IP traffic monitor to mark TCP connection entries for reuse
656         once one side is fully closed and acknowledged ("CLOSED" on the
657         screen) and the other closed but even if not acknowledged ("DONE" 
658         on the screen.  This is because many times, the last ACK gets lost.
659         
660         Included an additional parameter used together with the other
661         command-line arguments to specify an amount of time for which the
662         selected facility would run before automatically terminating (on a
663         suggestion by Linux HOWTO coordinator Tim Bynum
664         <tjbynum_at_wallybox.cei.net)>.
666         Supplemented the main data structure for the IP traffic monitor
667         with an open hash table for increased search efficiency,
668         especially after the facility has been running for quite some
669         time (the other facilities, which don't grow as much still use
670         linearly-searched linked lists.  I'll probably hash them depending
671         on feedback.)
673         Fixed rare bugs in various facilities that caused IPTraf to
674         attempt to proceed even in the event of a raw socket open failure.
676         Fixed SEGV condition when IPTraf is invoked with a command-line
677         parameter that cannot be parsed with getopt().
679         Added labels to LAN address description selection box.
681         Fixed unsightly LAN address description dialog scrolling.
683         Added a separator feature to the menurt.c module, allowing
684         separation lines within menus.
686         Added separator lines between related groups of menu items in both
687         main and configuration menus.
689         Changed the Options main menu item to Configure.
691         Added the space bar and the '-' key as "unofficial" alternates to
692         the PgUp and PgDn keys (it's not in the manual).
694         Transferred Ethernet description facility option to the Configure
695         submenu, and added a related facility for FDDI addresses.
697         Removed Ethernet-specific references where FDDI and (potentially)
698         other LAN technologies also fit.  We'll just use "LAN" as a
699         general term.
701         Adjusted detailed statistics screen to automatically generate the
702         appropriate packet size distribution brackets based on interface
703         MTU.  This means the brackets may no longer end on numbers
704         divisible by 10, but rather on boundaries based on the MTU divided
705         by 16 (the number of brackets).  But at least 1500 is not
706         hardcoded anymore as the maximum.
708         Related to the immediately preceeding change: packet size
709         distribution updates are done one at a time now, no longer as a
710         whole bunch.  In other words, as a frame arrives, only the
711         appropriate bracket is updated.
713         Also related to previous two: changed basis for packet size
714         distribution to the Ethernet frame length from the IP datagram
715         length (which really doesn't matter except for a few frames).
717         Fixed bug which causes the existing log interval to multiply by 60
718         when the dialog is aborted (instead of retaining the current
719         setting).  Thanks to Chris Higgins <chiggins_at_pobox.com> for the
720         bug report and the patch.  (I had to modify it a bit to fit in
721         with the screen update interval patch sent in by Dean Gaudet.)
723         Potentially large counts have been changed to type "unsigned long
724         long" to significantly increase running time on heavily loaded
725         networks, plus automatic switching of denominations (from exact
726         counts to K(ilo) to M(ega) to G(iga) to T(era)) to prevent screen
727         disruption (on a suggestion by Lutz Vieweg <lkv_at_isg.de>).
728         
729         Separated log file into different logs for each facility.
731         Moved log files to /var/log/iptraf to avoid mixing them with the
732         mess in the /var/local/iptraf directory.  At least that way,
733         we humans don't have to look in /var/local/iptraf anymore.
735         Relaxed multiple-instance restriction from a
736         no-multiple-instances-of-IPTraf requirement to a
737         no-multiple-instance-of-the-same-facility.  In other words,
738         several copies of IPTraf can run, but only one instance of each 
739         facility can run at any one time.  The -f parameter removes the
740         tags, overriding the restrictions on that IPTraf instance.  This 
741         modification was done to  address needs indicated by Chris Panayis
742         <chris_at_freedom2surf.net>).
744         Added a startup warning box if IPTraf detects IP Masquerading 
745         enabled on the computer.  IPTraf will continue to work, but its
746         results may be quite confusing.  The detection is done by
747         opening /proc/net/ip_masquerade.
748         
749         Modified additional port facility to accept ranges of ports rather
750         than several single port numbers (on a suggestion by Lutz Vieweg
751         <lkv_at_isg.de>)
753         Reduced minimum number of lines from 25 to 24 for better VT100
754         terminal compliance.
756         Miscellaneous cosmetic retouches.  (I consider user interface an
757         important factor too, ya know!  :)
759         Distribution binary now comes statically linked with ncurses 4.2.
760         You may recompile to suit your system.
762         Included manual pages derived from the Debian GNU/Linux 2.0
763         distribution.  Man pages written by Frederic Peters
764         <fpeters_at_debian.org> who is now maintaining the Debian IPTraf
765         package.
767         Reversed version order (newest first) in the CHANGES file.
769 New features in IPTraf 1.2.0 and changes to IPTraf 1.1.0 
771         Increased buffer size in ifstats.c for /proc/net/dev lines to 161
772         to better accomodate the longer lines in the new 2.1.x kernels
773         (which will be carried over to the new stable kernel series).  
774         Based on bug reports by Dop Ganger <DopG_at_sprint.ca> and Christoph
775         Lameter <christoph_at_lameter.com> et al. 
777         Fixed rarely occuring high CPU utilization bug occuring whenever
778         a terminal connection is lost, resulting in a SIGHUP which is 
779         ignored.  (This is an example of a software author's temporary 
780         insanity.  I mean, what sane programmer would set SIGHUP to 
781         SIG_IGN for a terminal-based program huh?  Thought so :) Thanks
782         to Dop Ganger <DopG_at_sprint.ca> for the symptom report.
784         Refined Ethernet station monitor rate updates and scrolling code.
786         Fixed autosave bug for non-TCP filters (this was working before
787         1.1.0.  All of a sudden, the function call disappeared
788         mysteriously.  Must have been sleepy that time :)
790         Fixed bug in UDP filter default settings.
792         Added option to display TCP and UDP ports in either name form or
793         numeric form (on a suggestion by Felix von Leitner
794         <leitner_at_math.fu-berlin.de> and others).
796         Added facility to describe Ethernet addresses for the Ethernet
797         station monitor (to address needs as presented by Erlend Middtun
798         <erlendbm_at_funcom.com> via James Ullman <james_at_irc.ingok.hitos.no>)
800         Added an additional field to the TCP/UDP filter dialogs to allow
801         the user to "exclude" certain addresses from the display allowing
802         all others.  Details on the new behavior are in the manual (on a
803         suggestion by Sean Hough <seh_at_javanet.com>)
805         Relaxed screen management code to better adjust to the number of
806         lines on the screen.  As of this release, columns are still based
807         on a maximum number of 80 though.  Also under study is a
808         SIGWINCH handler, but this will have to come later (on comments and
809         suggestions by a *lot* of users...thanks guys :-) ).
811         Fixed a subtle bug in the rvnamed interface IPC code, resulting in 
812         an accurate transfer of data but causing recvfrom() to return an
813         EINVAL at unpredictable intervals.  Bug was an uninitialized address
814         structure length parameter.  Code in both iptraf and rvnamed was
815         fixed.
817         Eliminated unsupported interfaces from interface selection lists.
819         Included enforced restriction disallowng multiple instances of
820         IPTraf and an overriding command-line parameter.  (This may
821         just be temporary, in lieu of a more elegant solution).
823         Included autosave for TCP and UDP filters.  Filters now survive
824         IPTraf exits and restarts without requiring manual reapplication
825         (on a suggestion by Chad Clark <cclark_at_comstar.net>).
827         Included upgrade program and makefile rule to convert IPTraf 1.1.0 
828         configuration and filter files to 1.2.0 format.
830         Clarified TCP/UDP and non-TCP/UDP filter error messages.
832         Color-coded the TCP and UDP protocol/port indicators in the
833         TCP/UDP service monitor for better identification.
835         Revised IP traffic monitor to query rvnamed only once per
836         invocation of the facility.  Less overhead.
838         Revised IP traffic monitor to open and close the rvnamed 
839         communication socket only once per invocation of the facility.
840         Less overhead.
842         Added a 2-second delay after the rvnamed invocation to give
843         the daemon more than enough time to open its sockets.
845         Fixed SEGV condition which occurs when an attempt is made to
846         destroy an interface list never loaded (which could only occur
847         if the /proc system is unreadable, something which shouldn't
848         happen on any decent Linux system).
850         Moved filter list load routine to fltmgr.c, for better linking with
851         the cfconv module.
853         Makefile now installs rvnamed together with the iptraf executable
854         in /usr/local/bin by default.
856         Added table of contents (hyperlinked in the HTML version) to the
857         manual.
859         Cleaned up the Makefile.
861 New features in IPTraf 1.1.0 and changes to IPTraf 1.0.3
863         Added command-line options for direct facility access from the
864         shell, and an appropriate help screen for IPTraf invocation (on a
865         suggestion by BJ Goodwin <latency_at_radiolink.net>).
867         Added separate DNS reverse name lookup program (rvnamed) for
868         quicker response time on reverse DNS lookups.  Subsequently
869         modified the revname function to use the new functionality.
870         This also required additions of address resolution state fields 
871         to struct tcptableent in tcptable.h.
873         Added checkrvnamed() and killrvnamed() to revname.c, used by
874         itrafmon.c to query and stop the rvnamed daemon.
876         Added scrolling capability to the general interface statistics.
877         Interface list will now grow as packets from newly created
878         interfaces are received (e.g. PPP interfaces).  This now makes
879         IPTraf better suited to monitor Linux machines configured as
880         access servers.
881         
882         Interface selection lists can now be scrolled.
884         Increased maximum number of entries in for the non-TCP window
885         in the IP traffic monitor from 256 to 512.
887         Fixed SEGV condition in itrafmon.c that happens whenever the
888         Down cursor key is pressed with the lower window active, but
889         not yet full.
891         Added elapsed time indicators to each facility, showing the
892         hours and minutes that have passed since the start of the
893         monitor (on a suggestion by James Ullman
894         <james_at_irc.Ingok.Hitos.No>)
896         Changed ncurses include file references from <ncurses.h>
897         to <curses.h>
899         Cleaned up preprocessor code for glibc2 support.  Thanks for
900         help and suggestions from John Labovitz <johnl_at_meer.net>.  Thanks 
901         also for a test account on debs.fuller.edu opened by Christoph 
902         Lameter <christoph_at_lameter.com>.
904         Fixed SEGV condition which may occur when trying to close the
905         log file which may never have opened (thanks to John Labovitz
906         <johnl_at_meer.net> for the patch).
908         Adjusted cosmetic code to better indicate the closed status in
909         the TCP monitor.
911         TCP and UDP filters now accept host names in in place of IP
912         addresses.  Host names will be resolved and can still be used
913         with wildcard masks (may be useful for names that resolve to
914         several IP addresses)
916         Distribution now includes an HTML-formatted manual.
918 Changes to IPTraf 1.0.2
920         Fixed SEGV condition when scrolling commands are applied to
921         an empty Ethernet station monitor
923         Distribution executable now comes compiled with -m486 by default.
924         Binary will still execute on a 386, but a 486 or higher is still
925         preferred.
927 Changes to IPTraf 1.0.1
929         Fixed conflicting hotkey for non-TCP filter menu items RARP and
930         IGRP  (the "R" key).  Changed the shortcut key for RARP to "P".
932         Modified layer-2 header stripping code to cleanly ignore packets
933         from unrecognized interfaces (see README).
935         Fixed "duplicate port" misbehavior for the "Additional port"
936         dialog's Cancel command
938         Added error-checking for the port list file open sequence.
940         Added PgUp/PgDn capability to the facilities that can be scrolled
941         (IP traffic monitor, TCP/UDP services, and Ethernet station
942         monitor).
944         Cleaned up scrolling code a bit.
946         Fixed bug in the non-TCP logging facility that caused extraneous
947         log entries whenever the window is scrolled.
949         Sent non-fancy messages to standard error rather than standard
950         output.
952         Changed a few messages
954 Changes to IPTraf 1.0.0
956         Fixed X/Ctrl-X keystroke bug in the General Interface Statistics
957         module (thanks to BJ Goodwin <latency_at_radiolink.net>).  This was
958         kinda an emergency, so I fixed this and released 1.0.1 
959         immediately.