Home | History | Annotate | Line # | Download | only in dist
HISTORY revision 1.1.1.1.2.3
      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 5.1.2 - RELEASED - 22 Jul 2012
     14 
     15 3546266 macro letters could be more consistent
     16 3546265 not all of the state statistics are displayed
     17 3546261 scripts for updating BSD environment out of date
     18 3546260 compiler warnings about non-integer array subscript
     19 3546259 asserting numdereflists == 0 is not correct
     20 3546258 expression matching does not see IPF_EXP_END
     21 3544317 ipnat/ipfstat are not using ipfexp_t
     22 3545324 proxy checksum calculation is not hardware aware
     23 3545321 FTP sequence number adjustment incorrectly applied
     24 3545320 EPSV is not recognised
     25 3545319 move nat rule creation to ip_proxy.c
     26 3545317 better feedback of checksum requirements for proxies
     27 3545314 ftp proxy levels do not make sense
     28 3545312 EPRT is not supported by ftp proxy
     29 3544318 ipnat.conf parsing ignores LHS address family
     30 3545309 non-ipv6 safe proxies do not fail with ipv6
     31 3545323 NAT updates the source port twice
     32 3545322 ipv6 nat rules cannot start proxies
     33 3544314 bucket copyout tries to copy too much data
     34 3544313 remove nat encap feature
     35 3546248 compat rule pointer type mismatch
     36 3546247 UDP hardware checksum offload not recognised
     37 3545311 ifp_ifaddr does not find the first set address
     38 3545310 ipmon needs ipl_sec on 64bit boundary
     39 3545326 reference count changes made without lock
     40 3544315 stateful matching does not use ipfexp_t
     41 3543493 tokens are not flushed when disabled
     42 3543487 NAT rules do not always release lookup objects
     43 3543491 function comments in ip_state.c are old
     44 3543404 ipnat.conf parsing uses family/ip version badly
     45 3543403 incorrect line number printed in ipnat parsing errors
     46 3543402 Not all NAT statistics are printed
     47 3542979 NAT session list management is too simple
     48 3542978 ipv4 and ipv6 nat insert have common hash insertion
     49 3542977 ipnat_t refence tracking incomplete
     50 3542975 proxies must use ipnat_t separately
     51 3542980 printing ipv6 expressions is wrong
     52 3542983 ippool cannot handle more than one ipv6 address
     53 3543018 mask array shifted incorrectly.
     54 3542974 reason for dropping packet is lost
     55 3542982 line numbers not recorded/displayed correctly by ipf
     56 3542981 exclamation mark cuases trouble with pools
     57 3541655 test suite checksums incorrect
     58 3541653 display proxy fail status correctly
     59 3540993 IP header offset excluded in pullup calculations
     60 3540994 pullupmsg does not work as required
     61 3540992 pointer to ipv6 frag header not updated on pullup
     62 3541645 netmask management adds /32 for /0
     63 3541637 ipnat parser does not zero port fields for non-port protocol
     64 3541635 pool names cannot by numbers
     65 3540995 IPv6 fragment tracking does not always work
     66 3540996 printing of nextip for ipv6 nat rules is wrong
     67 3540999 ipnat.conf parsing has trouble with icmpidmap for ipv6
     68 3540825 whois output parsing error for ipv6
     69 3540814 ipfd_lock serves no purpose
     70 3540810 lookup objects need tail pointers
     71 3540809 refactor hash table lookups for nat
     72 3540819 radix tree does not work with ipv6
     73 3540820 mutex emulation should be logged
     74 3540828 ipfstat filtering with -m fails tests
     75 3536480 ippool could be more like the others
     76 3536477 pool printing not uniform
     77 3536483 flushing empty destination lists causes panic
     78 3536481 more use of bzero after KMALLOC required
     79 3536479 ipnat.conf line numbers not stored
     80 3536484 Makefile missing dependency for ippool
     81 3536199 TFTP proxy requires something extra
     82 3536198 ICMP checksum out by one
     83 3536203 ipnat does not return an error
     84 3536201 ipf.conf parsing too address friendly
     85 3536200 printing of bytes/packets not indented
     86 3497941 ipv4 multicast detection incorrect on little endian
     87 3535361 to interfaces printed out of order
     88 3535363 ipf parser is inconsistent
     89 3532306 deleting ipnat rules does not work
     90 3532054 new error required for ipf_rx_create
     91 3532053 icmp6 checksums wrong
     92 3532052 icmpv6 state check with incorrect length
     93 3531871 checksum verification wants too many icmp6 bytes
     94 3531870 ipnat.conf parsing needs to support inet6
     95 3532048 error in ipf group parsing
     96 3531868 ICMPV6 checksum not validated
     97 3531893 ipftest exits without error for bad input
     98 3531890 whois pool parsing builds bad structures
     99 3531891 icmpv6 text parsing ignorant of icmp types
    100 3531653 rewrite with icmp does not work
    101 3530563 NAT operations fail with EPERM
    102 3530544 first pass at gcc -Wextra cleanup
    103 3530540 lookup create functions do not set error properly
    104 3530539 ipf_main_soft_destroy doesn't need 2nd arg
    105 3530541 reorder structure for better packing
    106 3530543 ipnat purge needs documentation
    107 3530515 BSD upgrade script required
    108 3528029 ipmon bad-mutex panic
    109 3530247 loading address pools light on input validation
    110 3530255 radix tree delete uses wrong lookup
    111 3530254 radix tree allocation support wrong
    112 3530264 ipmon prints qd for some 64bit numbers
    113 3530260 decapsulate rules not printed correctly.
    114 3530266 ipfstat -v/-d flags confused
    115 2939220 why a packet is blocked is not discernable
    116 2939218 output interface not recorded
    117 2941850 use of destination lists with to/dup-to beneficial
    118 3457747 build errors introduced with radix change
    119 3535360 timeout groups leak
    120 3535359 memory leak with tokens
    121 3535358 listing rules in groups requires tracking groups
    122 3535357 rule head removal is problematic
    123 3530259 not all ioctl error checked wth SIOCIPFINTERROR
    124 3530258 error routine that uses fd required
    125 3530253 inadequate function comment blocks
    126 3530249 walking lookup tables leaks memory
    127 3530241 extra lock padding required for freebsd
    128 3529901 ipf returns 0 when rules fail to load
    129 3529491 checksum validation could be better
    130 3529486 tcp checksum wrong for ipv6
    131 3533779 ipv6 nat rules missing inet6 keyword
    132 3532693 ipnat.conf rejects some ipv6 addresses
    133 3532691 ipv4 should not be forced for icmp
    134 3532689 ipv6 nat rules do not print inet6
    135 3532688 ipv6 address always printed with "to <if>"
    136 3532687 with v6hdrs not supported like with ipopts
    137 3532686 ipf expressions do not work with ipv6
    138 3540825 whois output parsing error for ipv6
    139 3540818 NAT for certain IPv6 ICMP packets should not be allowed
    140 3540815 memory leak with destination lists
    141 3540814 ipfd_lock serves no purpose
    142 3540810 lookup objects need tail pointers
    143 3540809 refactor hash table lookups for nat
    144 3540808 completed tokens do not stop iteration
    145 3530492 address hash table name not used
    146 3528029 ipmon bad-mutex panic
    147 3530256 hook memory leaked
    148 3530271 pools parsing produces badly formed address structures
    149 3488061 cleanup for illumos build
    150 3484434 SIOCIPFINTERROR must work for all devices
    151 3484067 mandoc -Tlint warnings to be fixed
    152 3483343 compile warning in ipfcomp.c
    153 3482893 building without IPFILTER_LOG fails
    154 3482765 building netbsd kernel without inet6 fails
    155 3482116 ipf_check frees packet from ipftest
    156 3481663 does not compile on solaris 11
    157 
    158 5.1.1 - RELEASED - 9 May 2012
    159 
    160 3481322 ip_fil_compat.c needs a cleanup
    161 3481211 add user errors to dtrace
    162 3481152 compatibility for 4.1 needs more work
    163 3481153 PRIu64 problems on FreeBSD
    164 3481155 ipnat listing incorrect
    165 3480543 change leads to compat problems
    166 3480538 compiler errors from earlier patch
    167 3480537 ipf_instance_destroy is incomplete
    168 3480536 _fini order leads to panic
    169 3479991 compiler warnings about size mismatches
    170 3479974 copyright dates are wrong (fix)
    171 3479464 add support for leaks testing
    172 3479457 %qu is not the prefered way
    173 3479451 iterators leak memory
    174 3479453 nat rules with pools leak
    175 3479454 memory leak in hostmap table
    176 3479461 load_hash uses memory after free
    177 3479462 printpool leaks memory
    178 3479452 missing FREE_MB_T to freembt leaks
    179 3479450 ipfdetach is called when detached
    180 3479448 group mapping rules memory leak
    181 3479455 memory leak from tuning
    182 3479458 ipf must be running in global zone
    183 3479460 driver replace is wrong
    184 3479459 radix tree tries to free null pointer
    185 3479463 rwlock emulation does not free memory
    186 3479465 parser leaks memory
    187 3475959 hardware checksum not correctly used
    188 3475426 ip pseudo checksum wrong
    189 3473566 radix tree does not delete dups right
    190 3472987 compile is not clean
    191 3472337 not everything is zero'd
    192 3472344 interface setup needs to be after insert
    193 3472340 wildcard counter drops twice
    194 3472338 change fastroute interface
    195 3472335 kernel lock defines not placed correctly
    196 3472324 ICMP INFOREQ/REPLY not handled
    197 3472330 multicast packets tagged by address
    198 3472333 ipf_deliverlocal called incorrectly
    199 3472345 mutex debug could be more granular
    200 3472761 building i19 regression is flawed
    201 3456457 use of bsd tree.h needs to be removed
    202 3460522 code cleanup required for building on freebsd
    203 3459734 trade some cpu for memory
    204 3457747 build errors introduced with radix change
    205 3457804 build errors from removal of pcap-int,h
    206 3440163 rewrite radix tree
    207 3428004 snoop, tcpdump, etherfind readers are unused
    208 3439495 ipf_rand_push never called (fix brackets)
    209 3437732 getnattype does not need to use ipnat_t (fix variable name)
    210 3437696 fr_cksum is a nightmare
    211 3439061 ipf_send_ip doesn't need 3rd arg
    212 3439059 ipid needs to be file local
    213 3437740 complete buildout of fnew
    214 3438575 add dtrace probes to block events
    215 3438347 comment blocks missing softc
    216 3437687 description of ipf_makefrip wrong
    217 3438340 more stats as dtrace probes
    218 3438316 free on nat structure uses fixed size
    219 3437745 nat iterator using the wrong size
    220 3437710 fail checksum verification if packet is short
    221 3437696 fr_cksum is a nightmare
    222 3437732 getnattype does not need to use ipnat_t
    223 3437735 rename ipf_allocmbt to allocmbt
    224 3437697 fr_family to version assignment is wrong
    225 3437746 ap_session_t has unused fields
    226 3437747 move softc structure to .h file (ip_state.c)
    227 3437704 there is no DTRACE_PROBE5
    228 3437748 wrong interface in qpktinfo_t
    229 3437729 create function to hexdump mb_t
    230 3438273 msgdsize should be easier to read
    231 3437683 object direction not set for 32bit
    232 3433767 calling ip_cksum could be easier
    233 3433764 left over locking
    234 3428015 printing proxy data size is useless
    235 3428013 add M_ADJ to hide adjmsg/m_adj
    236 3428012 interface name is not always returned correctly
    237 3428002 ip_ttl is too low
    238 3427997 ipft readers do not set buffer length
    239 3426558 resistence is futile
    240 3424495 various copy-paste errors
    241 1826936 shall we allow ipf to be as dumb as its admin
    242 3424477 specfuncs needs to go
    243 3424484 missing fr_checkv6sum
    244 3424478 one entry at a time
    245 2998760 auth rules do not mix well with to/dup-to/fastroute
    246 3424195 add ctfmerge to sunos5 makefile
    247 3424132 some dtrace probes to start with
    248 3423812 makefile needs ip_frag.h for some files
    249 3423817 reference count useful in verbose output
    250 3423800 walking lists does not drop reference
    251 3423805 fragmentation stats not reported correclty
    252 3423808 ip addresses reportied incorrectly with ipfstat -f
    253 3423821 track packets and bytes for fragmentation
    254 3423803 attempt to double free rule
    255 3423805 fragmentation stats not reported correctly
    256 3422712 system panic with ipfstat -f
    257 3422619 pullup counter bumped for every packet
    258 3422608 dummy rtentry required to build
    259 3422018 frflush next to ipf_fini_all is redundant
    260 3422012 instance cleanup is not clean
    261 3421845 instance name not set
    262 3005622 ip_fil5.1.0 does not load on Solaris 10 U8
    263 2976332 stateful filtering is incompatible with ipv4 options
    264 3387509 ipftest needs help construction ip packets with options
    265 2998746 passp can never be null
    266 3064034 mbuf clobbering problem with ipv6
    267 3105725 ipnat divide by zero panic
    268 2998750 ipf_htent_insert can leak memory
    269 3064034 mbuf clobbering problem with ipv6
    270 3105725 ipnat divie by zero panic
    271 
    272 5.1 - RELEASED - 9 May 2010
    273 
    274 * See WhatsNew50.txt
    275 
    276 4.1 - RELEASED - 12 February 2004
    277 
    278 4.0-BETA1 20 August 2003
    279 
    280 support 0/32 and 0/0 on the RHS in redirect rules
    281 
    282 where LHS and RHS netmasks are the same size for redirect, do 1:1 mapping
    283 for bimap rules.
    284 
    285 allow NAT rule to match 'all' interfaces with * as interface name
    286 
    287 do mapping of ICMP sequence id#'s in pings
    288 
    289 allow default age for NAT entries to be set per NAT rule
    290 
    291 provide round robin selection of destination addresses for redirect
    292 
    293 ipmon can load a configuration file with instructions on actions
    294 to take when a matching log entry is received
    295 
    296 now requires pfil to work on Solaris & HP-UX
    297 
    298 supports mapping outbound connections to a specific address/port
    299 
    300 support toggling of logging per ipfilter 'device'
    301 
    302 use queues to expire data rather than lists
    303 
    304 add MSN RPC proxy
    305 
    306 add IRC proxy
    307 
    308 support rules with dynamic ip addresses
    309 
    310 add ability to define a pool of addresses & networks which can then
    311 be placed in a single rule
    312 
    313 support passing entire packet back to user program for authentication
    314 
    315 support master/slave for state information sharing
    316 
    317 reorganise generic code into a lib directory and make libipf.a
    318 
    319 user programs enforce version matching with the kernel
    320 
    321 supports window scaling if seen at TCP session setup
    322 
    323 generates C code from filter rules to compile in or load as native
    324 machine code.
    325 
    326 supports loading rules comprised of BPF bytecode statements
    327 
    328 HP-UX 11 port completed
    329 
    330 and packets-per-second filtering
    331 
    332 add numerical tags to rules for filtering and display in ipmon output
    333 
    334 3.4.4 23/05/2000 - Released
    335 
    336 don't add TCP state if it is an RST packet and (attempt) to send out
    337 RST/ICMP packets in a manner that bypasses IP Filter.
    338 
    339 add patch to work with 4.0_STABLE delayed checksums
    340 
    341 3.4.3 20/05/2000 - Released
    342 
    343 fix ipmon -F
    344 
    345 don't truncate IPv6 packets on Solaris
    346 
    347 fix keep state for ICMP ECHO
    348 
    349 add some NAT stats and use def_nat_age rather than DEF_NAT_AGE
    350 
    351 don't make ftp proxy drop packets
    352 
    353 use MCLISREFERENCED() in tandem with M_EXT to check if IP fields need to be
    354 swapped back.
    355 
    356 fix up RST generation for non-Solaris
    357 
    358 get "short" flag right for IPv6
    359 
    360 3.4.2 - 10/5/2000 - Released
    361 
    362 Fix bug in dealing with "hlen == 1 and opt > 1" - Itojun
    363 
    364 ignore previous NAT mappings for 0/0 and 0/32 rules
    365 
    366 bring in a completely new ftp proxy
    367 
    368 allow NAT to cause packets to be dropped.
    369 
    370 add NetBSD callout support for 1.4-current
    371 
    372 3.4.1 - 30/4/2000 - Released
    373 
    374 add ratoui() and fix parsing of group numbers to allow 0 - UINT_MAX
    375 
    376 don't include opt_inet6.h for FreeBSD if KLD_MODULE is defined
    377 
    378 Solaris must use copyin() for all types of ioctl() args
    379 
    380 fix up screen/tty when leaving "top mode" of ipfstat
    381 
    382 linked list for maptable not setup correctly in nat_hostmap()
    383 
    384 check for maptable rather than nat_table[1] to see if malloc for maptable
    385 succeeded in nat_init
    386 
    387 fix handling of map NAT rules with "from/to" host specs
    388 
    389 fix printout out of source address when using "from/to" with map rules
    390 
    391 convert ip_len back to network byte order, not plen, for solaris as ip_len
    392 may have been changed by NAT and plen won't reflect this
    393 
    394 3.4 - 27/4/2000 - Released
    395 
    396 source address spoofing can be turned on (fr_chksrc) without using
    397 filter rules
    398 
    399 group numbers are now 32bits in size, up from 16bits
    400 
    401 IPv6 filtering available
    402 
    403 add frank volf's state-top patches
    404 
    405 add load splitting and round-robin attribute to redirect rules
    406 
    407 FreeBSD-4.0 support (including KLD)
    408 
    409 add top-style operation mode for ipfstat (-t)
    410 
    411 add save/restore of IP Filter state/NAT information (ipfs)
    412 
    413 further ftp proxy security checks
    414 
    415 support for adding and removing proxies at runtime
    416 
    417 3.3.13  26/04/2000 - Released
    418 
    419 Fix parsing of "range" with "portmap"
    420 
    421 Relax checking of ftp replies, slightly.
    422 
    423 Fix NAT timeouts for ICMP packets
    424 
    425 SunOS4 patches for ICMP redirects from Jurgen Keil (jk@tools.de)
    426 
    427 3.3.12  16/03/2000 - Released
    428 
    429 tighten up ftp proxy behaviour.  sigh.  yuck.  hate.
    430 
    431 fix bug in range check for NAT where the last IP# was not used.
    432 
    433 fix problem with icmp codes > 127 in filter rules caused bad things to
    434 happen and in particular, where #18 caused the rule to be printed
    435 erroneously.
    436 
    437 fix bug with the spl level not being reset when returning EIO from
    438 iplioctl due to ipfilter not being initialized yet.
    439 
    440 3.3.11  04/03/2000 - Released
    441 
    442 make "or-block" work with lines that start with "log"
    443 
    444 fix up parsing and printing of rules with syslog levels in them
    445 
    446 fix from Cy Schubert for calling of apr_fini only if non-null
    447 
    448 
    449 3.3.10	24/02/2000 - Released
    450 
    451 * fix back from guido for state tracking interfaces
    452 
    453 * update for NetBSD pfil interface changes
    454 
    455 * if attaching fails and we can abort, then cleanup when doing so.
    456 
    457 julian@computer.org:
    458 * solaris.c (fr_precheck): After calling freemsg on mt, set it point to *mp.
    459 * ipf.c (packetlogon): use flag to store the return value from get_flags.
    460 * ipmon.c (init_tabs): General cleanup so we do not have to cast
    461   an int s->s_port to u_int port and try to check if the u_int port
    462   is less than zero.
    463 
    464 3.3.9	15/02/2000 - Released
    465 
    466 fix scheduling of bad locking in fr_addstate() used when we attach onto
    467 a filter rule.
    468 
    469 fix up ip_statesync() with storing interface names in ipstate_t
    470 
    471 fix fr_running for LKM's - Eugene Polovnikov
    472 
    473 junk using pullupmsg() for solaris - it's next to useless for what we
    474 need to do here anyway - and implement what we require.
    475 
    476 don't call fr_delstate() in fr_checkstate(), when compiled for a user
    477 program, early but when we're finished with it (got fr & pass)
    478 
    479 ipnat(5) fix from Guido
    480 
    481 on solaris2, copy message and use that with filter if there is another
    482 copy if it being used (db_ref > 1).  bad for performance, but better
    483 than causing a crash.
    484 
    485 patch for solaris8-fcs compile from Casper Dik
    486 
    487 3.3.8	01/02/2000 - Released
    488 
    489 fix state handling of SYN packets.
    490 
    491 add parsing recognition of extra icmp types/codes and fix handling of
    492 icmp time stamps and mask requests - Frank volf
    493 
    494 3.3.7	25/01/2000 - Released
    495 
    496 sync on state information as well as NAT information when required
    497 
    498 record nat protocol in all nat log records
    499 
    500 don't reuse the IP# from an active NAT session if the IP# in the rule
    501 has changed dynamically.
    502 
    503 lookup the protocol for NAT log information in ipmon and pass that to
    504 portname.
    505 
    506 fix the bug with changing the outbound interface of a packet where it
    507 would lead to a panic.
    508 
    509 use fr_running instead of ipl_inited. (sysctl name change on freebsd)
    510 
    511 return EIO if someone attempts an ioctl on state/nat if ipfilter is not
    512 enabled.
    513 
    514 fix rule insertion bug
    515 
    516 make state flushing clean anything that's not fully established (4/4)
    517 
    518 call fr_state_flush() after we've released ipf_state so we don't generate
    519 a recursive mutex acquisition panic
    520 
    521 fix parsing of icmp code after return-icmp/return-icmp-as-dest and add
    522 some patches to enhance parsing strength
    523 
    524 3.3.6	28/12/1999 - Released
    525 
    526 add in missing rwlock release in fr_checkicmpmatchingstate() and fix check
    527 for ICMP_ECHO to only be for packet, not state entry which we don't have yet.
    528 
    529 handle SIOCIPFFB in nat_ioctl() and fr_state_ioctl()
    530 
    531 fix size of friostat for SunOS4
    532 
    533 fix bug in running off the end of a buffer in real audio proxy
    534 
    535 3.3.5	11/12/1999 - Released
    536 
    537 fix parsing of "log level" and printing it back out too
    538 
    539 <net/if_types.h> is only present on Solaris2.6/7/8
    540 
    541 use send_icmp_err rather than icmp_error to send back a frag-needed error
    542 when doing PMTU
    543 
    544 do not use -b with add_drv on Solaris unless $BASEDIR is set.
    545 
    546 fix problem where source address in icmp replies is reversed
    547 
    548 fix yet another problem with real audio.
    549 
    550 3.3.4	4/12/1999 - Released
    551 
    552 fix up the real audio proxy to properly setup state information and NAT
    553 entries, thanks to Laine Stump for testing/advice/fixes.
    554 
    555 fix ipfr_fastroute to set dst->sin_addr (Sean Farley - appears to prevent
    556 FreeBSD 3.3 from panic'ing) as this had been removed in prior hacks to this
    557 routine.
    558 
    559 fix kinstall for BSDI
    560 
    561 support ICMP errors being allowed through for ICMP packets going out with
    562 keep state enabled
    563 
    564 support hardware checksumming (gigabit ethernet cards) on Solaris thanks to
    565 Tel.Net Media for providing hardware for testing.
    566 
    567 patched from Frank Volf for ipmon (ICMP & fragmented packets) and allowing
    568 ICMP responses to ICMP packets in the keep state table.
    569 
    570 add in patches for hardware checksumming under solaris
    571 
    572 Solaris install scripts now use $BASEDIR as appropriate.
    573 
    574 add Solaris8 support
    575 
    576 fix "ipf -y" on solaris so that it rescans rules also for changes in
    577 interface pointers
    578 
    579 let ipmon become a daemon with -D if it is using syslog
    580 
    581 fix parsing of return-icmp-as-dest(foo)
    582 
    583 add reference to ipfstat -g to ipfstat.8
    584 
    585 ipf_mutex needs to be declared for irix in ip_fil.c
    586 
    587 3.3.3	22/10/1999 - Released
    588 
    589 add -g command line option to ipfstat to show groups still define.
    590 
    591 fix problem with fragment table not recording rule pointer when called
    592 from state functions (fin_fr not set).
    593 
    594 fixup fastroute problems with keep state rules.
    595 
    596 load rules into inactive set first, so we don't disable things like NIS
    597 lookups half way through processing - found by Kevin Littlejohn
    598 
    599 fix handling of unaligned ip pointer for solaris
    600 
    601 patch for fr_newauth from Rudi Sluijtman
    602 
    603 fixed htons() bug in fr_tcpsum() where ip_p wasn't cast to u_short
    604 
    605 3.3.2	23/09/1999 - Released
    606 
    607 patches from Scott Presnell to fix rcmd proxy
    608 
    609 patches from Greg to fix Solaris detachment of interfaces
    610 
    611 add openbsd compatibility fixes
    612 
    613 fix free'ing already freed memory in ipfr_slowtimer()
    614 
    615 fix for deferencing invalid memory in cleaning up after a device disappears
    616 
    617 3.3.1	14/8/1999 - Released
    618 
    619 remove include file sys/user.h for irix
    620 
    621 prevent people from running buildsunos directly
    622 
    623 fix up some problems with the saving of rule pointers so that NAT saves
    624 that information in case it should need to call fr_addstate() from a proxy.
    625 
    626 fix up scanning for the end of FTP messages
    627 
    628 don't remove /etc/opt/ipf in postremove
    629 
    630 attempt to prevent people running buildsolaris script without doing a
    631 "make solaris"
    632 
    633 fix timeout losing on freebsd3
    634 
    635 3.3	7/8/1999 - Released
    636 
    637 NAT: information (rules, mappings) are stored in hash tables; setup some
    638 basic NAT regression testing.
    639 
    640 display version name of installed kernel code when initializing.
    641 
    642 add -V command line option to ipf, showing version (program and kernel
    643 module) as well as the run-status of the kernel code.
    644 
    645 fix problem with "log" rules actually affecting result of filtering.
    646 
    647 automatically use SUNWspro if available and on a 64bit Solaris system for
    648 compiling.
    649 
    650 add kernel proxies for rcmd(3) and RealAudio (PNA)
    651 
    652 use timeout/untimeout on SunOS4/BSD platforms too rather than hijacking
    653 ip_slowtimo
    654 
    655 fix IP headers generated through parsing of text information
    656 
    657 fix NAT rules to be in the correct order again.
    658 
    659 make keep-state work with to/fastroute keywords and enforce usage of those
    660 interfaces.
    661 
    662 update keep-state code with new algorithm from Guido
    663 
    664 add FreeBSD-3 support
    665 
    666 add return-icmp-as-dest option to retrun an ICMP packet using the original
    667 destination as the source rather than a local IP address
    668 
    669 add "level [facility.]<priority>" option to filter language
    670 
    671 add changes from Guido to state code.
    672 
    673 add code to return EPERM if the device is opened for writing and we're
    674 in securelevel 2 or greater.
    675 
    676 authentication code patches from Guido
    677 
    678 fix real audio proxy
    679 
    680 fix ipmon rule printing of interfaces and add IN/OUT to the end of ipmon
    681 log output.
    682 
    683 fix bimap rules with hash tables
    684 
    685 update addresses used in NAT mappings for 0/32 rules for any protocol but TCP
    686 if it changes on the interface - check every ip_natexpire()
    687 
    688 add redirect regression test
    689 
    690 count buckets used in the state hash table.
    691 
    692 fix sending of RST's with return-rst to use the ack number provided in
    693 the packet being replied to in addition to the sequence number.
    694 
    695 fix to compile as a 64bit application on solaris7-64bit
    696 
    697 add NAT IP mapping to ranges of IP addresses that aren't CIDR specified
    698 
    699 fix calculation of in_space parameter for NAT
    700 
    701 fix `wrapping' when incrementing the next ip address for use in NAT
    702 
    703 fix free'ing of kernel memory in ip_natunload on solaris
    704 
    705 fix -l/-U command line options from interfering with each other
    706 
    707 fix fastroute under solaris2 and cleanup compilation for solaris7
    708 
    709 add install scripts and compile cleanly on BSD/OS 4.0
    710 
    711 safely open files in /tmp for writing device output when testing.
    712 
    713 fix uninitialized pointer bug in NAT
    714 
    715 fix SIOCZRLST (zero list rule stats) bug with groups
    716 
    717 change some usage of u_short to u_int in function calling
    718 
    719 fix compilation for Solaris7 (SUNWspro)
    720 
    721 change solaris makefiles to build for either sparc or i386 rather than
    722 per-cpu (sun4u, etc).
    723 
    724 fixed bug in ipllog
    725 
    726 add patches from George Michaelson for FreeBSD 3.0
    727 
    728 add patch from Guido to provide ICMP checking for known state in the same
    729 manner as is done for NAT.
    730 
    731 enable FTP PASV proxying and enable wildcarding in NAT/state code for ports
    732 for better PORT/PASV support with FTP.
    733 
    734 bring into main tree static nat features: map-block and "auto" portmapping.
    735 
    736 add in source host filtering for redirects (alan jones)
    737 
    738 3.2.10		22/11/98 - Released
    739 
    740 3.2.10beta9	17/11/98 - Released
    741 
    742 fix fr_tcpsum problems in handling mbufs with an odd number of bytes
    743 and/or split across an mbuf boundary
    744 
    745 fix NAT list entry comparisons and allow multiple entries for the same
    746 proxy (but on different ports).
    747 
    748 don't create duplicate NAT entries for repeated PORT commands.
    749 
    750 3.2.10beta8	14/11/98 - Released
    751 
    752 always exit an rwlock before expecting to enter it again on solaris
    753 
    754 fix loop in nat_new for pre-existing nat
    755 
    756 don't setup state for an ftp connection if creating nat fails.
    757 
    758 3.2.10beta7	05/11/98 - Released
    759 
    760 set fake window in ipft_tx.c to ensure code passes tests.
    761 
    762 cleaned up/enhanced ipnat -l/ipnat -lv output
    763 
    764 fixed NAT handling of non-TCP/UDP packets, esp. for ICMP errors returned.
    765 
    766 Solaris recusive mutex on icmp-error/tcp-reset - requires rwlock's rather
    767 than mutexes.
    768 
    769 3.2.10beta6	03/11/98 - Released
    770 
    771 fix mixed use of krwlock_t and kmutex_t on Solaris2
    772 
    773 fix FTP proxy back up, splitting pasv code out of port code.
    774 
    775 3.2.10beta5	02/11/98 - Released
    776 
    777 fixed port translation in ICMP reply handling
    778 
    779 3.2.10beta4	01/11/98 - Released
    780 
    781 increase useful statistic collection on solaris
    782 
    783 filter DL_UNITDATA_REQ as well as DL_UNITDATA_IND on solaris
    784 
    785 disable PASV reply translation for now
    786 
    787 fail with an error if we try to load a NAT rule with a non-existant
    788    proxy name - Guido
    789 
    790 fix portmap usage with 0/0 and 0/32 map rules
    791 
    792 remove ap_unload/ap_expire - automatically done when NAT is cleaned up
    793 
    794 print "STATE:CLOSED" from ipmon if the connection progresses past established
    795    rather than "STATE:EXPIRED"
    796 
    797 3.2.10beta3	26/10/98 - Released
    798 
    799 fixed traceroute/nat problem
    800 
    801 rewrote nat/proxy interface
    802 
    803 ipnat now lists associated proxy sessions for each NAT where applicable
    804 
    805 3.2.10beta2	13/10/98 - Released
    806 
    807 use KRWLOCK_T in place of krwlock_t for solaris as well as irix
    808 
    809 disable use of read-write lock acquisition by default
    810 
    811 add in mb_t for linux, non-kernel
    812 
    813 some changes to progress compilation on linux with glibc
    814 
    815 change PASV as well as PORT when passed through kernel ftp proxy.
    816 
    817 don't allow window to become 0 in tcp state code
    818 
    819 make ipmon compile cleaner
    820 
    821 irix patches
    822 
    823 3.2.10beta	11/09/98 - Released
    824 
    825 stop fr_tcpsum() thinking it has run out of data when it hasn't.
    826 
    827 stop solaris panics due to fin_dp being something wild.
    828 
    829 revisit usage of ATOMIC_*()
    830 
    831 log closing state of TCP connection in "keep state"
    832 
    833 fix fake-arp table code for ipsend.
    834 
    835 ipmon now writes pid to a file.
    836 
    837 fix "ipmon -a" to actually activate all logging devices.
    838 
    839 add patches for BSDOS4.
    840 
    841 perl scripts for log analysis donated.
    842 
    843 3.2.9	22/06/98 - Released
    844 
    845 fix byte order for ICMP packets generated on Solaris
    846 
    847 fix some locking problems.
    848 
    849 fix malloc bug in NAT (introduced in 3.2.8).
    850 
    851 patch from guido for state connections that get fragmented
    852 
    853 3.2.8	08/06/98 - Released
    854 
    855 use readers/writers locks in Solaris2 in place of some mutexes.
    856 
    857 Solaris2 installation enhancements - Martin Forssen (maf@carlstedt.se)
    858 
    859 3.2.7	24/05/98 - Released
    860 
    861 u_long -> u_32_t conversions
    862 
    863 patches from Bernd Ernesti for NetBSD
    864 
    865 fixup ipmon to actually handle HUP's.
    866 
    867 Linux fixes from Michael H. Warfield (mhw (at] wittsend.com)
    868 
    869 update for keep state patch (not security related) - Guido
    870 
    871 dumphex() uses stdout rather than log
    872 
    873 3.2.6	18/05/98 - Released
    874 
    875 fix potential security loop hole in keep state code.
    876 
    877 update examples.
    878 
    879 3.2.5	09/05/98 - Released
    880 
    881 BSD/OS 3.1 .o files added for the kernel.
    882 
    883 fix sequence # skew vs window size check.
    884 
    885 fix minimum ICMP header size check.
    886 
    887 remove references to Cybersource.
    888 
    889 fix my email address.
    890 
    891 remove ntohl in ipnat - Thomas Tornblom
    892 
    893 3.2.4	09/04/98 - Released
    894 
    895 add script to make devices for /dev on BSD boxes
    896 
    897 fixup building into the kernel for FreeBSD 2.2.5
    898 
    899 add -D command line option to ipmon to make it a daemon and SIGHUP causes
    900 it to close and reopen the logfile
    901 
    902 fixup make clean and make package for SunOS5 - Marc Boucher
    903 
    904 postinstall keeps adding "minor=ipf ipl" - George Ross <gdmr (at] dcs.ed.ac.uk>
    905 
    906 protected by IP Filter gif - Sergey Solyanik <solik (at] atom.ru>
    907 
    908 3.2.3	10/11/97 - Released
    909 
    910 fix some iplang bugs
    911 
    912 fix tcp checksum data overrun, sgi #define changes,
    913 avoid infinite loop when nat'ing to single IP# - Marc Boucher
    914 
    915 fixup DEVFS usage for FreeBSD
    916 
    917 fix sunos5 "make clean" cleaning up too much
    918 
    919 3.2.2	28/11/97 - Released
    920 
    921 change packet matching to return actual error, if bad packet, to facilitate
    922 ECONNRESET for TCP.
    923 
    924 allow ip:netmask in grammar too now - Guido
    925 
    926 assume IRIX has u_int32_t in sys/types.h (needed for R10000)
    927 
    928 rewrite parts of command line options for ipmon
    929 
    930 fix TCP urgent packet & offset testing and add LAND attack test for iptest
    931 
    932 fix grammar error in yacc grammar for iplang
    933 
    934 redirect (rdr) destination port bytes-wapped when it shouldn't be.
    935 
    936 general: fr_check now returns error code, such as EHOSTUNREACH or
    937 ECONNRESET (attempt to make ECONNRESET work for locally outbound
    938 packets).
    939 
    940 linux: enable return-rst, need to filter tcp retransmits which are sent
    941        separately from normal packets
    942 
    943 memory leak plugged in ip_proxy.c
    944 
    945 BSDI compatibility patches from Guido
    946 
    947 tcp checksum fix - Marc Boucher
    948 
    949 recursive mutex and ioctl param fix - Marc Boucher
    950 
    951 3.2.1	12/11/97 - Released
    952 
    953 port to BSD/OS 3.0
    954 
    955 port to Linux 2.0.31
    956 
    957 patches to make "map a/m -> 0/0" work with ftp proxying properly - Marc Boucher
    958 
    959 add "ipf -F s" and "ipf -F S" to flush state table entries.
    960 
    961 announce if logging is on or off when ip filter initializes.
    962 
    963 "ipf -F a" doesn't flush groups properly for Solaris.
    964 
    965 3.2		30/10/97 - Released
    966 
    967 ipnat doesn't successfully remove proxy mappings with "-rf" -
    968 Alexander Romanyu
    969 
    970 use K&R C function style for solaris kernel code
    971 
    972 use m_adj() to decrease packet size in ftp proxy
    973 
    974 use mbufchainlen rather than msgdsize,
    975 IRIX update - Marc Boucher
    976 
    977 fix NetBSD modunload bug (pfil_add_hook done twice)
    978 
    979 patches for OpenBSD 2.1 - Craig Bevins <craigb (at] bitcom.net.au>
    980 
    981 3.2beta10	24/10/97 - Released
    982 
    983 fix fragment table entries allocated for NAT.
    984 
    985 fix tcp checksum calculations over mbuf/mblk boundaries
    986 
    987 fix panic for blen < 0 in ftp kernel proxy - marc boucher
    988 
    989 fix flushing of rules which have been grouped.
    990 
    991 3.2beta9	20/10/97 - Released
    992 
    993 some nit picking on solaris2 with SUNWspro - Michael Lyle <mrl (at] rpnet.net>
    994 
    995 ftp kernel proxy patches from Marc Boucher
    996 
    997 3.2beta8	13/10/97 - Released
    998 
    999 add support for passing ICMP errors back through NAT.
   1000 
   1001 IRIX port update - Marc Boucher
   1002 
   1003 calculate correct MIN size of packet to log for UDP - Marc Boucher
   1004 
   1005 need htons(ETHERTYPE_x) on little endian BSD boxes - Dave Huang
   1006 
   1007 copyright header fixups
   1008 
   1009 3.2beta7	23/09/97 - Released
   1010 
   1011 fickup problems introduced by prior merges & changes.
   1012 
   1013 3.2beta6	23/09/97 - Released
   1014 
   1015 patch for spin-reading race condition - Marc Boucher.
   1016 
   1017 IRIX port by Marc Boucher.
   1018 
   1019 compatibility updates for Linux to ipsend
   1020 
   1021 3.2beta5	13/09/97 - Released
   1022 
   1023 patches from Bernd Ernesti for NetBSD integration (mostly prototyping and
   1024 compiler warning things)
   1025 
   1026 ipf -y will resync IP#'s allocated with 0/32 in NAT to match interface if it
   1027 changes.
   1028 
   1029 update manual pages and other documentation updates.
   1030 
   1031 3.2beta4	27/8/97 - Released
   1032 
   1033 enable setting IP and TCP options for iplang/
   1034 
   1035 Solaris2 patches from Marc Boucher.
   1036 
   1037 add groups for filter rules.
   1038 
   1039 3.2beta3	21/8/97 - Released
   1040 
   1041 patches for Solaris2 (interface panic solution ?): fix FIONREAD and
   1042 replacing q_qinfo points - Marc Boucher <marc@CAM.ORG>
   1043 
   1044 change ipsend/* and ipsd/* copyright notices to be the same as ip filter's
   1045 
   1046 patch for SYN-ACK skew testing fix from Eric V. Smith <EricSmith (at] windsor.com>
   1047 
   1048 3.2beta2	6/8/97 - Released
   1049 
   1050 make it load on Solaris 2.3
   1051 
   1052 rewrote logging to remove solaris errors, introduced checking to see if the
   1053 same packet is logged successively.
   1054 
   1055 fix filter cache to work when there are no rules loaded.
   1056 
   1057 add "raw" option to ipresend to send entire ethernet frames.
   1058 
   1059 nat list corruption bug - NetBSD - Klaus Klein
   1060 
   1061 3.2beta1	5/7/97 - Released
   1062 
   1063 patches from Jason Thorpe fixing: UNSIGNED_CHAR lossage, off_t being 64bits
   1064 lossage, and other NetBSD bits.
   1065 
   1066 NetBSD 1.2G update.
   1067 
   1068 fixup fwtk patches and add protocol field for SIOCGNATL.
   1069 
   1070 rdr bugs reported by Alexander Romanyu (alexr (at] aix.krid.crimea.ua), with
   1071 fixes:
   1072 * rdr matched all packets of a given protocol (ignored ports).
   1073 * severe bug in nat_delete which caused system crash/freeze.
   1074 
   1075 change Makefile so that CC isn't passed on for FreeBSD/NetBSD (will use
   1076 the default CC - cc, not gcc)
   1077 
   1078 3.2alpha9	16/6/97 - Released
   1079 
   1080 added "skip" keyword.
   1081 
   1082 implement preauthentication of packets, as outlined by Guido.
   1083 
   1084 Make it compile as cleanly as possible with -Wall & general code cleanup
   1085 
   1086 getopt returns int, not char. Bernd Ernesti
   1087 
   1088 3.2alpha8	13/6/97 - Released
   1089 
   1090 code added to support "auth" rules which require a user program to allow them
   1091 through.  First revision and much of the code came from Guido.
   1092 
   1093 hex output from ipmon doesn't goto syslog when recovering from out of sync
   1094 error.  Luke Mewburn (lukem (at] connect.com.au)
   1095 
   1096 fix solaris2.6 lookup of destination ire's.
   1097 
   1098 ipnat doesn't throw away unused bits (after masking), causing it to
   1099 behave incorrectly. Carson Gaspar
   1100 
   1101 NAT code doesn't include inteface name when matching - Alexey Mavrin
   1102 <lha@elco.spb.ru>
   1103 
   1104 replace old SunOS tcpip.h with new tcpip.h (from 4.4BSD) - Jason Thorpe.
   1105 
   1106 update install procedures to include ip_proxy.c
   1107 
   1108 mask out unused bits in NAT/RDR rules.
   1109 
   1110 use a generic type (u_32_t) for 32bit variables, rather than rely on
   1111 u_long being such - Jason Thorpe.
   1112 
   1113 create a local "netinet" directory and include from ~netinet/*" rather than
   1114 just "*" to make keeping the code working on ports easier.
   1115 
   1116 add an m_copydata and m_copyback for SunOS4 (based on 4.4BSD-Lite versions)
   1117 
   1118 documentation updates.
   1119 
   1120 NetBSD update from Jason Thorpe <thorpej (at] netbsd.org>
   1121 
   1122 allow RST's through with a matching SEQ # and 0 ACK.  Guido Van Rooij
   1123 
   1124 ipmon uses excessive amounts of CPU on Solaris2 - Reinhard Bertram
   1125 <Reinhard.Bertram (at] KOM.th-darmstadt.de>
   1126 
   1127 3.2alpha7	25/5/97 - Released
   1128 
   1129 add strlen for pre-2.2 kernels - Doug Kite <dkite (at] websgi.icomnet.com>
   1130 
   1131 setup bits and pieces for compiling into a FreeBSD-2.2 kernel.
   1132 
   1133 split up "bsd" targets.  Now a separate netbsd/freebsd/bsd target.
   1134 mln_ipl.c has been split up into itself and mlf_ipl.c (for freebsd).
   1135 
   1136 fix (negative) host matching in filtering.
   1137 
   1138 add sysctl interface for some variables when compiled into FreeBSD-2.2 kernels
   1139 or later.
   1140 
   1141 make all the candidates for kernel compiling include "netinet/..." and build
   1142 a subdirectory "netinet" when compiling and symlink all .h files into this.
   1143 
   1144 add install make target to Makefile.ipsend
   1145 
   1146 3.2alpha6	8/5/97 - Released
   1147 
   1148 Add "!" (not) to hostname/ip matching.
   1149 
   1150 Automatically add packet info to the fragment cache if it is a fragment
   1151 and we're translating addreses for.
   1152 
   1153 Automatically add packet info to the fragment cache if it is a fragment
   1154 and we're "keeping state" for the packet.
   1155 
   1156 Solaris2 patches - Anthony Baxter (arb (at] connect.com.au)
   1157 
   1158 change install procedure for FreeBSD 2.2 to allow building to a kernel
   1159 which is different to the running kernel.
   1160 
   1161 add FIONREAD for Solaris2!
   1162 
   1163 when expiring NAT table entries, if we would set a time to fr_tcpclosed
   1164 (which is 1), make it fr_tcplaskack(20) so that the state tables have a
   1165 chance to clear up.
   1166 
   1167 3.2alpha5
   1168 
   1169 add proxying skeleton support and sample ftp transparent proxy code.
   1170 
   1171 add printfs at startup to tell user what is happening.
   1172 
   1173 add packets & bytes for EXPIRE NAT log records.
   1174 
   1175 fix the "install-bsd" target in the root Makefile. Chris Williams
   1176 <psion (at] mv.mv.com>
   1177 
   1178 Fixes for FreeBSD 2.2 (and later revs) to prevent panics.  Julian Assange.
   1179 
   1180 3.2alpha4	2/4/97 - Released
   1181 
   1182 Some compiler warnings cleaned up.
   1183 
   1184 FreeBSD-2.2 patches for LKM completed.
   1185 
   1186 3.2alpha3	31/3/97 - Released
   1187 
   1188 ipmon changes: -N for reading NAT logfile, -S for reading state logfile.
   1189 -a for reading all.  -n now toggles hostname resolution.
   1190 
   1191 Add logging of new state entries and expiration of old state entries.
   1192 count log successes and failures.
   1193 
   1194 Add logging of new NAT entries and expiration of old NAT entries.
   1195 count log successes and failures.
   1196 
   1197 Use u_quad_t for records of bytes & packets where kept
   1198 (IP Accounting: fr_hits, fr_bytes; IP state: is_pkts, is_bytes).
   1199 
   1200 Fixup use of CPU and DCPU in Makefiles.
   1201 
   1202 Fix broken 0/32 NAT mapping. Carl Makin <cmakin (at] nla.gov.au>
   1203 
   1204 3.2alpha2
   1205 
   1206 Implement mapping to 0/32 as being an alias for automatically using the
   1207 interface's first IP address.
   1208 
   1209 Implement separate minor devices for both NAT and IP state code.
   1210 
   1211 Fully prototype all functions.
   1212 
   1213 Fix Makefile problem due to attempt to fix Sun compiling problems.
   1214 
   1215 3.1.10		23/3/97 - Released
   1216 
   1217 ipfstat -a requires a -i or -o command line option too.  Print an error
   1218 when not present rather than attempt to do something.
   1219 
   1220 patch updates for SunOS4 for kernel compiling.
   1221 patch for ipmon -s (flush's syslog file which isn't good).  Andrew J. Schorr
   1222 <schorr (at] ead.dsa.com>
   1223 
   1224 too many people hit their heads hard when compiling code into the kernel
   1225 that doesn't let any packets through. (fil.c - IPF_NOMATCH)
   1226 
   1227 icmp-type parsing doesn't return any errors when it isn't constructed
   1228 correctly.  Neil Readwin
   1229 
   1230 Using "-conf" with modload on SunOS4 doesn't work.
   1231 Timothy Demarest <demarest (at] arraycomm.com>
   1232 
   1233 Need to define ARCH in makefile for SunOS4 building.  "make sunos4"
   1234 in INSTALL.SunOS is incorrect. James R Grinter <jrg (at] blodwen.demon.co.uk>
   1235 [all SunOS targets now run buildsunos]
   1236 
   1237 NAT lookups are still incorrect, matching non-TCP/UDP with TCP/UDP
   1238 information. ArkanoiD <ark (at] paranoid.convey.ru>
   1239 
   1240 Need to check for __FreeBSD_version being 199511 rather than 199607
   1241 in mln_ipl.c. Eric Feillant <Eric.Feillant (at] EUnet.fr>
   1242 
   1243 3.1.9		8/3/97 - Released
   1244 
   1245 fixed incorrect lookup of active NAT entries.
   1246 
   1247 patch for ip_deq() wrong for pre 2.1.6 FreeBSD.
   1248 fyeung (at] fyeung8.netific.com (Francis Yeung)
   1249 
   1250 check for out with return-rst/return-icmp at wrong place - Erkki Ritoniemi
   1251 (erkki (at] vlsi.fi)
   1252 
   1253 text_readip returns the interface pointer pointing to text on stack -
   1254 Neil Readwin
   1255 
   1256 fix from Pradeep Krishnan for printout rules "with not opt sec".
   1257 
   1258 3.1.8		18/2/97 - Released
   1259 
   1260 Diffs for ip_output.c and ip_input.c updated to fix bug with fastroute and
   1261 compiling warnings about reuse of m0.
   1262 
   1263 prevent use of return-rst and return-icmp with rules blocking packets going
   1264 out, preventing panics in certain situations.
   1265 
   1266 loop forms in frag cache table - Yury Pshenychny <yura (at] rd.zgik.zaporizhzhe.ua>
   1267 
   1268 should use SPLNET/SPLX around expire routines in NAT/frag/state code.
   1269 
   1270 redeclared malloc in 44arp.c -
   1271 
   1272 3.1.7		8/2/97 - Released
   1273 
   1274 Macros used for ntohs/htons supplied with gcc don't always work very well
   1275 when the assignment is the same variable being converted.
   1276 
   1277 Filter matching doesn't not match rule which checks tcp flags on packets
   1278 which are fragments - David Wilson
   1279 
   1280 3.1.7beta	30/1/97 - Released
   1281 
   1282 Fix up NAT bugs introduced in last major change (now tested), including
   1283 nat_delete(), nat_lookupredir(), checksum changes, etc.
   1284 
   1285 3.1.7alpha	30/1/97 - Released
   1286 
   1287 Many changes to NAT code, including contributions from Laurent Joncheray
   1288 <lpj (at] ans.net>
   1289 
   1290 Use "NO_SLEEP" when allocating memory under SunOS.
   1291 
   1292 Make kernel printf's nicer for BSD/SunOS4
   1293 
   1294 Always do a checksum for packets being filtered going out and being
   1295 processed by fastroute.
   1296 
   1297 Leave kernel to play with cdevsw on *BSD systems with LKM's.
   1298 
   1299 ipnat.1 man page fixes.
   1300 
   1301 3.1.6		21/1/97 - Released
   1302 
   1303 Allow NAT to work on BSD systems in conjunction with "pass .. to ifname"
   1304 
   1305 Memory leak introduced in 3.1.3 in NAT lists, clearing of NAT table tried
   1306 to free memory twice.
   1307 
   1308 NAT recalculates IP header checksum based on difference between IP#'s and
   1309 port numbers - should be just IP#'s (Solaris2 only)
   1310 
   1311 3.1.5		13/1/97 - Released
   1312 
   1313 fixed setting of NAT timeouts and use different timeouts for concurrent
   1314 TCP sessions using the same IP# mapping (when port mapping isn't used)
   1315 
   1316 multiple loading/unloading of LKM's doesn't clean up cdevsw properly for
   1317 *BSD systems.
   1318 
   1319 3.1.4		10/1/97	- Released
   1320 
   1321 add command line options -C and -F to ipnat to flush NAT list and table
   1322 
   1323 ipnat -l loops on output - Neil Readwin (nreadwin (at] nysales.micrognosis.com)
   1324 
   1325 NetBSD/FreeBSD kernel malloc changes - Daniel Carosone
   1326 
   1327 3.1.3		10/1/97 - Released
   1328 
   1329 NAT chains not constructed correctly in hash tables - Antony Y.R Lu
   1330 (antony (at] hawk.ee.ncku.edu.tw)
   1331 
   1332 Updated INSTALL.NetBSD, INSTALL.FreeBSD and INSTALL.Sol2
   1333 
   1334 man page update (ipf.5) from Daniel Carosone (dan (at] geek.com.au)
   1335 
   1336 ICMP header checksum update now included in NAT.
   1337 
   1338 Solaris2 needs to modify IP header checksums in ip_natin and ip_natout.
   1339 
   1340 3.1.2		4/12/96 - Released
   1341 
   1342 ipmon doesn't use syslog all the time when given -s option
   1343 
   1344 fixed mclput panic in ip_input.c and replace ntohs() with NTOHS() macro
   1345 
   1346 check the results of hostname resolution in ipnat
   1347 
   1348 "make *install" fixed for subdirectories.
   1349 
   1350 problems with "ARCH:=" and gnu make resolved
   1351 
   1352 parser reports an error for lines with whitespaces only rather than skipping
   1353 them. D.Carosone (at] abm.com.au (Daniel Carosone)
   1354 
   1355 patches for integration into NetBSD-current (post 1.2).
   1356 
   1357 add an option to allow non-IP packets going up/down the stream on Solaris2
   1358 to be dropped. John Bass.
   1359 
   1360 3.1.2beta	21/11/96 - Released
   1361 
   1362 make ipsend compile on Linux 2.0.24
   1363 
   1364 changes to TCP kept state algorithm, making it watch state on TCP
   1365 connections in both directions.  Also use the same algorithm for NAT TCP.
   1366 
   1367 -Wall cleanup - Bernd Ernesti
   1368 
   1369 added "or-block" for "pass .. log or-block" after a suggestion from
   1370 David Oppenheim (davido (at] optimation.com.au)
   1371 
   1372 added subdirectories for building IP Filter in SunOS5/BSD for different
   1373 cpu architecures
   1374 
   1375 Solaris2 fixes to logging and pre-filtering packet processing - 3.1.1p2
   1376 
   1377 mbuf logging not using mtod(), remove iplbusy - 3.1.1p1		1/11/96
   1378 
   1379 3.1.1		28/10/96 - Released
   1380 
   1381 Installation script fixes and deinstall scripts for IP Filter on:
   1382 SunOS4/FreeBSD/NetBSD
   1383 
   1384 Man page fixes - Paul Dubois (dubois (at] primate.wisc.edu)
   1385 
   1386 Fix use of SOLARIS macro in ipmon, rewrote ipllog() (again!)
   1387 
   1388 parsing isn't completely case insensitive - David Wilson
   1389 (davidw (at] optimation.com.au)
   1390 
   1391 Release ipl_mutex across uiomove() calls
   1392 
   1393 print entire rule entries out for "ipf -z" when zero'ing per-rule stats.
   1394 
   1395 ipfstat returns same output for "hits" in "ipfstat -aio" - Terletsky Slavik
   1396 (ts (at] polynet.lviv.ua)
   1397 
   1398 New algorithm for setting timeouts for TCP connection (more closely follow
   1399 TCP FSM) - Pradeep Krishnan (pkrishna (at] netcom.com)
   1400 
   1401 Track both window sizes for TCP connections through "keep state".
   1402 
   1403 Solaris2 doesn't like _KERNEL defined in stdargs.h - Jos van Wezel
   1404 (wezel (at] bio.vu.nl)
   1405 
   1406 3.1.1-beta2	6/10/96 - Released
   1407 
   1408 Solaris2 fastroute/dup-to/to now works
   1409 
   1410 ipmon `record' reading rewritten
   1411 
   1412 Added post-NetBSD1.2 packet filter patches - Mathew Green (mrg (at] eterna.com.au)
   1413 
   1414 Attempt to use in_proto.c.diff, not "..diffs" for SunOS4 - David Wilson
   1415 (davidw (at] optimation.com.au)
   1416 
   1417 Michael Ryan (mike (at] NetworX.ie) reports the following:
   1418 * The Trumpet WinSock under Windows always sends its SYN packet with an ACK
   1419   value of 1, unlike any other implementation I've seen, which would set it
   1420   to zero.  The "keep state" feature of IP Filter doesn't work when receiving
   1421   non-zero ACK values on new connection requests.
   1422 * */Makefile install rule doesn't install all the binaries/man pages
   1423 * Make ipnat use "tcp/udp" instead of "tcpudp"
   1424 * Print out "tcp/udp" properly
   1425 * ipnat "portmap tcp" matches "portmap udp" when adding/removing
   1426 * NAT dest. ip# increased by one on mask of 0xffffffff when it shouldn't
   1427 
   1428 3.1.1-beta	1/9/96 - Released
   1429 
   1430 add better detection of TCP connections closing to TCP state monitoring.
   1431 
   1432 fr_addstate() not called correctly for fragments.  "keep state" and
   1433 "keep frag" code don't work together 100% - Songqing Cai
   1434 (songqing_cai (at] sterling.com)
   1435 
   1436 call to fr_addstate() incorrect for adding state in combination with keeping
   1437 fragment information - Songqing Cai (songqing_cai (at] sterling.com)
   1438 
   1439 KFREE() passed fp (incorrect) and not fr (correct) in ip_frag.c - John Hood
   1440 (cgull (at] smoke.marlboro.vt.us)
   1441 
   1442 make ipf parser recognise '\\' as a `continued line' marker - Dima Ruban
   1443 (dima@best.net)
   1444 
   1445 3.1.1-alpha	23/8/96 - Released
   1446 
   1447 kernel panic's when ICMP packets go through NAT code
   1448 
   1449 stats aren't zero'd properly with ipf -Z
   1450 
   1451 ipnat doesn't show port numbers correctly all the time and also add the
   1452 protocol (tcp/udp/tcpudp) to rdr output - Carson Gaspar (carson@lehman.com)
   1453 
   1454 fast checksum fixing not 100% - backout patch - Bill Dorsey (dorsey@lila.com)
   1455 
   1456 NetBSD-1.2 patches from - VaX#n8 <vax (at] linkdead.paranoia.com>
   1457 
   1458 Usage() call error in fils.c - Ajay Shekhawat (ajay@cedar.buffalo.edu)
   1459 
   1460 ip_optcopy() staticly defined in ip_output.c in SunOS4 - Nick Hall
   1461 (nrh@tardis.ed.ac.uk)
   1462 
   1463 3.1.0		7/7/96 - Released
   1464 
   1465 Reformatted ipnat output to be compatible with it's input, so that
   1466 "ipnat -l | ipnat -rf -" is possible.
   1467 
   1468 3.1.0beta	30/6/96 - Released
   1469 
   1470 NetBSD-1.2 patches from Greg Woods (woods (at] most.weird.com)
   1471 
   1472 kernel module must not be installed stripped (Solaris2), as created by
   1473 "make package" for Solaris2 - Peter Heimann
   1474 (peter (at] i3.informatik.rwth-aachen.de)
   1475 
   1476 3.1.0alpha	5/6/96 - Released
   1477 
   1478 include examples in package for solaris2
   1479 
   1480 patches for removing an extra ip header checksum (FreeBSD/NetBSD/SunOS)
   1481 
   1482 removed trailing space from printouts of rules in ipf.
   1483 
   1484 ipresend supports the same range of inputs that ipftest does.
   1485 
   1486 sending a duplicate copy of a packet to another network devices is now
   1487 supported. ("dup-to")
   1488 
   1489 sending a packet to an arbitary interface is now supported, irrespective
   1490 of its actual route, with no ttl decrement.  Can also be routed without
   1491 the ttl being decremented. ("to" and "fastroute").
   1492 
   1493 "call" option added to support calling a generic function if a packet is
   1494 matched.
   1495 
   1496 show all (upto 4) recorded bytes from the interface name in logging from
   1497 ipmon.
   1498 
   1499 support for using unix file permissions for read/write access on the device
   1500 is now in place.
   1501 
   1502 recursive mutex in nat_new() for Solaris 2.x - Per L. Hagen <per (at] stibo.dk>
   1503 
   1504 ipftest doesn't call initparse() for THISHOST - Catherine Allen
   1505 (cla@connect.com.au)
   1506 
   1507 Man page corrections from Rex Bona (rex@pengo.comsmiths.com.au)
   1508 
   1509 3.0.4		10/4/96 - Released
   1510 
   1511 looop in `parsing' IP packets with optlen 0 for ip options.
   1512 
   1513 rule number not initialized and resulted in unexpected results for state
   1514 maching.
   1515 
   1516 option parsing and printing bugs - Pradeep Krishnan
   1517 
   1518 3.0.4beta	25/3/96	- Released
   1519 
   1520 wouldn't parse "keep flags keep state" correctly.
   1521 
   1522 SunOS4.1.x ip_input.c doesn't recognise all 1s broadcast address - Nigel Verdon
   1523 
   1524 patches for BSDI's BSD/OS 2.1 and libpcap reader on little endian systems
   1525 from Thorsten Lockert <tholo (at] tetherless.com>
   1526 
   1527 b* functions in fil.c on Solaris 2.4
   1528 
   1529 3.0.3	17/3/96 - Released
   1530 
   1531 added patches to support IP Filter initialisation when compiled into the
   1532 kernel.
   1533 
   1534 added -x option to ipmon to display hex dumps of logged packets.
   1535 
   1536 added -H option to ipftest to allow ascii-hex formatted input to specify
   1537 arbitary IP packets.
   1538 
   1539 Sending TCP RSTs as a response now work for Solaris2 x86
   1540 
   1541 add patches to make IP Filter compile into NetBSD kernels properly.
   1542 
   1543 patch to stop SunOS 4.1.x kernels panicing with "data traps".
   1544 
   1545 ipfboot script unloads and reloads ipf module on Solaris2 if it is already
   1546 loaded into the kernel.
   1547 
   1548 Installation of IP Filter as a Solaris2 package is now supported.
   1549 
   1550 Man pages for ipnat.4, ipnat.5 added.
   1551 
   1552 added some more regression tests and fixed up IP Filter to pass the new tests
   1553 (previous versions failed some of the tests in set 12).
   1554 
   1555 IP option filter processing has changed so that saying "with opt lsrr" will
   1556 check only for that one, but not mask out other options, so a packet with
   1557 strict source routing, along with loose source routing will match all of
   1558 "with opt lsrr", "with opt ssrr" and "with opt lsrr,ssrr".
   1559 
   1560 IPL_NAME needed in ipnat.c - Kelly (kelly (at] count04.mry.scruznet.com)
   1561 
   1562 patches for clean NetBSD compilation from Bernd Ernesti (bernd (at] arresum.inka.de)
   1563 
   1564 make install is incorrect - Julian Briggs (julian (at] lightwork.co.uk)
   1565 
   1566 strtol() returns 0x7fffffff for all negative numbers,
   1567 printfr() generates incorrect output for "opt sec-class *",
   1568 handling of "not opt xxx opt yyy" incorrect.
   1569 - Minh Tonthat (minht (at] sbei.com)/Pradeep Krishnan (pradeepk (at] sbei.com)
   1570 
   1571 m_pullup() called only for input and not output; caused problems
   1572 with filtering icmp - Nigel Verdon (verdenn (at] gb.swissbank.com)
   1573 
   1574 parsing problem for "port 1" and NetBSD patches incorrect -
   1575 Andreas Gustafsson (gson (at] guava.araneus.fi)
   1576 
   1577 3.0.2	4/2/96 - Released
   1578 
   1579 Corrected bug where NAT recalculates checksums for fragments.
   1580 
   1581 make NAT recalculate UDP checksums (rather than setting them to 0),
   1582 if they're non-zero.
   1583 
   1584 DNS patches - Real Page (Real.Page (at] Matrox.com)
   1585 
   1586 alteration of checksum recalculations in NAT code and addition of
   1587 redirection with NAT - Mike Neuman
   1588 
   1589 core dump, if tcp/udp is used with a port number and not service name,
   1590 in ipf - Mike Neuman (mcn (at] engarde.com)
   1591 
   1592 initparse() call, missing to prime "<thishost>" hook - Craig Bishop
   1593 
   1594 3.0.1	14/1/96 - Released
   1595 
   1596 miscellaneous patches for Solaris2
   1597 
   1598 3.0	14/1/96	- Released
   1599 
   1600 Patch included for FDDI, from Richard Ohnemus
   1601 (Richard_Ohnemus (at] dallas.csd.sterling.com)
   1602 
   1603 Code cleanup for release.
   1604 
   1605 3.0beta4 10/1/96
   1606 
   1607 recursive mutex in ipfr_slowtimer fixed, reported by Craig Bishop
   1608 
   1609 recursive mutex in sending TCP RSTs fixed, reported by Tony Becker
   1610 
   1611 3.0beta3 9/1/96
   1612 
   1613 FIxup for Solaris2.5 install and interface name bug in ipftest from
   1614 Julian Briggs (julian (at] lightwork.co.uk)
   1615 
   1616 Byte order patches for ipmon from Tony Becker (tony (at] mcrsys.com)
   1617 
   1618 3.0beta2 7/1/96
   1619 
   1620 Added the (somewhat warped) IP accounting as it exists in ipfw on FreeBSD.
   1621 Note, this isn't really what one would call IP account, when compared to
   1622 process accounting, sigh.
   1623 
   1624 Split up ipresend into iptest/ipresend/ipsend
   1625 
   1626 Added another m_pullup() inside fr_check() for BSD style kernels and
   1627 added some checks to ipllog() to not log more than is present (for short
   1628 packets).
   1629 
   1630 Fixed bug where failed hostname/netname resolution goes undetecte and
   1631 becomes 0.0.0.0 (any) (reported Guido van Rooij)
   1632 
   1633 3.0beta	11/11/95	- Released
   1634 
   1635 Rewrote the way rule testing is done, reducing the number of files needed and
   1636 generated.
   1637 
   1638 SIOCIPFFL was incorrectly affected by IPFILTER_LOG (Mathew Green)
   1639 
   1640 Patches from Guido van Rooij to fix sending back TCP RSTs on Net-2/Net-3
   1641 BSD based Unixes (panic'd)
   1642 
   1643 Patches for FreeBSD/i86 ipmon from Riku Kalinen <riku (at] tequila.nixu.fi>
   1644 (I think someone else already told me about these but they got lost :-/)
   1645 
   1646 Changed Makefile structure to build object files for different operating
   1647 systems in separate directories by default.
   1648 
   1649 BSDI has ef0 for first ethernet interface
   1650 
   1651 Allow for a "not" operator before optional keywords.
   1652 
   1653 The "rule number" was being incorrectly incremented every time it went through
   1654 the loop rather than when it matched a rule.
   1655 
   1656 2.8.2	24/10/95	- Released
   1657 
   1658 Fixed up problems with "textip" for doing lots of testing.
   1659 
   1660 Fixed bug in detection of "short" tcp/ip packets (all reported as being short).
   1661 
   1662 Solaris 2.4 port now works 100%.
   1663 
   1664 Man page errors reported and fixed.
   1665 
   1666 Removed duplicate entry in etc/services for login on port 49 (Craig Bishop).
   1667 
   1668 Fixed ipmon output to put a space after the log-letter.
   1669 
   1670 Patch from Guido van Rooij to fix parsing problem.
   1671 
   1672 2.8.1	15/10/95	- Released
   1673 
   1674 Added ttl and tos filtering.
   1675 
   1676 Patches for fixing up compilation and port problems (little endian)
   1677 from Guido van Rooij <guido (at] IAEhv.nl>.
   1678 
   1679 Man page problems reported and fixed by Carson Gaspar <carson (at] lehman.com>.
   1680 
   1681 ipsend doesn't compile properly on Solaris2.4
   1682 
   1683 Lots of work done for Solaris2.4 to make it MT/MP safe and work.
   1684 
   1685 2.8	15/9/95		- Released
   1686 
   1687 ipmon can now send messages to syslogd (-s) and use names instead of
   1688 numbers (-N).
   1689 
   1690 IP packets are now "compiled" into a structure only containing filterable
   1691 bits.
   1692 
   1693 Added regression testing in the test/ subdirectory, using a new option
   1694 (-b) with the ipftest program.
   1695 
   1696 Added "nomatch" return to filter results.  These are counted and show
   1697 up in reports from ipfstat.
   1698 
   1699 Moved filter code out of ip_fil.c and into fil.c - there is now only one
   1700 instance of it in the package.
   1701 
   1702 Added Solaris 2.4 support.
   1703 
   1704 Added IPSO basic security option filtering.
   1705 
   1706 Added name support for filtering on all 19 named IP options.
   1707 
   1708 Patches from Ivan Brawley to log packet contents as well as packet headers.
   1709 
   1710 Update for sun/conf.c.diff from Ivan Brawley <ibrawley (at] awadi.com.AU>
   1711 
   1712 Added patches for FreeBSD 1, and added two new switches (-E, -D) to ipf,
   1713 along with a new ioctl, SIOCFRENB.
   1714 From: Dieter Dworkin Muller <dworkin (at] village.org>
   1715 
   1716 2.7.3	31/7.95		- Released
   1717 
   1718 Didn't compile cleanly without IPFILTER_LOG defined (Mathew Green).
   1719 
   1720 ipftest now deals with tcpdump3 binary output files (from libpcap) with -P.
   1721 
   1722 Brought ipftest program upto date with actual filter code.
   1723 
   1724 Filter would cause a match to occur when it wasn't meant to if the packet
   1725 had short headers and was missing portions that should have been there.
   1726 Err, it would rightly not match on them, but their absence caused a match
   1727 when it shouldn't have been.
   1728 
   1729 2.7.2	26/7/95		- Released
   1730 
   1731 Problem with filtering just SYN flagged packets reported by
   1732 Dieter Dworkin Muller <dworkin (at] village.org>.  To solve this
   1733 problem, added support for masking TCP flags for comparison "flags X/Y".
   1734 
   1735 2.7.1	9/7/95		- Released
   1736 
   1737 Added ip_dirbroadcast support for Sun ip_input.c
   1738 
   1739 Fixed up the install scripts for FreeBSD/NetBSD to recognise where they are
   1740 better.
   1741 
   1742 2.7	7/7/95		- Released
   1743 
   1744 Added "return-rst" to return TCP RST's to TCP packets.
   1745 
   1746 Actually ported it to FreeBSD-i386 2.0.0, so it works there properly now.
   1747 
   1748 Added insertion of filter rules.  Use "@<#>" at the beginning of a filter
   1749 to insert a rule at row #.
   1750 
   1751 Filter keeps track of how many times each rule is matched.
   1752 
   1753 Changed compile time things to match kernel option (IPFILTER_LKM &
   1754 IPFILTER_LOG).
   1755 
   1756 Updated ip_input.c and ip_output.c with paches for 3.5 Multicast IP.
   1757 (No change required for 3.6)
   1758 
   1759 Now includes TCP fragments which start inside the TCP header as being short.
   1760 Added counting the number of times each rule is matched.
   1761 
   1762 
   1763 2.6	11/5/95		- Released
   1764 
   1765 Added -n option to ipf: when supplied, no changes are made to the kernel.
   1766 
   1767 Added installation scripts for SunOS 4.1.x and NetBSD/FreeBSD/BSDI.
   1768 
   1769 Rewrote filtering to use a more generic mask & match procedure for
   1770 checking if a packet matches a rule.
   1771 
   1772 2.5.2	27/4/95		- Released
   1773 
   1774 "tcp/udp" and a non-initialised pointer caused the "proto" to become
   1775 a `random' value; added "ip#/dotted.mask" notation to the BNF.
   1776 From Adam W. Feigin  <feigin (at] iis.ee.ethz.ch>
   1777 
   1778 2.5.1	22/3/95		- Released
   1779 
   1780 "tcp/udp" had a strange effect (undesired) on getserv*() functions,
   1781 causing protocol/service lookups to fail.  Reported by Matthew Green.
   1782 
   1783 2.5	17/3/95		- Released
   1784 
   1785 Added a new keyword "all" to BNF and parsing of tcpdump/etherfind/snoop
   1786 output through the ipftest program.  Suggestions from:
   1787 Michael Ciavarella (mikec (at] phyto.apana.org.au)
   1788 
   1789 Conflicts occur when "general" filter rules are used for ports and the
   1790 lack of a "proto" when used with "port" matches other packets when only
   1791 TCP/UDP are implied.
   1792 Reported Matthew Green (mrg (at] fulcom.com.au);
   1793 reported & fixed 6-8/3/95
   1794 
   1795 Added filtering of short TCP packets using "with short" 28/2/95
   1796 (These can possibly slip by checks for the various flags).  Short UDP
   1797 or ICMP are dropped to the floor and logged.
   1798 
   1799 Added filtering of fragmented packets using "with frag" 24/2/95
   1800 
   1801 Port to NetBSD-current completed 20/2/95, using LKM.
   1802 
   1803 Added logging of the rule # which caused the logging to happen and the
   1804 interface on which the packet is currently as suggested by
   1805 Andreas Greulich (greulich (at] math-stat.unibe.ch) 10/2/95
   1806 
   1807 2.4	9/2/95		- Released
   1808 Fixed saving of IP headers in ICMP packets.
   1809 
   1810 2.3	29/1/95
   1811 Added ipf -F [in|out|all] to flush filter rule sets (SIOCIPFFL).
   1812 Fixed iplread() and iplsave() with help from Marc Huber.
   1813 
   1814 2.2	7/1/95		- Released
   1815 Added code from Marc Huber <huber (at] fzi.de> to allow it to allocate
   1816 its own major char number dynamically when modload'ing.  Fixed up
   1817 use of <, >, <=, >= and >< for ports.
   1818 
   1819 2.1	21/12/94	- Released
   1820 repackaged to include the correct ip_output.c and ip_input.c *goof*
   1821 
   1822 2.0	18/12/94	- Released
   1823 added code to check for port ranges - complete.
   1824 rewrote to work as a loadable kernel module - complete.
   1825 
   1826 1.1
   1827 added code for ouput filtering as well as input filtering and added support for logging to a simple character device of packet headers.
   1828 
   1829 1.0	22/04/93	- Released
   1830 First release cut.
   1831