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