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