]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ipfilter/HISTORY
This commit was generated by cvs2svn to compensate for changes in r102528,
[FreeBSD/FreeBSD.git] / contrib / ipfilter / HISTORY
1 #
2 # NOTE: Quite a few patches and suggestions come from other sources, to whom
3 #       I'm greatly indebted, even if no names are mentioned.
4 #
5 # Thanks to the Coombs Computing Unit at the ANU for their continued support
6 # in providing a very available location for the IP Filter home page and
7 # distribution center.
8 #
9 # Thanks to Hewlett Packard for making it possible to port IP Filter to
10 # HP-UX 11.00.
11 #
12 # Thanks to Tel.Net Media for supplying me with equipment to ensure that
13 # IP Filter continues to work on Solaris/sparc64.
14 #
15 # Thanks to BSDI for providing object files for BSD/OS 3.1 and the means
16 # to further support development of IP Filter under BSDI.
17 #
18 # Thanks to Craig Bishop of connect.com.au and Sun Microsystems for the
19 # loan of a machine to work on a Solaris 2.x port of this software.
20 #
21 # Thanks also to all those who have contributed patches and other code,
22 # and especially those who have found the time to port IP Filter to new
23 # platforms.
24 #
25 3.4.29  28/8/2002 - Released
26
27 Make substantial changes to the FTP proxy to improve reliability, security
28 and functionality.
29
30 don't send ICMP errors/TCP RST's in response to blocked proxy packets
31
32 fix potential memory leaks when unloading ipfilter from kernel
33
34 fix bug in SIOCGNATL handler that did not preserve the expected
35 byte order from earlier versions in the port number
36
37 set do not fragment flag in generated packets according to system flags,
38 where available.
39
40 preserve filter rule number and group number in state structure
41
42 fix bug in ipmon printing of p/P/b/B
43
44 make some changes to the kmem.c code for IRIX compatibility
45
46 add code to specifically handle ip.tun* interfaces on Solaris
47
48 3.4.28  6/6/2002 - Released
49
50 Fix for H.323 proxy to work on little endian boxes
51
52 IRIX: Update installation documentation
53       add route lock patch
54
55 allow use of groups > 65535
56
57 create a new packet info summary for packets going through ipfr_fastroute()
58 so that where details are different (RST/ICMP errors), the packet now gets
59 correctly NAT'd, etc.
60
61 fix the FTP proxy so that checks for TCP sequence numbers outside the
62 normal offset due to data changes use absolute numbers
63
64 make it possible to remove rules in ipftest
65
66 Update installing onto OpenBSD and split into two directories:
67 OpenBSD-2 and OpenBSD-3
68
69 fix error in printout out the protocol in NAT rules
70
71 always unlock ipfilter if locking fails half way through in ipfs
72
73 fix problems with TCP window scaling
74
75 update of man pages for ipnat(4) and ipftest(1)
76
77 3.4.27  28/04/2002 - Released
78
79 fix calculation of 2's complmenent 16 bit checksum for user space
80
81 add mbuflen() to usespace compiles.
82
83 add more #ifdef complexity for platform portability
84
85 add OpenBSD 3.1 diffs
86
87 3.4.26  25/04/2002 - Released
88
89 fix parsing and printing of NAT rules with regression tests.
90
91 add code to adjust TCP checksums inside ICMP errors where present and as
92 required for NAT.
93
94 fix documentation problems in instal documents
95
96 fix locking problem with auth code on Solaris
97
98 fix use of version macros for FreeBSD and make the use of __FreeBSD_version
99 override previous hacks except when not present
100
101 fix the macros defined for SIOCAUTHR and SIOCAUTHW
102
103 fix the H.323 proxy so it no longer panics (multiple issues: re-entry into
104 nat_ioctl with lock held on Solaris, trying to copy data from kernel space
105 with copyin, unaligned access to get 32bit & 16bit numbers)
106
107 use the ip_ttl ndd parameter on Solaris to fill in ip_ttl for packets
108 generated by IPFilter
109
110 fix comparing state information to delete state table entries
111
112 flag packets as being "bad state" if they're outside the window and prevent
113 them from being able to cause new state to be created - except for SYN packets
114
115 be stricter about what packets match a TCP state table entry if its creation
116 was triggered by a SYN packet.
117
118 add patches to handle TCP window scaling
119
120 don't update TCP state table entries if the packet is not considered to be
121 part of the connection
122
123 ipfs wasn't allowing -i command line option in getopt
124
125 IRIX: fix kvm interface, fix compile warnings, compile the kernel with -O2
126       regardless of user compile, fix the getkflags script to prune down the
127       output more so it is acceptable
128
129 change building in Makefiles to create links to the application in $(TOP)
130 at the end of "build" rather than when each is created.
131
132 update BSD/kupgrade for FreeBSD
133
134 l4check wasn't properly closing things when a connection fails
135
136 man page updates for ipmon(8) and ipnat(5)
137
138 more regression tests added.
139
140 3.4.25  13/03/2002 - Released
141
142 retain rule # in state information
143
144 log the direction of a packet so ipmon gets it right rather than incorrectly
145 deriving it from the rule flags
146
147 add #ifdef for IPFILTER_LOGSIZE (put options IPFILTER_LOGSIZE=16384 in BSD
148 kernel config files to increase that buffer size)
149
150 recognise return-* rules differently to block in ipftest
151
152 fix bug in ipmon output for solaris
153
154 add regression testing for skip rules, logging and using head/group
155
156 fix output of ipmon: was displaying large unsigned ints rather than -1
157 when no rules matched.
158
159 make logging code compile into ipftest and add -l command line option to
160 dump binary log file (read with ipmon -f) when it finishes.
161
162 protect rule # and group # from interference when checking accounting rules
163
164 add regression testing for log output (text) from ipmon.
165
166 document -b command line option for ipmon
167  
168 fix double-quick in Solaris startup script
169
170 3.4.24  01/03/2002 - Released
171
172 fix how files are installed on SunOS5
173
174 fix some minor problems in SunOS5 ipfboot script
175
176 by default, compile all OpenBSD tools in 3.0 for IPv6
177
178 fix NULL-pointer dereference in NAT code
179
180 make a better attempt at replacing the appropriate binaries on BSD systems
181
182 always print IPv6 icmp-types as a number
183
184 impose some rules about what "skip" can be used with
185
186 fix parsing problems with "keep state" and "keep state-age"
187
188 Try to read as much data as is in the log device in ipmon
189
190 remove some redundant checks when searching for rdr/nat rules
191
192 fix bug in handling of ACCT with FTP proxy
193
194 increase array size for interface names, using LIFNAMSIZ
195
196 include H.323 proxy from QNX
197
198 3.4.23  16/01/2002 - Released
199
200 Include patches to install IPFilter into OpenBSD 3.0, both for just kernel
201 compiles and complete system builds.
202
203 Fix bug in automatic flushing of state table which would cause it to hang
204 in an infinite loop bug introduced in 3.4.20.
205
206 Modify the sample proxy (samples/proxy.c) so that it ads a NAT mapping for
207 the outgoing connection to make it look like it comes from the real source.
208
209 Only support ICMPv6 with IPv6.
210
211 Move ipnat.1 to ipnat.8
212
213 Enhance ipmon to print textual ICMP[v6] types and subtypes where possible.
214
215 Make it possible to do IPv6 regression testing with ipftest.
216
217 Use kvm library for kmem access, rather than trying to do it manually with
218 open/lseek/read.
219
220 Fix diffs for ip_input.c on BSDOS so it doesn't crash with fastroute.
221
222 Remove Berkeley advertising licence clause. Reference:
223 ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
224
225 Add more regression tests: ICMPv6 neighbour discovery, ICMP time exceeded
226 and fragmentation required.
227
228 Fix ipfboot script on Solaris to deal with no nameservers or no route to
229 them in a clean manner.
230
231 Support per-rule set timeouts for non-TCP NAT and state
232
233 Add netbios proxy
234
235 Add ICMPv6 stateful checking, including handling multicast destination
236 addresses for neighbour discovery.
237
238 Fix problems with internals of ICMP messages for MTU discovery and
239 unreachables not being correctly adjust on little endian boxes.
240
241 Add "in-via" and "out-via" to filtering rules grammar.  It is now possible
242 to bind a rule to both incoming and outgoing interfaces, in both forward
243 and reverse directions (4 directions in total).  allows for asymetric flows
244 through a firewall.
245
246 Fix ipfstat and ipnat for working on crash dumps.
247
248 Don't let USE_INET6 stay defined for SunOS4
249
250 Count things we see for each interface on solaris.
251
252 Include <netinet/icmp6.h> when compiling with USE_INET6 defined and
253 also include a whole bunch of #define's to make sure the symbols expected
254 can be used.
255
256 Fix up fastroute on BSD systems.
257
258 Make fastrouting work for IPv6 just a bit better.  doesn't split up big
259 packets into fragments like the IPv4 one does.  You can now do a
260 "to <if>:<ipv6_addr>"
261
262 Remove some of the differences between user-space and kernel-space code
263 that is internal to ipfilter.
264
265 Call ipfr_slowtimer() after each packet is processed in ipftest to artificially
266 create the illusion of passing time and include the expire functions in the
267 code compiled for user-space.
268
269 Fix issues with the IPSec proxy not working or leading to a system crash.
270
271 Junk all processing of SPIs and special handling for ESP.
272
273 Add "no-match" as a filter rule action (resets _LAST_ match)
274
275 Add hack to workaround problems with Cassini interface cards on
276 Solaris and VLANs
277
278 Add some protocols to etc/protocols
279
280 3.4.22  03/12/2001 - Released
281
282 various openbsd changes
283
284 sorting based on IP numbers for ipfstat top output
285
286 fix various IPv6 code & compile problems
287
288 modify ip_fil.c to be more netbsd friendly
289
290 fix fastroute bug where it modified a packet post-sending
291
292 fix get_unit() - don't understand why it was broken.
293
294 add FI_IGNOREPKT and don't count so marked packets when doing stats or
295 state/nat.
296
297 extend the interface name saved to log output
298
299 make proxies capable of extending the matching done on a packet with a
300 particular nat session
301
302 change interfaces inside NAT & state code to accomodate redesign to allow
303 IPsec proxy to work.
304
305 fix bug when free'ing loaded rules that results in a memory leak
306 (only an issue with "ipf -rf -", not flush)
307
308 make ipftest capable of loading > 1 file or rules, making it now possible
309 to load both NAT & filter rules
310
311 fix hex input for ipftest to allow interface name & direction to work
312
313 show ipsec proxy details in ipnat output
314
315 if OPT_HEX is set in opts, print a packet out as hex
316
317 don't modify b_next or preseve it or preserve b_prev for solaris
318
319 fix up kinstall scripts to install all the files everywhere they need to
320
321 fix overflowing of bits in ip_off inside iptest
322
323 make userauth and proxy in samples directory compile
324
325 fix minimum size when doing a pullup for ESP & ICMPv6
326
327 3.4.21  24/10/2001 - Released
328
329 include ipsec proxy
330
331 make state work for non-tcp/udp/icmp in a very simple way
332
333 include diffs for ipv6 firewall on openbsd-2.9
334
335 add compatibility filter wrapper for NetBSD-current
336
337 fix command line option problems with ipfs
338
339 if we fill the state table and a automated flush doesn't purge any
340 expiring entries, remove all entries idle for more than half a day
341
342 fix bug with sending resets/icmp errors where the pointer to the data
343 section of the packet was not being set (BSD only)
344
345 split out validating ftp commands and responses into different halves,
346 one for each of server & client.
347
348 do not compile in STATETOP support for specific architectures
349
350 fix INSTALL.FreeBSD to no longer provide directions and properly direct
351 people to the right file for the right version of FreeBSD.
352
353 3.4.20  24/07/2001 - Released
354
355 adjust NAT hashing to give a better spread across the table
356
357 show icmp code/type names in output, where known
358
359 fix bug in altering cached interface names in state when resync'ing
360
361 fix bug in real audio proxy that caused crashs
362  
363 fix compiling using sunos4 cc
364
365 patch from casper to address weird exit problem for ipstat in top mode
366
367 patch from Greg Woods to produce names for icmp types/unreach codes,
368 where they are known
369
370 fix bug where ipfr_fastroute() would use a mblk and it would also get
371 freed later.
372
373 don't match fragments which would cause 64k length to be exceeded
374
375 ftp proxy fix for port numbers being setup for pasv ftp with state/nat 
376
377 change hashing for NAT to include both IP#'s and ports.
378
379 Solaris fixes for IPv6
380
381 fix compiling iplang bits, under Solaris, for ipsend
382
383 3.4.19  29/06/2001 - Released
384
385 fix to support suspend/resume on solaris8 as well as ipv6
386
387 include group/group-head in match of filter rules
388
389 fix endian problem reading snoop files
390
391 make all licence comments point to the one place
392
393 fix ftp proxy to only advance state if a reply is received in response to
394 a recognised command
395
396 3.4.18  05/06/2001 - Released
397
398 fix up parsing of "from ! host" where '!' is separate
399
400 disable hardware checksums for NetBSD
401
402 put ipftest temporary files in . rather than /tmp
403
404 modify ftp proxy to be more intelligent about moving between states
405 and recognise new authentication commands
406
407 allow state/nat table sizes to be externally influenced
408
409 print out host mapping table for NAT with ipnat -l
410
411 fix handling of hardware checksum'ing on Solaris
412
413 fixup makefiles for Solaris
414
415 update regression tests
416
417 fix surrender of SPL's for failure cases
418
419 include patches for OpenBSD's new timeout mechanism
420
421 default ipl_unreach to ICMP_UNREACH_FILTER_PROHIB if defined, else make it
422 ICMP_UNREACH_FILTER
423
424 fix up handling of packets matching auth rules and interaction with state
425
426 add -q command line option to ipfstat on Solaris to list bound interfaces
427
428 add command line option to ipfstat/ipnat to select different core image
429
430 don't use ncurses on Solaris for STATETOP
431
432 fix includes to get FreeBSD version
433
434 do not byte swap ip_id
435
436 fix handling success for packets matching the auth rule
437
438 don't double-count short packets
439
440 add ICMP router discovery message size recognition
441
442 fix packet length calculation for IPv6
443
444 set CPUDIR when for install-sunos5 make target
445
446 SUNWspro -xF causes Solaris 2.5.1 kernel to crash
447
448 3.4.17  06/04/2001 - Released
449
450 fix fragment#0 handling bug where they could get in via cache information
451 created by state table entries
452
453 use ire_walk to look for ire cache entries with link layer headers cached 
454
455 deal with bad SPL assumptions for log reading on BSD
456
457 fix ftp proxy to allow logins with passwords
458
459 some auth rule patches, fixing byte endian problems and returning as an error
460
461 support LOG_SECURITY, where available, in ipmon
462
463 don't return an error for packets which match auth rules
464
465 introduce fr_icmpacktimeout to timeout entries once an ICMP reply has
466 been seen separately to when created
467
468 3.4.16  15/01/2001 - Released
469
470 fix race condition in flushing of state entries that are timing out
471
472 Add TCP ECN patches
473
474 log all NAT entries created, not just those via rules
475
476 3.4.15  17/12/2000 - Released
477
478 add minimum ttl filtering (to be replaced later by return-icmp-as-dest
479 for all ICMP packets matching state entries).
480
481 fix NAT'ing of fragments
482
483 fix sanity checks for ICMPV6
484
485 fix up compiling on IRIX 6.2 with IDF/IDL installed
486
487 3.4.14  02/11/2000 - Released
488
489 cause flushing NAT table to generate log records the same as state flush
490 does.
491
492 fix ftp proxy port/pasv
493
494 fix problem where nat_{in,out}lookup() would release a write lock when it
495 didn't need to.
496
497 add check for ipf6.conf in Solaris ipfboot
498
499 3.4.13  28/10/2000 - Released
500
501 fix introduced bug with ICMP packets being rejected when valid
502
503 fix bug with proxy's that don't set fin_dlen correctly when calling
504 fr_addstate()
505
506 3.4.12  26/10/2000 - Released
507
508 fix installing into FreeBSD-4.1
509
510 fix FTP proxy bug where it'd hang and make NAT slightly more efficient
511
512 fix general compiling errors/warnings on various platforms
513
514 don't access ICMP data fields that aren't there
515
516 3.4.11  09/10/2000 - Released
517
518 return NULL for IPv6 access control lists if it is disabled rather than
519 random garbage.
520
521 fix for getting protocol & packet length for IPv6 packets for pullup.
522
523 update plog script from version 0.8 to version 0.10
524
525 patch from Frank Volf adding fix_datacksum() to NAT code, enhancing the
526 capabilities for "fixing" checksums.
527
528 3.4.10  03/09/2000 - Released
529
530 merge patch from Frank Volf for ICMP nat handling of TCP/UDP data `errors'
531
532 getline() adjusts linenum now
533
534 add tcphalfclosed timeout
535
536 fill in icmp_nextmtu field if it is defined on the platform
537
538 RST generation fix from guido
539
540 force 32bit compile for gcc on solaris if it can't generate 64bit code
541
542 encase logging when fr_chksrc == 2 in #ifdef IPFILTER_LOG
543
544 fix up line wrap problems in plog script
545
546 fix ICMP packet handling to not drop valid ICMP errors
547
548 freebsd 5.0 compat changes
549
550 3.4.9   08/08/2000 - Released
551
552 implement new aging mechanism in fr_tcp_age()
553
554 fix icmp state checking bug
555
556 revamp buildsunos script and build both sparcv7/sparcv9 for Solaris
557 if on an Ultra with a 64bit system & compiler (Caseper Dik)
558
559 open ipfilter device read only if we know we can
560
561 print out better information for ICMP packets in ipmon
562
563 move checking for source spoofed packets to a point where we can generate
564 logs of them
565
566 return EFAULT from ircopyptr/iwcopyptr
567
568 don't do ioctl(SIOCGETFS) for auth stats
569
570 fix up freeing mbufs for post-4.3BSD
571
572 fix returning of inc from ftp proxy
573
574 fix bugs with ipfs -R/-W (Caseper Dik)
575
576 3.4.8   19/07/2000 - Released
577
578 create fake opt_inet6.h for FreeBSD-4 compile as LKM
579
580 add #ifdef's for KLD_MODULE sanity
581
582 NAT fastroute'd packets which come out of return-*
583
584 fix upper/lower case crap in ftp proxy and get seq# checking fixed up.
585
586 3.4.7   08/07/2000 - Released
587
588 make "ipf -y" lookup NAT if's which are unknown
589
590 prepend line numbers to ioctl error messages in ipf/ipnat
591
592 don't apply patches to FreeBSD twice
593
594 allow for ip_len to be on an unaligned boundary early on in fr_precheck
595
596 fix printing of icmp code when it is 0
597
598 correct printing of port numbers in map rules with from/to
599
600 don't allow fr_func to be called at securelevel > 0 or rules to be added
601 if securelevel > 0 if they have a non-zero fr_func.
602
603 3.4.6   11/06/2000 - Released
604
605 add extra regression tests for new nat functionality
606
607 place restrictions on using '!' in map/rdr rules
608
609 fix up solaris compile problems
610
611 3.4.5   10/06/2000 - Released
612
613 mention -sl in ipfstat.8
614
615 fix/support '!' in from/to rules (rdr) for NAT
616
617 add from/to support to rdr NAT rules
618
619 don't send ICMP errors in response to ICMP errors
620
621 fix sunos5 compilation for "ipfstat-top" and cleanup ipfboot
622
623 input accounting list used for both outbound and inbound packets
624
625 3.4.4   23/05/2000 - Released
626
627 don't add TCP state if it is an RST packet and (attempt) to send out
628 RST/ICMP packets in a manner that bypasses IP Filter.
629
630 add patch to work with 4.0_STABLE delayed checksums
631
632 3.4.3   20/05/2000 - Released
633
634 fix ipmon -F
635
636 don't truncate IPv6 packets on Solaris
637
638 fix keep state for ICMP ECHO
639
640 add some NAT stats and use def_nat_age rather than DEF_NAT_AGE
641
642 don't make ftp proxy drop packets
643
644 use MCLISREFERENCED() in tandem with M_EXT to check if IP fields need to be
645 swapped back.
646
647 fix up RST generation for non-Solaris
648
649 get "short" flag right for IPv6
650
651 3.4.2 - 10/5/2000 - Released
652
653 Fix bug in dealing with "hlen == 1 and opt > 1" - Itojun
654
655 ignore previous NAT mappings for 0/0 and 0/32 rules
656
657 bring in a completely new ftp proxy
658
659 allow NAT to cause packets to be dropped.
660
661 add NetBSD callout support for 1.4-current
662
663 3.4.1 - 30/4/2000 - Released
664
665 add ratoui() and fix parsing of group numbers to allow 0 - UINT_MAX
666
667 don't include opt_inet6.h for FreeBSD if KLD_MODULE is defined
668
669 Solaris must use copyin() for all types of ioctl() args
670
671 fix up screen/tty when leaving "top mode" of ipfstat
672
673 linked list for maptable not setup correctly in nat_hostmap()
674
675 check for maptable rather than nat_table[1] to see if malloc for maptable
676 succeeded in nat_init
677
678 fix handling of map NAT rules with "from/to" host specs
679
680 fix printout out of source address when using "from/to" with map rules
681
682 convert ip_len back to network byte order, not plen, for solaris as ip_len
683 may have been changed by NAT and plen won't reflect this
684
685 3.4 - 27/4/2000 - Released
686
687 source address spoofing can be turned on (fr_chksrc) without using
688 filter rules
689
690 group numbers are now 32bits in size, up from 16bits
691
692 IPv6 filtering available
693
694 add frank volf's state-top patches
695
696 add load splitting and round-robin attribute to redirect rules
697
698 FreeBSD-4.0 support (including KLD)
699
700 add top-style operation mode for ipfstat (-t)
701
702 add save/restore of IP Filter state/NAT information (ipfs)
703
704 further ftp proxy security checks
705
706 support for adding and removing proxies at runtime
707
708 3.3.13  26/04/2000 - Released
709
710 Fix parsing of "range" with "portmap"
711
712 Relax checking of ftp replies, slightly.
713
714 Fix NAT timeouts for ICMP packets
715
716 SunOS4 patches for ICMP redirects from Jurgen Keil (jk@tools.de)
717
718 3.3.12  16/03/2000 - Released
719
720 tighten up ftp proxy behaviour.  sigh.  yuck.  hate.
721
722 fix bug in range check for NAT where the last IP# was not used.
723
724 fix problem with icmp codes > 127 in filter rules caused bad things to
725 happen and in particular, where #18 caused the rule to be printed
726 erroneously.
727
728 fix bug with the spl level not being reset when returning EIO from
729 iplioctl due to ipfilter not being initialized yet.
730
731 3.3.11  04/03/2000 - Released
732
733 make "or-block" work with lines that start with "log"
734
735 fix up parsing and printing of rules with syslog levels in them
736
737 fix from Cy Schubert for calling of apr_fini only if non-null
738
739
740 3.3.10  24/02/2000 - Released
741
742 * fix back from guido for state tracking interfaces
743
744 * update for NetBSD pfil interface changes
745
746 * if attaching fails and we can abort, then cleanup when doing so.
747
748 julian@computer.org:
749 * solaris.c (fr_precheck): After calling freemsg on mt, set it point to *mp.
750 * ipf.c (packetlogon): use flag to store the return value from get_flags.
751 * ipmon.c (init_tabs): General cleanup so we do not have to cast
752   an int s->s_port to u_int port and try to check if the u_int port
753   is less than zero.
754
755 3.3.9   15/02/2000 - Released
756
757 fix scheduling of bad locking in fr_addstate() used when we attach onto
758 a filter rule.
759
760 fix up ip_statesync() with storing interface names in ipstate_t
761
762 fix fr_running for LKM's - Eugene Polovnikov
763
764 junk using pullupmsg() for solaris - it's next to useless for what we
765 need to do here anyway - and implement what we require.
766
767 don't call fr_delstate() in fr_checkstate(), when compiled for a user
768 program, early but when we're finished with it (got fr & pass)
769
770 ipnat(5) fix from Guido
771
772 on solaris2, copy message and use that with filter if there is another
773 copy if it being used (db_ref > 1).  bad for performance, but better
774 than causing a crash.
775
776 patch for solaris8-fcs compile from Casper Dik
777
778 3.3.8   01/02/2000 - Released
779
780 fix state handling of SYN packets.
781
782 add parsing recognition of extra icmp types/codes and fix handling of
783 icmp time stamps and mask requests - Frank volf
784
785 3.3.7   25/01/2000 - Released
786
787 sync on state information as well as NAT information when required
788
789 record nat protocol in all nat log records
790
791 don't reuse the IP# from an active NAT session if the IP# in the rule
792 has changed dynamically.
793
794 lookup the protocol for NAT log information in ipmon and pass that to
795 portname.
796
797 fix the bug with changing the outbound interface of a packet where it
798 would lead to a panic.
799
800 use fr_running instead of ipl_inited. (sysctl name change on freebsd)
801
802 return EIO if someone attempts an ioctl on state/nat if ipfilter is not
803 enabled.
804
805 fix rule insertion bug
806
807 make state flushing clean anything that's not fully established (4/4)
808
809 call fr_state_flush() after we've released ipf_state so we don't generate
810 a recursive mutex acquisition panic
811
812 fix parsing of icmp code after return-icmp/return-icmp-as-dest and add
813 some patches to enhance parsing strength
814
815 3.3.6   28/12/1999 - Released
816
817 add in missing rwlock release in fr_checkicmpmatchingstate() and fix check
818 for ICMP_ECHO to only be for packet, not state entry which we don't have yet.
819
820 handle SIOCIPFFB in nat_ioctl() and fr_state_ioctl()
821
822 fix size of friostat for SunOS4
823
824 fix bug in running off the end of a buffer in real audio proxy
825
826 3.3.5   11/12/1999 - Released
827
828 fix parsing of "log level" and printing it back out too
829
830 <net/if_types.h> is only present on Solaris2.6/7/8
831
832 use send_icmp_err rather than icmp_error to send back a frag-needed error
833 when doing PMTU
834
835 do not use -b with add_drv on Solaris unless $BASEDIR is set.
836
837 fix problem where source address in icmp replies is reversed
838
839 fix yet another problem with real audio.
840
841 3.3.4   4/12/1999 - Released
842
843 fix up the real audio proxy to properly setup state information and NAT
844 entries, thanks to Laine Stump for testing/advice/fixes.
845
846 fix ipfr_fastroute to set dst->sin_addr (Sean Farley - appears to prevent
847 FreeBSD 3.3 from panic'ing) as this had been removed in prior hacks to this
848 routine.
849
850 fix kinstall for BSDI
851
852 support ICMP errors being allowed through for ICMP packets going out with
853 keep state enabled
854
855 support hardware checksumming (gigabit ethernet cards) on Solaris thanks to
856 Tel.Net Media for providing hardware for testing.
857
858 patched from Frank Volf for ipmon (ICMP & fragmented packets) and allowing
859 ICMP responses to ICMP packets in the keep state table.
860
861 add in patches for hardware checksumming under solaris
862
863 Solaris install scripts now use $BASEDIR as appropriate.
864
865 add Solaris8 support
866
867 fix "ipf -y" on solaris so that it rescans rules also for changes in
868 interface pointers
869
870 let ipmon become a daemon with -D if it is using syslog
871
872 fix parsing of return-icmp-as-dest(foo)
873
874 add reference to ipfstat -g to ipfstat.8
875
876 ipf_mutex needs to be declared for irix in ip_fil.c
877
878 3.3.3   22/10/1999 - Released
879
880 add -g command line option to ipfstat to show groups still define.
881
882 fix problem with fragment table not recording rule pointer when called
883 from state functions (fin_fr not set).
884
885 fixup fastroute problems with keep state rules.
886
887 load rules into inactive set first, so we don't disable things like NIS
888 lookups half way through processing - found by Kevin Littlejohn
889
890 fix handling of unaligned ip pointer for solaris
891
892 patch for fr_newauth from Rudi Sluijtman
893
894 fixed htons() bug in fr_tcpsum() where ip_p wasn't cast to u_short
895
896 3.3.2   23/09/1999 - Released
897
898 patches from Scott Presnell to fix rcmd proxy
899
900 patches from Greg to fix Solaris detachment of interfaces
901
902 add openbsd compatibility fixes
903
904 fix free'ing already freed memory in ipfr_slowtimer()
905
906 fix for deferencing invalid memory in cleaning up after a device disappears
907
908 3.3.1   14/8/1999 - Released
909
910 remove include file sys/user.h for irix
911
912 prevent people from running buildsunos directly
913
914 fix up some problems with the saving of rule pointers so that NAT saves
915 that information in case it should need to call fr_addstate() from a proxy.
916
917 fix up scanning for the end of FTP messages
918
919 don't remove /etc/opt/ipf in postremove
920
921 attempt to prevent people running buildsolaris script without doing a
922 "make solaris"
923
924 fix timeout losing on freebsd3
925
926 3.3     7/8/1999 - Released
927
928 NAT: information (rules, mappings) are stored in hash tables; setup some
929 basic NAT regression testing.
930
931 display version name of installed kernel code when initializing.
932
933 add -V command line option to ipf, showing version (program and kernel
934 module) as well as the run-status of the kernel code.
935
936 fix problem with "log" rules actually affecting result of filtering.
937
938 automatically use SUNWspro if available and on a 64bit Solaris system for
939 compiling.
940
941 add kernel proxies for rcmd(3) and RealAudio (PNA)
942
943 use timeout/untimeout on SunOS4/BSD platforms too rather than hijacking
944 ip_slowtimo
945
946 fix IP headers generated through parsing of text information
947
948 fix NAT rules to be in the correct order again.
949
950 make keep-state work with to/fastroute keywords and enforce usage of those
951 interfaces.
952
953 update keep-state code with new algorithm from Guido
954
955 add FreeBSD-3 support
956
957 add return-icmp-as-dest option to retrun an ICMP packet using the original
958 destination as the source rather than a local IP address
959
960 add "level [facility.]<priority>" option to filter language
961
962 add changes from Guido to state code.
963
964 add code to return EPERM if the device is opened for writing and we're
965 in securelevel 2 or greater.
966
967 authentication code patches from Guido
968
969 fix real audio proxy
970
971 fix ipmon rule printing of interfaces and add IN/OUT to the end of ipmon
972 log output.
973
974 fix bimap rules with hash tables
975
976 update addresses used in NAT mappings for 0/32 rules for any protocol but TCP
977 if it changes on the interface - check every ip_natexpire()
978
979 add redirect regression test
980
981 count buckets used in the state hash table.
982
983 fix sending of RST's with return-rst to use the ack number provided in
984 the packet being replied to in addition to the sequence number.
985
986 fix to compile as a 64bit application on solaris7-64bit
987
988 add NAT IP mapping to ranges of IP addresses that aren't CIDR specified
989
990 fix calculation of in_space parameter for NAT
991
992 fix `wrapping' when incrementing the next ip address for use in NAT
993
994 fix free'ing of kernel memory in ip_natunload on solaris
995
996 fix -l/-U command line options from interfering with each other
997
998 fix fastroute under solaris2 and cleanup compilation for solaris7
999
1000 add install scripts and compile cleanly on BSD/OS 4.0
1001
1002 safely open files in /tmp for writing device output when testing.
1003
1004 fix uninitialized pointer bug in NAT
1005
1006 fix SIOCZRLST (zero list rule stats) bug with groups
1007
1008 change some usage of u_short to u_int in function calling
1009
1010 fix compilation for Solaris7 (SUNWspro)
1011
1012 change solaris makefiles to build for either sparc or i386 rather than
1013 per-cpu (sun4u, etc).
1014
1015 fixed bug in ipllog
1016
1017 add patches from George Michaelson for FreeBSD 3.0
1018
1019 add patch from Guido to provide ICMP checking for known state in the same
1020 manner as is done for NAT.
1021
1022 enable FTP PASV proxying and enable wildcarding in NAT/state code for ports
1023 for better PORT/PASV support with FTP.
1024
1025 bring into main tree static nat features: map-block and "auto" portmapping.
1026
1027 add in source host filtering for redirects (alan jones)
1028
1029 3.2.10          22/11/98 - Released
1030
1031 3.2.10beta9     17/11/98 - Released
1032
1033 fix fr_tcpsum problems in handling mbufs with an odd number of bytes
1034 and/or split across an mbuf boundary
1035
1036 fix NAT list entry comparisons and allow multiple entries for the same
1037 proxy (but on different ports).
1038
1039 don't create duplicate NAT entries for repeated PORT commands.
1040
1041 3.2.10beta8     14/11/98 - Released
1042
1043 always exit an rwlock before expecting to enter it again on solaris
1044
1045 fix loop in nat_new for pre-existing nat
1046
1047 don't setup state for an ftp connection if creating nat fails.
1048
1049 3.2.10beta7     05/11/98 - Released
1050
1051 set fake window in ipft_tx.c to ensure code passes tests.
1052
1053 cleaned up/enhanced ipnat -l/ipnat -lv output
1054
1055 fixed NAT handling of non-TCP/UDP packets, esp. for ICMP errors returned.
1056
1057 Solaris recusive mutex on icmp-error/tcp-reset - requires rwlock's rather
1058 than mutexes.
1059
1060 3.2.10beta6     03/11/98 - Released
1061
1062 fix mixed use of krwlock_t and kmutex_t on Solaris2
1063
1064 fix FTP proxy back up, splitting pasv code out of port code.
1065
1066 3.2.10beta5     02/11/98 - Released
1067
1068 fixed port translation in ICMP reply handling
1069
1070 3.2.10beta4     01/11/98 - Released
1071
1072 increase useful statistic collection on solaris
1073
1074 filter DL_UNITDATA_REQ as well as DL_UNITDATA_IND on solaris
1075
1076 disable PASV reply translation for now
1077
1078 fail with an error if we try to load a NAT rule with a non-existant
1079    proxy name - Guido
1080
1081 fix portmap usage with 0/0 and 0/32 map rules
1082
1083 remove ap_unload/ap_expire - automatically done when NAT is cleaned up
1084
1085 print "STATE:CLOSED" from ipmon if the connection progresses past established
1086    rather than "STATE:EXPIRED"
1087
1088 3.2.10beta3     26/10/98 - Released
1089
1090 fixed traceroute/nat problem
1091
1092 rewrote nat/proxy interface
1093
1094 ipnat now lists associated proxy sessions for each NAT where applicable
1095
1096 3.2.10beta2     13/10/98 - Released
1097
1098 use KRWLOCK_T in place of krwlock_t for solaris as well as irix
1099
1100 disable use of read-write lock acquisition by default
1101
1102 add in mb_t for linux, non-kernel
1103
1104 some changes to progress compilation on linux with glibc
1105
1106 change PASV as well as PORT when passed through kernel ftp proxy.
1107
1108 don't allow window to become 0 in tcp state code
1109
1110 make ipmon compile cleaner
1111
1112 irix patches
1113
1114 3.2.10beta      11/09/98 - Released
1115
1116 stop fr_tcpsum() thinking it has run out of data when it hasn't.
1117
1118 stop solaris panics due to fin_dp being something wild.
1119
1120 revisit usage of ATOMIC_*()
1121
1122 log closing state of TCP connection in "keep state"
1123
1124 fix fake-arp table code for ipsend.
1125
1126 ipmon now writes pid to a file.
1127
1128 fix "ipmon -a" to actually activate all logging devices.
1129
1130 add patches for BSDOS4.
1131
1132 perl scripts for log analysis donated.
1133
1134 3.2.9   22/06/98 - Released
1135
1136 fix byte order for ICMP packets generated on Solaris
1137
1138 fix some locking problems.
1139
1140 fix malloc bug in NAT (introduced in 3.2.8).
1141
1142 patch from guido for state connections that get fragmented
1143
1144 3.2.8   08/06/98 - Released
1145
1146 use readers/writers locks in Solaris2 in place of some mutexes.
1147
1148 Solaris2 installation enhancements - Martin Forssen (maf@carlstedt.se)
1149
1150 3.2.7   24/05/98 - Released
1151
1152 u_long -> u_32_t conversions
1153
1154 patches from Bernd Ernesti for NetBSD
1155
1156 fixup ipmon to actually handle HUP's.
1157
1158 Linux fixes from Michael H. Warfield (mhw@wittsend.com)
1159
1160 update for keep state patch (not security related) - Guido
1161
1162 dumphex() uses stdout rather than log
1163
1164 3.2.6   18/05/98 - Released
1165
1166 fix potential security loop hole in keep state code.
1167
1168 update examples.
1169
1170 3.2.5   09/05/98 - Released
1171
1172 BSD/OS 3.1 .o files added for the kernel.
1173
1174 fix sequence # skew vs window size check.
1175
1176 fix minimum ICMP header size check.
1177
1178 remove references to Cybersource.
1179
1180 fix my email address.
1181
1182 remove ntohl in ipnat - Thomas Tornblom
1183
1184 3.2.4   09/04/98 - Released
1185
1186 add script to make devices for /dev on BSD boxes
1187
1188 fixup building into the kernel for FreeBSD 2.2.5
1189
1190 add -D command line option to ipmon to make it a daemon and SIGHUP causes
1191 it to close and reopen the logfile
1192
1193 fixup make clean and make package for SunOS5 - Marc Boucher
1194
1195 postinstall keeps adding "minor=ipf ipl" - George Ross <gdmr@dcs.ed.ac.uk>
1196
1197 protected by IP Filter gif - Sergey Solyanik <solik@atom.ru>
1198
1199 3.2.3   10/11/97 - Released
1200
1201 fix some iplang bugs
1202
1203 fix tcp checksum data overrun, sgi #define changes,
1204 avoid infinite loop when nat'ing to single IP# - Marc Boucher
1205
1206 fixup DEVFS usage for FreeBSD
1207
1208 fix sunos5 "make clean" cleaning up too much
1209
1210 3.2.2   28/11/97 - Released
1211
1212 change packet matching to return actual error, if bad packet, to facilitate
1213 ECONNRESET for TCP.
1214
1215 allow ip:netmask in grammar too now - Guido
1216
1217 assume IRIX has u_int32_t in sys/types.h (needed for R10000)
1218
1219 rewrite parts of command line options for ipmon
1220
1221 fix TCP urgent packet & offset testing and add LAND attack test for iptest
1222
1223 fix grammar error in yacc grammar for iplang
1224
1225 redirect (rdr) destination port bytes-wapped when it shouldn't be.
1226
1227 general: fr_check now returns error code, such as EHOSTUNREACH or
1228 ECONNRESET (attempt to make ECONNRESET work for locally outbound
1229 packets).
1230
1231 linux: enable return-rst, need to filter tcp retransmits which are sent
1232        separately from normal packets
1233
1234 memory leak plugged in ip_proxy.c
1235
1236 BSDI compatibility patches from Guido
1237
1238 tcp checksum fix - Marc Boucher
1239
1240 recursive mutex and ioctl param fix - Marc Boucher
1241
1242 3.2.1   12/11/97 - Released
1243
1244 port to BSD/OS 3.0
1245
1246 port to Linux 2.0.31
1247
1248 patches to make "map a/m -> 0/0" work with ftp proxying properly - Marc Boucher
1249
1250 add "ipf -F s" and "ipf -F S" to flush state table entries.
1251
1252 announce if logging is on or off when ip filter initializes.
1253
1254 "ipf -F a" doesn't flush groups properly for Solaris.
1255
1256 3.2             30/10/97 - Released
1257
1258 ipnat doesn't successfully remove proxy mappings with "-rf" -
1259 Alexander Romanyu
1260
1261 use K&R C function style for solaris kernel code
1262
1263 use m_adj() to decrease packet size in ftp proxy
1264
1265 use mbufchainlen rather than msgdsize,
1266 IRIX update - Marc Boucher
1267
1268 fix NetBSD modunload bug (pfil_add_hook done twice)
1269
1270 patches for OpenBSD 2.1 - Craig Bevins <craigb@bitcom.net.au>
1271
1272 3.2beta10       24/10/97 - Released
1273
1274 fix fragment table entries allocated for NAT.
1275
1276 fix tcp checksum calculations over mbuf/mblk boundaries
1277
1278 fix panic for blen < 0 in ftp kernel proxy - marc boucher
1279
1280 fix flushing of rules which have been grouped.
1281
1282 3.2beta9        20/10/97 - Released
1283
1284 some nit picking on solaris2 with SUNWspro - Michael Lyle <mrl@rpnet.net>
1285
1286 ftp kernel proxy patches from Marc Boucher
1287
1288 3.2beta8        13/10/97 - Released
1289
1290 add support for passing ICMP errors back through NAT.
1291
1292 IRIX port update - Marc Boucher
1293
1294 calculate correct MIN size of packet to log for UDP - Marc Boucher
1295
1296 need htons(ETHERTYPE_x) on little endian BSD boxes - Dave Huang
1297
1298 copyright header fixups
1299
1300 3.2beta7        23/09/97 - Released
1301
1302 fickup problems introduced by prior merges & changes.
1303
1304 3.2beta6        23/09/97 - Released
1305
1306 patch for spin-reading race condition - Marc Boucher.
1307
1308 IRIX port by Marc Boucher.
1309
1310 compatibility updates for Linux to ipsend
1311
1312 3.2beta5        13/09/97 - Released
1313
1314 patches from Bernd Ernesti for NetBSD integration (mostly prototyping and
1315 compiler warning things)
1316
1317 ipf -y will resync IP#'s allocated with 0/32 in NAT to match interface if it
1318 changes.
1319
1320 update manual pages and other documentation updates.
1321
1322 3.2beta4        27/8/97 - Released
1323
1324 enable setting IP and TCP options for iplang/
1325
1326 Solaris2 patches from Marc Boucher.
1327
1328 add groups for filter rules.
1329
1330 3.2beta3        21/8/97 - Released
1331
1332 patches for Solaris2 (interface panic solution ?): fix FIONREAD and
1333 replacing q_qinfo points - Marc Boucher <marc@CAM.ORG>
1334
1335 change ipsend/* and ipsd/* copyright notices to be the same as ip filter's
1336
1337 patch for SYN-ACK skew testing fix from Eric V. Smith <EricSmith@windsor.com>
1338
1339 3.2beta2        6/8/97 - Released
1340
1341 make it load on Solaris 2.3
1342
1343 rewrote logging to remove solaris errors, introduced checking to see if the
1344 same packet is logged successively.
1345
1346 fix filter cache to work when there are no rules loaded.
1347
1348 add "raw" option to ipresend to send entire ethernet frames.
1349
1350 nat list corruption bug - NetBSD - Klaus Klein
1351
1352 3.2beta1        5/7/97 - Released
1353
1354 patches from Jason Thorpe fixing: UNSIGNED_CHAR lossage, off_t being 64bits
1355 lossage, and other NetBSD bits.
1356
1357 NetBSD 1.2G update.
1358
1359 fixup fwtk patches and add protocol field for SIOCGNATL.
1360
1361 rdr bugs reported by Alexander Romanyu (alexr@aix.krid.crimea.ua), with
1362 fixes:
1363 * rdr matched all packets of a given protocol (ignored ports).
1364 * severe bug in nat_delete which caused system crash/freeze.
1365
1366 change Makefile so that CC isn't passed on for FreeBSD/NetBSD (will use
1367 the default CC - cc, not gcc)
1368
1369 3.2alpha9       16/6/97 - Released
1370
1371 added "skip" keyword.
1372
1373 implement preauthentication of packets, as outlined by Guido.
1374
1375 Make it compile as cleanly as possible with -Wall & general code cleanup
1376
1377 getopt returns int, not char. Bernd Ernesti
1378
1379 3.2alpha8       13/6/97 - Released
1380
1381 code added to support "auth" rules which require a user program to allow them
1382 through.  First revision and much of the code came from Guido.
1383
1384 hex output from ipmon doesn't goto syslog when recovering from out of sync
1385 error.  Luke Mewburn (lukem@connect.com.au)
1386
1387 fix solaris2.6 lookup of destination ire's.
1388
1389 ipnat doesn't throw away unused bits (after masking), causing it to
1390 behave incorrectly. Carson Gaspar
1391
1392 NAT code doesn't include inteface name when matching - Alexey Mavrin
1393 <lha@elco.spb.ru>
1394
1395 replace old SunOS tcpip.h with new tcpip.h (from 4.4BSD) - Jason Thorpe.
1396
1397 update install procedures to include ip_proxy.c
1398
1399 mask out unused bits in NAT/RDR rules.
1400
1401 use a generic type (u_32_t) for 32bit variables, rather than rely on
1402 u_long being such - Jason Thorpe.
1403
1404 create a local "netinet" directory and include from ~netinet/*" rather than
1405 just "*" to make keeping the code working on ports easier.
1406
1407 add an m_copydata and m_copyback for SunOS4 (based on 4.4BSD-Lite versions)
1408
1409 documentation updates.
1410
1411 NetBSD update from Jason Thorpe <thorpej@netbsd.org>
1412
1413 allow RST's through with a matching SEQ # and 0 ACK.  Guido Van Rooij
1414
1415 ipmon uses excessive amounts of CPU on Solaris2 - Reinhard Bertram
1416 <Reinhard.Bertram@KOM.th-darmstadt.de>
1417
1418 3.2alpha7       25/5/97 - Released
1419
1420 add strlen for pre-2.2 kernels - Doug Kite <dkite@websgi.icomnet.com>
1421
1422 setup bits and pieces for compiling into a FreeBSD-2.2 kernel.
1423
1424 split up "bsd" targets.  Now a separate netbsd/freebsd/bsd target.
1425 mln_ipl.c has been split up into itself and mlf_ipl.c (for freebsd).
1426
1427 fix (negative) host matching in filtering.
1428
1429 add sysctl interface for some variables when compiled into FreeBSD-2.2 kernels
1430 or later.
1431
1432 make all the candidates for kernel compiling include "netinet/..." and build
1433 a subdirectory "netinet" when compiling and symlink all .h files into this.
1434
1435 add install make target to Makefile.ipsend
1436
1437 3.2alpha6       8/5/97 - Released
1438
1439 Add "!" (not) to hostname/ip matching.
1440
1441 Automatically add packet info to the fragment cache if it is a fragment
1442 and we're translating addreses for.
1443
1444 Automatically add packet info to the fragment cache if it is a fragment
1445 and we're "keeping state" for the packet.
1446
1447 Solaris2 patches - Anthony Baxter (arb@connect.com.au)
1448
1449 change install procedure for FreeBSD 2.2 to allow building to a kernel
1450 which is different to the running kernel.
1451
1452 add FIONREAD for Solaris2!
1453
1454 when expiring NAT table entries, if we would set a time to fr_tcpclosed
1455 (which is 1), make it fr_tcplaskack(20) so that the state tables have a
1456 chance to clear up.
1457
1458 3.2alpha5
1459
1460 add proxying skeleton support and sample ftp transparent proxy code.
1461
1462 add printfs at startup to tell user what is happening.
1463
1464 add packets & bytes for EXPIRE NAT log records.
1465
1466 fix the "install-bsd" target in the root Makefile. Chris Williams
1467 <psion@mv.mv.com>
1468
1469 Fixes for FreeBSD 2.2 (and later revs) to prevent panics.  Julian Assange.
1470
1471 3.2alpha4       2/4/97 - Released
1472
1473 Some compiler warnings cleaned up.
1474
1475 FreeBSD-2.2 patches for LKM completed.
1476
1477 3.2alpha3       31/3/97 - Released
1478
1479 ipmon changes: -N for reading NAT logfile, -S for reading state logfile.
1480 -a for reading all.  -n now toggles hostname resolution.
1481
1482 Add logging of new state entries and expiration of old state entries.
1483 count log successes and failures.
1484
1485 Add logging of new NAT entries and expiration of old NAT entries.
1486 count log successes and failures.
1487
1488 Use u_quad_t for records of bytes & packets where kept
1489 (IP Accounting: fr_hits, fr_bytes; IP state: is_pkts, is_bytes).
1490
1491 Fixup use of CPU and DCPU in Makefiles.
1492
1493 Fix broken 0/32 NAT mapping. Carl Makin <cmakin@nla.gov.au>
1494
1495 3.2alpha2
1496
1497 Implement mapping to 0/32 as being an alias for automatically using the
1498 interface's first IP address.
1499
1500 Implement separate minor devices for both NAT and IP state code.
1501
1502 Fully prototype all functions.
1503
1504 Fix Makefile problem due to attempt to fix Sun compiling problems.
1505
1506 3.1.10          23/3/97 - Released
1507
1508 ipfstat -a requires a -i or -o command line option too.  Print an error
1509 when not present rather than attempt to do something.
1510
1511 patch updates for SunOS4 for kernel compiling.
1512 patch for ipmon -s (flush's syslog file which isn't good).  Andrew J. Schorr
1513 <schorr@ead.dsa.com>
1514
1515 too many people hit their heads hard when compiling code into the kernel
1516 that doesn't let any packets through. (fil.c - IPF_NOMATCH)
1517
1518 icmp-type parsing doesn't return any errors when it isn't constructed
1519 correctly.  Neil Readwin
1520
1521 Using "-conf" with modload on SunOS4 doesn't work.
1522 Timothy Demarest <demarest@arraycomm.com>
1523
1524 Need to define ARCH in makefile for SunOS4 building.  "make sunos4"
1525 in INSTALL.SunOS is incorrect. James R Grinter <jrg@blodwen.demon.co.uk>
1526 [all SunOS targets now run buildsunos]
1527
1528 NAT lookups are still incorrect, matching non-TCP/UDP with TCP/UDP
1529 information. ArkanoiD <ark@paranoid.convey.ru>
1530
1531 Need to check for __FreeBSD_version being 199511 rather than 199607
1532 in mln_ipl.c. Eric Feillant <Eric.Feillant@EUnet.fr>
1533
1534 3.1.9           8/3/97 - Released
1535
1536 fixed incorrect lookup of active NAT entries.
1537
1538 patch for ip_deq() wrong for pre 2.1.6 FreeBSD.
1539 fyeung@fyeung8.netific.com (Francis Yeung)
1540
1541 check for out with return-rst/return-icmp at wrong place - Erkki Ritoniemi
1542 (erkki@vlsi.fi)
1543
1544 text_readip returns the interface pointer pointing to text on stack -
1545 Neil Readwin
1546
1547 fix from Pradeep Krishnan for printout rules "with not opt sec".
1548
1549 3.1.8           18/2/97 - Released
1550
1551 Diffs for ip_output.c and ip_input.c updated to fix bug with fastroute and
1552 compiling warnings about reuse of m0.
1553
1554 prevent use of return-rst and return-icmp with rules blocking packets going
1555 out, preventing panics in certain situations.
1556
1557 loop forms in frag cache table - Yury Pshenychny <yura@rd.zgik.zaporizhzhe.ua>
1558
1559 should use SPLNET/SPLX around expire routines in NAT/frag/state code.
1560
1561 redeclared malloc in 44arp.c - 
1562
1563 3.1.7           8/2/97 - Released
1564
1565 Macros used for ntohs/htons supplied with gcc don't always work very well
1566 when the assignment is the same variable being converted.
1567
1568 Filter matching doesn't not match rule which checks tcp flags on packets
1569 which are fragments - David Wilson
1570
1571 3.1.7beta       30/1/97 - Released
1572
1573 Fix up NAT bugs introduced in last major change (now tested), including
1574 nat_delete(), nat_lookupredir(), checksum changes, etc.
1575
1576 3.1.7alpha      30/1/97 - Released
1577
1578 Many changes to NAT code, including contributions from Laurent Joncheray
1579 <lpj@ans.net>
1580
1581 Use "NO_SLEEP" when allocating memory under SunOS.
1582
1583 Make kernel printf's nicer for BSD/SunOS4
1584
1585 Always do a checksum for packets being filtered going out and being
1586 processed by fastroute.
1587
1588 Leave kernel to play with cdevsw on *BSD systems with LKM's.
1589
1590 ipnat.1 man page fixes.
1591
1592 3.1.6           21/1/97 - Released
1593
1594 Allow NAT to work on BSD systems in conjunction with "pass .. to ifname"
1595
1596 Memory leak introduced in 3.1.3 in NAT lists, clearing of NAT table tried
1597 to free memory twice.
1598
1599 NAT recalculates IP header checksum based on difference between IP#'s and
1600 port numbers - should be just IP#'s (Solaris2 only)
1601
1602 3.1.5           13/1/97 - Released
1603
1604 fixed setting of NAT timeouts and use different timeouts for concurrent
1605 TCP sessions using the same IP# mapping (when port mapping isn't used)
1606
1607 multiple loading/unloading of LKM's doesn't clean up cdevsw properly for
1608 *BSD systems.
1609
1610 3.1.4           10/1/97 - Released
1611
1612 add command line options -C and -F to ipnat to flush NAT list and table
1613
1614 ipnat -l loops on output - Neil Readwin (nreadwin@nysales.micrognosis.com)
1615
1616 NetBSD/FreeBSD kernel malloc changes - Daniel Carosone
1617
1618 3.1.3           10/1/97 - Released
1619
1620 NAT chains not constructed correctly in hash tables - Antony Y.R Lu
1621 (antony@hawk.ee.ncku.edu.tw)
1622
1623 Updated INSTALL.NetBSD, INSTALL.FreeBSD and INSTALL.Sol2
1624
1625 man page update (ipf.5) from Daniel Carosone (dan@geek.com.au)
1626
1627 ICMP header checksum update now included in NAT.
1628
1629 Solaris2 needs to modify IP header checksums in ip_natin and ip_natout.
1630
1631 3.1.2           4/12/96 - Released
1632
1633 ipmon doesn't use syslog all the time when given -s option
1634
1635 fixed mclput panic in ip_input.c and replace ntohs() with NTOHS() macro
1636
1637 check the results of hostname resolution in ipnat
1638
1639 "make *install" fixed for subdirectories.
1640
1641 problems with "ARCH:=" and gnu make resolved
1642
1643 parser reports an error for lines with whitespaces only rather than skipping
1644 them. D.Carosone@abm.com.au (Daniel Carosone)
1645
1646 patches for integration into NetBSD-current (post 1.2).
1647
1648 add an option to allow non-IP packets going up/down the stream on Solaris2
1649 to be dropped. John Bass.
1650
1651 3.1.2beta       21/11/96 - Released
1652
1653 make ipsend compile on Linux 2.0.24
1654
1655 changes to TCP kept state algorithm, making it watch state on TCP
1656 connections in both directions.  Also use the same algorithm for NAT TCP.
1657
1658 -Wall cleanup - Bernd Ernesti
1659
1660 added "or-block" for "pass .. log or-block" after a suggestion from
1661 David Oppenheim (davido@optimation.com.au)
1662
1663 added subdirectories for building IP Filter in SunOS5/BSD for different
1664 cpu architecures
1665
1666 Solaris2 fixes to logging and pre-filtering packet processing - 3.1.1p2
1667
1668 mbuf logging not using mtod(), remove iplbusy - 3.1.1p1         1/11/96
1669
1670 3.1.1           28/10/96 - Released
1671
1672 Installation script fixes and deinstall scripts for IP Filter on:
1673 SunOS4/FreeBSD/NetBSD
1674
1675 Man page fixes - Paul Dubois (dubois@primate.wisc.edu)
1676
1677 Fix use of SOLARIS macro in ipmon, rewrote ipllog() (again!)
1678
1679 parsing isn't completely case insensitive - David Wilson
1680 (davidw@optimation.com.au)
1681
1682 Release ipl_mutex across uiomove() calls
1683
1684 print entire rule entries out for "ipf -z" when zero'ing per-rule stats.
1685
1686 ipfstat returns same output for "hits" in "ipfstat -aio" - Terletsky Slavik
1687 (ts@polynet.lviv.ua)
1688
1689 New algorithm for setting timeouts for TCP connection (more closely follow
1690 TCP FSM) - Pradeep Krishnan (pkrishna@netcom.com)
1691
1692 Track both window sizes for TCP connections through "keep state".
1693
1694 Solaris2 doesn't like _KERNEL defined in stdargs.h - Jos van Wezel
1695 (wezel@bio.vu.nl)
1696
1697 3.1.1-beta2     6/10/96 - Released
1698
1699 Solaris2 fastroute/dup-to/to now works
1700
1701 ipmon `record' reading rewritten
1702
1703 Added post-NetBSD1.2 packet filter patches - Mathew Green (mrg@eterna.com.au)
1704
1705 Attempt to use in_proto.c.diff, not "..diffs" for SunOS4 - David Wilson
1706 (davidw@optimation.com.au)
1707
1708 Michael Ryan (mike@NetworX.ie) reports the following:
1709 * The Trumpet WinSock under Windows always sends its SYN packet with an ACK
1710   value of 1, unlike any other implementation I've seen, which would set it
1711   to zero.  The "keep state" feature of IP Filter doesn't work when receiving
1712   non-zero ACK values on new connection requests.
1713 * */Makefile install rule doesn't install all the binaries/man pages
1714 * Make ipnat use "tcp/udp" instead of "tcpudp"
1715 * Print out "tcp/udp" properly
1716 * ipnat "portmap tcp" matches "portmap udp" when adding/removing
1717 * NAT dest. ip# increased by one on mask of 0xffffffff when it shouldn't
1718
1719 3.1.1-beta      1/9/96 - Released
1720
1721 add better detection of TCP connections closing to TCP state monitoring.
1722
1723 fr_addstate() not called correctly for fragments.  "keep state" and
1724 "keep frag" code don't work together 100% - Songqing Cai
1725 (songqing_cai@sterling.com)
1726
1727 call to fr_addstate() incorrect for adding state in combination with keeping
1728 fragment information - Songqing Cai (songqing_cai@sterling.com)
1729
1730 KFREE() passed fp (incorrect) and not fr (correct) in ip_frag.c - John Hood
1731 (cgull@smoke.marlboro.vt.us)
1732
1733 make ipf parser recognise '\\' as a `continued line' marker - Dima Ruban
1734 (dima@best.net)
1735
1736 3.1.1-alpha     23/8/96 - Released
1737
1738 kernel panic's when ICMP packets go through NAT code
1739
1740 stats aren't zero'd properly with ipf -Z
1741
1742 ipnat doesn't show port numbers correctly all the time and also add the
1743 protocol (tcp/udp/tcpudp) to rdr output - Carson Gaspar (carson@lehman.com)
1744
1745 fast checksum fixing not 100% - backout patch - Bill Dorsey (dorsey@lila.com)
1746
1747 NetBSD-1.2 patches from - VaX#n8 <vax@linkdead.paranoia.com>
1748
1749 Usage() call error in fils.c - Ajay Shekhawat (ajay@cedar.buffalo.edu)
1750
1751 ip_optcopy() staticly defined in ip_output.c in SunOS4 - Nick Hall
1752 (nrh@tardis.ed.ac.uk)
1753
1754 3.1.0           7/7/96 - Released
1755
1756 Reformatted ipnat output to be compatible with it's input, so that
1757 "ipnat -l | ipnat -rf -" is possible.
1758
1759 3.1.0beta       30/6/96 - Released
1760
1761 NetBSD-1.2 patches from Greg Woods (woods@most.weird.com)
1762
1763 kernel module must not be installed stripped (Solaris2), as created by
1764 "make package" for Solaris2 - Peter Heimann
1765 (peter@i3.informatik.rwth-aachen.de)
1766
1767 3.1.0alpha      5/6/96 - Released
1768
1769 include examples in package for solaris2
1770
1771 patches for removing an extra ip header checksum (FreeBSD/NetBSD/SunOS)
1772
1773 removed trailing space from printouts of rules in ipf.
1774
1775 ipresend supports the same range of inputs that ipftest does.
1776
1777 sending a duplicate copy of a packet to another network devices is now
1778 supported. ("dup-to")
1779
1780 sending a packet to an arbitary interface is now supported, irrespective
1781 of its actual route, with no ttl decrement.  Can also be routed without
1782 the ttl being decremented. ("to" and "fastroute").
1783
1784 "call" option added to support calling a generic function if a packet is
1785 matched.
1786
1787 show all (upto 4) recorded bytes from the interface name in logging from
1788 ipmon.
1789
1790 support for using unix file permissions for read/write access on the device
1791 is now in place.
1792
1793 recursive mutex in nat_new() for Solaris 2.x - Per L. Hagen <per@stibo.dk>
1794
1795 ipftest doesn't call initparse() for THISHOST - Catherine Allen
1796 (cla@connect.com.au)
1797
1798 Man page corrections from Rex Bona (rex@pengo.comsmiths.com.au)
1799
1800 3.0.4           10/4/96 - Released
1801
1802 looop in `parsing' IP packets with optlen 0 for ip options.
1803
1804 rule number not initialized and resulted in unexpected results for state
1805 maching.
1806
1807 option parsing and printing bugs - Pradeep Krishnan
1808
1809 3.0.4beta       25/3/96 - Released
1810
1811 wouldn't parse "keep flags keep state" correctly.
1812
1813 SunOS4.1.x ip_input.c doesn't recognise all 1s broadcast address - Nigel Verdon
1814
1815 patches for BSDI's BSD/OS 2.1 and libpcap reader on little endian systems
1816 from Thorsten Lockert <tholo@tetherless.com>
1817
1818 b* functions in fil.c on Solaris 2.4
1819
1820 3.0.3   17/3/96 - Released
1821
1822 added patches to support IP Filter initialisation when compiled into the
1823 kernel.
1824
1825 added -x option to ipmon to display hex dumps of logged packets.
1826
1827 added -H option to ipftest to allow ascii-hex formatted input to specify
1828 arbitary IP packets.
1829
1830 Sending TCP RSTs as a response now work for Solaris2 x86
1831
1832 add patches to make IP Filter compile into NetBSD kernels properly.
1833
1834 patch to stop SunOS 4.1.x kernels panicing with "data traps".
1835
1836 ipfboot script unloads and reloads ipf module on Solaris2 if it is already
1837 loaded into the kernel.
1838
1839 Installation of IP Filter as a Solaris2 package is now supported.
1840
1841 Man pages for ipnat.4, ipnat.5 added.
1842
1843 added some more regression tests and fixed up IP Filter to pass the new tests
1844 (previous versions failed some of the tests in set 12).
1845
1846 IP option filter processing has changed so that saying "with opt lsrr" will
1847 check only for that one, but not mask out other options, so a packet with
1848 strict source routing, along with loose source routing will match all of
1849 "with opt lsrr", "with opt ssrr" and "with opt lsrr,ssrr".
1850
1851 IPL_NAME needed in ipnat.c - Kelly (kelly@count04.mry.scruznet.com)
1852
1853 patches for clean NetBSD compilation from Bernd Ernesti (bernd@arresum.inka.de)
1854
1855 make install is incorrect - Julian Briggs (julian@lightwork.co.uk)
1856
1857 strtol() returns 0x7fffffff for all negative numbers,
1858 printfr() generates incorrect output for "opt sec-class *",
1859 handling of "not opt xxx opt yyy" incorrect.
1860 - Minh Tonthat (minht@sbei.com)/Pradeep Krishnan (pradeepk@sbei.com)
1861
1862 m_pullup() called only for input and not output; caused problems
1863 with filtering icmp - Nigel Verdon (verdenn@gb.swissbank.com)
1864
1865 parsing problem for "port 1" and NetBSD patches incorrect -
1866 Andreas Gustafsson (gson@guava.araneus.fi)
1867
1868 3.0.2   4/2/96 - Released
1869
1870 Corrected bug where NAT recalculates checksums for fragments.
1871
1872 make NAT recalculate UDP checksums (rather than setting them to 0),
1873 if they're non-zero.
1874
1875 DNS patches - Real Page (Real.Page@Matrox.com)
1876
1877 alteration of checksum recalculations in NAT code and addition of
1878 redirection with NAT - Mike Neuman
1879
1880 core dump, if tcp/udp is used with a port number and not service name,
1881 in ipf - Mike Neuman (mcn@engarde.com)
1882
1883 initparse() call, missing to prime "<thishost>" hook - Craig Bishop
1884
1885 3.0.1   14/1/96 - Released
1886
1887 miscellaneous patches for Solaris2
1888
1889 3.0     14/1/96 - Released
1890
1891 Patch included for FDDI, from Richard Ohnemus
1892 (Richard_Ohnemus@dallas.csd.sterling.com)
1893
1894 Code cleanup for release.
1895
1896 3.0beta4 10/1/96
1897
1898 recursive mutex in ipfr_slowtimer fixed, reported by Craig Bishop
1899
1900 recursive mutex in sending TCP RSTs fixed, reported by Tony Becker
1901
1902 3.0beta3 9/1/96
1903
1904 FIxup for Solaris2.5 install and interface name bug in ipftest from
1905 Julian Briggs (julian@lightwork.co.uk)
1906
1907 Byte order patches for ipmon from Tony Becker (tony@mcrsys.com)
1908
1909 3.0beta2 7/1/96
1910
1911 Added the (somewhat warped) IP accounting as it exists in ipfw on FreeBSD.
1912 Note, this isn't really what one would call IP account, when compared to
1913 process accounting, sigh.
1914
1915 Split up ipresend into iptest/ipresend/ipsend
1916
1917 Added another m_pullup() inside fr_check() for BSD style kernels and
1918 added some checks to ipllog() to not log more than is present (for short
1919 packets).
1920
1921 Fixed bug where failed hostname/netname resolution goes undetecte and
1922 becomes 0.0.0.0 (any) (reported Guido van Rooij)
1923
1924 3.0beta 11/11/95        - Released
1925
1926 Rewrote the way rule testing is done, reducing the number of files needed and
1927 generated.
1928
1929 SIOCIPFFL was incorrectly affected by IPFILTER_LOG (Mathew Green)
1930
1931 Patches from Guido van Rooij to fix sending back TCP RSTs on Net-2/Net-3
1932 BSD based Unixes (panic'd)
1933
1934 Patches for FreeBSD/i86 ipmon from Riku Kalinen <riku@tequila.nixu.fi>
1935 (I think someone else already told me about these but they got lost :-/)
1936
1937 Changed Makefile structure to build object files for different operating
1938 systems in separate directories by default.
1939
1940 BSDI has ef0 for first ethernet interface
1941
1942 Allow for a "not" operator before optional keywords.
1943
1944 The "rule number" was being incorrectly incremented every time it went through
1945 the loop rather than when it matched a rule.
1946
1947 2.8.2   24/10/95        - Released
1948
1949 Fixed up problems with "textip" for doing lots of testing.
1950
1951 Fixed bug in detection of "short" tcp/ip packets (all reported as being short).
1952
1953 Solaris 2.4 port now works 100%.
1954
1955 Man page errors reported and fixed.
1956
1957 Removed duplicate entry in etc/services for login on port 49 (Craig Bishop).
1958
1959 Fixed ipmon output to put a space after the log-letter.
1960
1961 Patch from Guido van Rooij to fix parsing problem.
1962
1963 2.8.1   15/10/95        - Released
1964
1965 Added ttl and tos filtering.
1966
1967 Patches for fixing up compilation and port problems (little endian)
1968 from Guido van Rooij <guido@IAEhv.nl>.
1969
1970 Man page problems reported and fixed by Carson Gaspar <carson@lehman.com>.
1971
1972 ipsend doesn't compile properly on Solaris2.4
1973
1974 Lots of work done for Solaris2.4 to make it MT/MP safe and work.
1975
1976 2.8     15/9/95         - Released
1977
1978 ipmon can now send messages to syslogd (-s) and use names instead of
1979 numbers (-N).
1980
1981 IP packets are now "compiled" into a structure only containing filterable
1982 bits.
1983
1984 Added regression testing in the test/ subdirectory, using a new option
1985 (-b) with the ipftest program.
1986
1987 Added "nomatch" return to filter results.  These are counted and show
1988 up in reports from ipfstat.
1989
1990 Moved filter code out of ip_fil.c and into fil.c - there is now only one
1991 instance of it in the package.
1992
1993 Added Solaris 2.4 support.
1994
1995 Added IPSO basic security option filtering.
1996
1997 Added name support for filtering on all 19 named IP options.
1998
1999 Patches from Ivan Brawley to log packet contents as well as packet headers.
2000
2001 Update for sun/conf.c.diff from Ivan Brawley <ibrawley@awadi.com.AU>
2002
2003 Added patches for FreeBSD 1, and added two new switches (-E, -D) to ipf,
2004 along with a new ioctl, SIOCFRENB.
2005 From: Dieter Dworkin Muller <dworkin@village.org>
2006
2007 2.7.3   31/7.95         - Released
2008
2009 Didn't compile cleanly without IPFILTER_LOG defined (Mathew Green).
2010
2011 ipftest now deals with tcpdump3 binary output files (from libpcap) with -P.
2012
2013 Brought ipftest program upto date with actual filter code.
2014
2015 Filter would cause a match to occur when it wasn't meant to if the packet
2016 had short headers and was missing portions that should have been there.
2017 Err, it would rightly not match on them, but their absence caused a match
2018 when it shouldn't have been.
2019
2020 2.7.2   26/7/95         - Released
2021
2022 Problem with filtering just SYN flagged packets reported by
2023 Dieter Dworkin Muller <dworkin@village.org>.  To solve this
2024 problem, added support for masking TCP flags for comparison "flags X/Y".
2025
2026 2.7.1   9/7/95          - Released
2027
2028 Added ip_dirbroadcast support for Sun ip_input.c
2029
2030 Fixed up the install scripts for FreeBSD/NetBSD to recognise where they are
2031 better.
2032
2033 2.7     7/7/95          - Released
2034
2035 Added "return-rst" to return TCP RST's to TCP packets.
2036
2037 Actually ported it to FreeBSD-i386 2.0.0, so it works there properly now.
2038
2039 Added insertion of filter rules.  Use "@<#>" at the beginning of a filter
2040 to insert a rule at row #.
2041
2042 Filter keeps track of how many times each rule is matched.
2043
2044 Changed compile time things to match kernel option (IPFILTER_LKM &
2045 IPFILTER_LOG).
2046
2047 Updated ip_input.c and ip_output.c with paches for 3.5 Multicast IP.
2048 (No change required for 3.6)
2049
2050 Now includes TCP fragments which start inside the TCP header as being short.
2051 Added counting the number of times each rule is matched.
2052
2053
2054 2.6     11/5/95         - Released
2055
2056 Added -n option to ipf: when supplied, no changes are made to the kernel.
2057
2058 Added installation scripts for SunOS 4.1.x and NetBSD/FreeBSD/BSDI.
2059
2060 Rewrote filtering to use a more generic mask & match procedure for
2061 checking if a packet matches a rule.
2062
2063 2.5.2   27/4/95         - Released
2064
2065 "tcp/udp" and a non-initialised pointer caused the "proto" to become
2066 a `random' value; added "ip#/dotted.mask" notation to the BNF.
2067 From Adam W. Feigin  <feigin@iis.ee.ethz.ch>
2068
2069 2.5.1   22/3/95         - Released
2070
2071 "tcp/udp" had a strange effect (undesired) on getserv*() functions,
2072 causing protocol/service lookups to fail.  Reported by Matthew Green.
2073
2074 2.5     17/3/95         - Released
2075
2076 Added a new keyword "all" to BNF and parsing of tcpdump/etherfind/snoop
2077 output through the ipftest program.  Suggestions from:
2078 Michael Ciavarella (mikec@phyto.apana.org.au)
2079
2080 Conflicts occur when "general" filter rules are used for ports and the
2081 lack of a "proto" when used with "port" matches other packets when only
2082 TCP/UDP are implied.
2083 Reported Matthew Green (mrg@fulcom.com.au);
2084 reported & fixed 6-8/3/95
2085
2086 Added filtering of short TCP packets using "with short" 28/2/95
2087 (These can possibly slip by checks for the various flags).  Short UDP
2088 or ICMP are dropped to the floor and logged.
2089
2090 Added filtering of fragmented packets using "with frag" 24/2/95
2091
2092 Port to NetBSD-current completed 20/2/95, using LKM.
2093
2094 Added logging of the rule # which caused the logging to happen and the
2095 interface on which the packet is currently as suggested by
2096 Andreas Greulich (greulich@math-stat.unibe.ch) 10/2/95
2097
2098 2.4     9/2/95          - Released
2099 Fixed saving of IP headers in ICMP packets.
2100
2101 2.3     29/1/95
2102 Added ipf -F [in|out|all] to flush filter rule sets (SIOCIPFFL).
2103 Fixed iplread() and iplsave() with help from Marc Huber.
2104
2105 2.2     7/1/95          - Released
2106 Added code from Marc Huber <huber@fzi.de> to allow it to allocate
2107 its own major char number dynamically when modload'ing.  Fixed up
2108 use of <, >, <=, >= and >< for ports.
2109
2110 2.1     21/12/94        - Released
2111 repackaged to include the correct ip_output.c and ip_input.c *goof*
2112
2113 2.0     18/12/94        - Released
2114 added code to check for port ranges - complete.
2115 rewrote to work as a loadable kernel module - complete.
2116
2117 1.1
2118 added code for ouput filtering as well as input filtering and added support for logging to a simple character device of packet headers.
2119
2120 1.0     22/04/93        - Released
2121 First release cut.