head 1.16; access; symbols netbsd-10-0-RELEASE:1.16 netbsd-10-0-RC6:1.16 netbsd-10-0-RC5:1.16 netbsd-10-0-RC4:1.16 netbsd-10-0-RC3:1.16 netbsd-10-0-RC2:1.16 thorpej-ifq:1.16.0.102 thorpej-ifq-base:1.16 thorpej-altq-separation:1.16.0.100 thorpej-altq-separation-base:1.16 netbsd-10-0-RC1:1.16 netbsd-10:1.16.0.98 netbsd-10-base:1.16 bouyer-sunxi-drm:1.16.0.96 bouyer-sunxi-drm-base:1.16 netbsd-9-3-RELEASE:1.16 thorpej-i2c-spi-conf2:1.16.0.94 thorpej-i2c-spi-conf2-base:1.16 thorpej-futex2:1.16.0.92 thorpej-futex2-base:1.16 thorpej-cfargs2:1.16.0.90 thorpej-cfargs2-base:1.16 cjep_sun2x-base1:1.16 cjep_sun2x:1.16.0.88 cjep_sun2x-base:1.16 cjep_staticlib_x-base1:1.16 netbsd-9-2-RELEASE:1.16 cjep_staticlib_x:1.16.0.86 cjep_staticlib_x-base:1.16 thorpej-i2c-spi-conf:1.16.0.84 thorpej-i2c-spi-conf-base:1.16 thorpej-cfargs:1.16.0.82 thorpej-cfargs-base:1.16 thorpej-futex:1.16.0.80 thorpej-futex-base:1.16 netbsd-9-1-RELEASE:1.16 bouyer-xenpvh-base2:1.16 phil-wifi-20200421:1.16 bouyer-xenpvh-base1:1.16 phil-wifi-20200411:1.16 bouyer-xenpvh:1.16.0.78 bouyer-xenpvh-base:1.16 is-mlppp:1.16.0.76 is-mlppp-base:1.16 phil-wifi-20200406:1.16 netbsd-8-2-RELEASE:1.16 ad-namecache-base3:1.16 netbsd-9-0-RELEASE:1.16 netbsd-9-0-RC2:1.16 ad-namecache-base2:1.16 ad-namecache-base1:1.16 ad-namecache:1.16.0.74 ad-namecache-base:1.16 netbsd-9-0-RC1:1.16 phil-wifi-20191119:1.16 netbsd-9:1.16.0.72 netbsd-9-base:1.16 phil-wifi-20190609:1.16 netbsd-8-1-RELEASE:1.16 netbsd-8-1-RC1:1.16 isaki-audio2:1.16.0.70 isaki-audio2-base:1.16 pgoyette-compat-merge-20190127:1.16 pgoyette-compat-20190127:1.16 pgoyette-compat-20190118:1.16 pgoyette-compat-1226:1.16 pgoyette-compat-1126:1.16 pgoyette-compat-1020:1.16 pgoyette-compat-0930:1.16 pgoyette-compat-0906:1.16 netbsd-7-2-RELEASE:1.16 pgoyette-compat-0728:1.16 netbsd-8-0-RELEASE:1.16 phil-wifi:1.16.0.68 phil-wifi-base:1.16 pgoyette-compat-0625:1.16 netbsd-8-0-RC2:1.16 pgoyette-compat-0521:1.16 pgoyette-compat-0502:1.16 pgoyette-compat-0422:1.16 netbsd-8-0-RC1:1.16 pgoyette-compat-0415:1.16 pgoyette-compat-0407:1.16 pgoyette-compat-0330:1.16 pgoyette-compat-0322:1.16 pgoyette-compat-0315:1.16 netbsd-7-1-2-RELEASE:1.16 pgoyette-compat:1.16.0.66 pgoyette-compat-base:1.16 netbsd-7-1-1-RELEASE:1.16 tls-maxphys-base-20171202:1.16 matt-nb8-mediatek:1.16.0.64 matt-nb8-mediatek-base:1.16 nick-nhusb-base-20170825:1.16 perseant-stdc-iso10646:1.16.0.62 perseant-stdc-iso10646-base:1.16 netbsd-8:1.16.0.60 netbsd-8-base:1.16 prg-localcount2-base3:1.16 prg-localcount2-base2:1.16 prg-localcount2-base1:1.16 prg-localcount2:1.16.0.58 prg-localcount2-base:1.16 pgoyette-localcount-20170426:1.16 bouyer-socketcan-base1:1.16 jdolecek-ncq:1.16.0.56 jdolecek-ncq-base:1.16 pgoyette-localcount-20170320:1.16 netbsd-7-1:1.16.0.54 netbsd-7-1-RELEASE:1.16 netbsd-7-1-RC2:1.16 nick-nhusb-base-20170204:1.16 netbsd-7-nhusb-base-20170116:1.16 bouyer-socketcan:1.16.0.52 bouyer-socketcan-base:1.16 pgoyette-localcount-20170107:1.16 netbsd-7-1-RC1:1.16 nick-nhusb-base-20161204:1.16 pgoyette-localcount-20161104:1.16 netbsd-7-0-2-RELEASE:1.16 nick-nhusb-base-20161004:1.16 localcount-20160914:1.16 netbsd-7-nhusb:1.16.0.50 netbsd-7-nhusb-base:1.16 pgoyette-localcount-20160806:1.16 pgoyette-localcount-20160726:1.16 pgoyette-localcount:1.16.0.48 pgoyette-localcount-base:1.16 nick-nhusb-base-20160907:1.16 nick-nhusb-base-20160529:1.16 netbsd-7-0-1-RELEASE:1.16 nick-nhusb-base-20160422:1.16 nick-nhusb-base-20160319:1.16 nick-nhusb-base-20151226:1.16 netbsd-7-0:1.16.0.46 netbsd-7-0-RELEASE:1.16 nick-nhusb-base-20150921:1.16 netbsd-7-0-RC3:1.16 netbsd-7-0-RC2:1.16 netbsd-7-0-RC1:1.16 nick-nhusb-base-20150606:1.16 nick-nhusb-base-20150406:1.16 nick-nhusb:1.16.0.44 nick-nhusb-base:1.16 netbsd-5-2-3-RELEASE:1.14 netbsd-5-1-5-RELEASE:1.14 netbsd-6-0-6-RELEASE:1.16 netbsd-6-1-5-RELEASE:1.16 netbsd-7:1.16.0.42 netbsd-7-base:1.16 yamt-pagecache-base9:1.16 yamt-pagecache-tag8:1.16 netbsd-6-1-4-RELEASE:1.16 netbsd-6-0-5-RELEASE:1.16 tls-earlyentropy:1.16.0.40 tls-earlyentropy-base:1.16 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.16 riastradh-drm2-base3:1.16 netbsd-6-1-3-RELEASE:1.16 netbsd-6-0-4-RELEASE:1.16 netbsd-5-2-2-RELEASE:1.14 netbsd-5-1-4-RELEASE:1.14 netbsd-6-1-2-RELEASE:1.16 netbsd-6-0-3-RELEASE:1.16 netbsd-5-2-1-RELEASE:1.14 netbsd-5-1-3-RELEASE:1.14 rmind-smpnet-nbase:1.16 netbsd-6-1-1-RELEASE:1.16 riastradh-drm2-base2:1.16 riastradh-drm2-base1:1.16 riastradh-drm2:1.16.0.38 riastradh-drm2-base:1.16 rmind-smpnet:1.16.0.30 rmind-smpnet-base:1.16 netbsd-6-1:1.16.0.36 netbsd-6-0-2-RELEASE:1.16 netbsd-6-1-RELEASE:1.16 khorben-n900:1.16.0.34 netbsd-6-1-RC4:1.16 netbsd-6-1-RC3:1.16 agc-symver:1.16.0.32 agc-symver-base:1.16 netbsd-6-1-RC2:1.16 netbsd-6-1-RC1:1.16 yamt-pagecache-base8:1.16 netbsd-5-2:1.14.0.30 netbsd-6-0-1-RELEASE:1.16 yamt-pagecache-base7:1.16 netbsd-5-2-RELEASE:1.14 netbsd-5-2-RC1:1.14 matt-nb6-plus-nbase:1.16 yamt-pagecache-base6:1.16 netbsd-6-0:1.16.0.28 netbsd-6-0-RELEASE:1.16 netbsd-6-0-RC2:1.16 tls-maxphys:1.16.0.26 tls-maxphys-base:1.16 matt-nb6-plus:1.16.0.24 matt-nb6-plus-base:1.16 netbsd-6-0-RC1:1.16 jmcneill-usbmp-base10:1.16 yamt-pagecache-base5:1.16 jmcneill-usbmp-base9:1.16 yamt-pagecache-base4:1.16 jmcneill-usbmp-base8:1.16 jmcneill-usbmp-base7:1.16 jmcneill-usbmp-base6:1.16 jmcneill-usbmp-base5:1.16 jmcneill-usbmp-base4:1.16 jmcneill-usbmp-base3:1.16 jmcneill-usbmp-pre-base2:1.16 jmcneill-usbmp-base2:1.16 netbsd-6:1.16.0.22 netbsd-6-base:1.16 netbsd-5-1-2-RELEASE:1.14 netbsd-5-1-1-RELEASE:1.14 jmcneill-usbmp:1.16.0.20 jmcneill-usbmp-base:1.16 jmcneill-audiomp3:1.16.0.18 jmcneill-audiomp3-base:1.16 yamt-pagecache-base3:1.16 yamt-pagecache-base2:1.16 yamt-pagecache:1.16.0.16 yamt-pagecache-base:1.16 rmind-uvmplock-nbase:1.16 cherry-xenmp:1.16.0.14 cherry-xenmp-base:1.16 bouyer-quota2-nbase:1.16 bouyer-quota2:1.16.0.12 bouyer-quota2-base:1.16 jruoho-x86intr:1.16.0.10 jruoho-x86intr-base:1.16 matt-mips64-premerge-20101231:1.16 matt-nb5-mips64-premerge-20101231:1.14 matt-nb5-pq3:1.14.0.28 matt-nb5-pq3-base:1.14 netbsd-5-1:1.14.0.26 netbsd-5-1-RELEASE:1.14 uebayasi-xip-base4:1.16 uebayasi-xip-base3:1.16 yamt-nfs-mp-base11:1.16 netbsd-5-1-RC4:1.14 matt-nb5-mips64-k15:1.14 uebayasi-xip-base2:1.16 yamt-nfs-mp-base10:1.16 netbsd-5-1-RC3:1.14 netbsd-5-1-RC2:1.14 uebayasi-xip-base1:1.16 netbsd-5-1-RC1:1.14 rmind-uvmplock:1.16.0.8 rmind-uvmplock-base:1.16 yamt-nfs-mp-base9:1.16 uebayasi-xip:1.16.0.6 uebayasi-xip-base:1.16 netbsd-5-0-2-RELEASE:1.14 matt-nb5-mips64-premerge-20091211:1.14 matt-premerge-20091211:1.16 yamt-nfs-mp-base8:1.16 matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.14 matt-nb4-mips64-k7-u2a-k9b:1.14 matt-nb5-mips64-u1-k1-k5:1.14 yamt-nfs-mp-base7:1.16 matt-nb5-mips64:1.14.0.24 netbsd-5-0-1-RELEASE:1.14 jymxensuspend-base:1.16 yamt-nfs-mp-base6:1.16 yamt-nfs-mp-base5:1.16 yamt-nfs-mp-base4:1.16 jym-xensuspend-nbase:1.16 yamt-nfs-mp-base3:1.16 nick-hppapmap-base4:1.16 nick-hppapmap-base3:1.16 netbsd-5-0:1.14.0.22 netbsd-5-0-RELEASE:1.14 netbsd-5-0-RC4:1.14 netbsd-5-0-RC3:1.14 nick-hppapmap-base2:1.16 netbsd-5-0-RC2:1.14 jym-xensuspend:1.16.0.4 jym-xensuspend-base:1.16 netbsd-5-0-RC1:1.14 haad-dm-base2:1.16 haad-nbase2:1.16 ad-audiomp2:1.16.0.2 ad-audiomp2-base:1.16 netbsd-5:1.14.0.20 netbsd-5-base:1.14 nick-hppapmap:1.14.0.18 nick-hppapmap-base:1.16 matt-mips64-base2:1.14 matt-mips64:1.13.0.66 haad-dm-base1:1.14 wrstuden-revivesa-base-4:1.14 netbsd-4-0-1-RELEASE:1.13 wrstuden-revivesa-base-3:1.14 wrstuden-revivesa-base-2:1.14 wrstuden-fixsa-newbase:1.13 nick-csl-alignment-base5:1.13 haad-dm:1.14.0.16 haad-dm-base:1.16 wrstuden-revivesa-base-1:1.14 simonb-wapbl-nbase:1.14 yamt-pf42-base4:1.14 simonb-wapbl:1.14.0.14 simonb-wapbl-base:1.14 yamt-pf42-base3:1.14 hpcarm-cleanup-nbase:1.14 yamt-pf42-baseX:1.14 yamt-pf42-base2:1.14 yamt-nfs-mp-base2:1.14 wrstuden-revivesa:1.14.0.12 wrstuden-revivesa-base:1.14 yamt-nfs-mp:1.14.0.10 yamt-nfs-mp-base:1.14 yamt-pf42:1.14.0.8 yamt-pf42-base:1.14 ad-socklock-base1:1.14 yamt-lazymbuf-base15:1.14 yamt-lazymbuf-base14:1.14 keiichi-mipv6-nbase:1.14 mjf-devfs2:1.14.0.6 mjf-devfs2-base:1.16 nick-net80211-sync:1.14.0.4 nick-net80211-sync-base:1.14 keiichi-mipv6:1.14.0.2 keiichi-mipv6-base:1.14 bouyer-xeni386-merge1:1.13 matt-armv6-prevmlocking:1.13 wrstuden-fixsa-base-1:1.13 vmlocking2-base3:1.13 netbsd-4-0:1.13.0.64 netbsd-4-0-RELEASE:1.13 bouyer-xeni386-nbase:1.13 yamt-kmem-base3:1.13 cube-autoconf:1.13.0.62 cube-autoconf-base:1.13 yamt-kmem-base2:1.13 bouyer-xeni386:1.13.0.60 bouyer-xeni386-base:1.13 yamt-kmem:1.13.0.58 yamt-kmem-base:1.13 vmlocking2-base2:1.13 reinoud-bufcleanup-nbase:1.13 vmlocking2:1.13.0.56 vmlocking2-base1:1.13 netbsd-4-0-RC5:1.13 matt-nb4-arm:1.13.0.54 matt-nb4-arm-base:1.13 matt-armv6-nbase:1.14 jmcneill-base:1.13 netbsd-4-0-RC4:1.13 mjf-devfs:1.13.0.52 mjf-devfs-base:1.13 bouyer-xenamd64-base2:1.13 vmlocking-nbase:1.13 yamt-x86pmap-base4:1.13 bouyer-xenamd64:1.13.0.50 bouyer-xenamd64-base:1.13 netbsd-4-0-RC3:1.13 yamt-x86pmap-base3:1.13 yamt-x86pmap-base2:1.13 netbsd-4-0-RC2:1.13 yamt-x86pmap:1.13.0.48 yamt-x86pmap-base:1.13 netbsd-4-0-RC1:1.13 matt-armv6:1.13.0.46 matt-armv6-base:1.13 matt-mips64-base:1.13 jmcneill-pm:1.13.0.44 jmcneill-pm-base:1.13 hpcarm-cleanup:1.13.0.42 hpcarm-cleanup-base:1.14 nick-csl-alignment:1.13.0.40 nick-csl-alignment-base:1.13 netbsd-3-1-1-RELEASE:1.11 netbsd-3-0-3-RELEASE:1.11 yamt-idlelwp-base8:1.13 wrstuden-fixsa:1.13.0.38 wrstuden-fixsa-base:1.13 thorpej-atomic:1.13.0.36 thorpej-atomic-base:1.13 reinoud-bufcleanup:1.13.0.34 reinoud-bufcleanup-base:1.13 mjf-ufs-trans:1.13.0.32 mjf-ufs-trans-base:1.13 vmlocking:1.13.0.30 vmlocking-base:1.13 ad-audiomp:1.13.0.28 ad-audiomp-base:1.13 yamt-idlelwp:1.13.0.26 post-newlock2-merge:1.13 newlock2-nbase:1.13 yamt-splraiseipl-base5:1.13 yamt-splraiseipl-base4:1.13 yamt-splraiseipl-base3:1.13 abandoned-netbsd-4-base:1.13 abandoned-netbsd-4:1.13.0.18 netbsd-3-1:1.11.0.14 netbsd-3-1-RELEASE:1.11 netbsd-3-0-2-RELEASE:1.11 yamt-splraiseipl-base2:1.13 netbsd-3-1-RC4:1.11 yamt-splraiseipl:1.13.0.22 yamt-splraiseipl-base:1.13 netbsd-3-1-RC3:1.11 yamt-pdpolicy-base9:1.13 newlock2:1.13.0.20 newlock2-base:1.13 yamt-pdpolicy-base8:1.13 netbsd-3-1-RC2:1.11 netbsd-3-1-RC1:1.11 yamt-pdpolicy-base7:1.13 netbsd-4:1.13.0.24 netbsd-4-base:1.13 yamt-pdpolicy-base6:1.13 chap-midi-nbase:1.13 netbsd-3-0-1-RELEASE:1.11 gdamore-uart:1.13.0.16 gdamore-uart-base:1.13 simonb-timcounters-final:1.13 yamt-pdpolicy-base5:1.13 chap-midi:1.13.0.14 chap-midi-base:1.13 yamt-pdpolicy-base4:1.13 yamt-pdpolicy-base3:1.13 peter-altq-base:1.13 peter-altq:1.13.0.12 yamt-pdpolicy-base2:1.13 elad-kernelauth-base:1.13 elad-kernelauth:1.13.0.10 yamt-pdpolicy:1.13.0.8 yamt-pdpolicy-base:1.13 yamt-uio_vmspace-base5:1.13 simonb-timecounters:1.13.0.6 simonb-timecounters-base:1.13 rpaulo-netinet-merge-pcb:1.13.0.4 rpaulo-netinet-merge-pcb-base:1.13 yamt-uio_vmspace:1.13.0.2 netbsd-3-0:1.11.0.12 netbsd-3-0-RELEASE:1.11 netbsd-3-0-RC6:1.11 yamt-readahead-base3:1.11 netbsd-3-0-RC5:1.11 netbsd-3-0-RC4:1.11 netbsd-3-0-RC3:1.11 yamt-readahead-base2:1.11 netbsd-3-0-RC2:1.11 yamt-readahead-pervnode:1.11 yamt-readahead-perfile:1.11 yamt-readahead:1.11.0.10 yamt-readahead-base:1.11 netbsd-3-0-RC1:1.11 yamt-vop-base3:1.11 netbsd-2-0-3-RELEASE:1.10 netbsd-2-1:1.10.0.14 yamt-vop-base2:1.11 thorpej-vnode-attr:1.11.0.8 thorpej-vnode-attr-base:1.11 netbsd-2-1-RELEASE:1.10 yamt-vop:1.11.0.6 yamt-vop-base:1.11 netbsd-2-1-RC6:1.10 netbsd-2-1-RC5:1.10 netbsd-2-1-RC4:1.10 netbsd-2-1-RC3:1.10 netbsd-2-1-RC2:1.10 netbsd-2-1-RC1:1.10 yamt-lazymbuf:1.11.0.4 yamt-km-base4:1.11 netbsd-2-0-2-RELEASE:1.10 yamt-km-base3:1.11 netbsd-3:1.11.0.2 netbsd-3-base:1.11 yamt-km-base2:1.10 yamt-km:1.10.0.10 yamt-km-base:1.10 kent-audio2:1.10.0.8 kent-audio2-base:1.11 netbsd-2-0-1-RELEASE:1.10 kent-audio1-beforemerge:1.10 netbsd-2:1.10.0.6 netbsd-2-base:1.10 kent-audio1:1.10.0.4 kent-audio1-base:1.10 netbsd-2-0-RELEASE:1.10 netbsd-2-0-RC5:1.10 netbsd-2-0-RC4:1.10 netbsd-2-0-RC3:1.10 netbsd-2-0-RC2:1.10 netbsd-2-0-RC1:1.10 netbsd-2-0:1.10.0.2 netbsd-2-0-base:1.10 netbsd-1-6-PATCH002-RELEASE:1.5 netbsd-1-6-PATCH002:1.5 netbsd-1-6-PATCH002-RC4:1.5 netbsd-1-6-PATCH002-RC3:1.5 netbsd-1-6-PATCH002-RC2:1.5 netbsd-1-6-PATCH002-RC1:1.5 ktrace-lwp:1.9.0.2 ktrace-lwp-base:1.12 netbsd-1-6-PATCH001:1.5 netbsd-1-6-PATCH001-RELEASE:1.5 netbsd-1-6-PATCH001-RC3:1.5 netbsd-1-6-PATCH001-RC2:1.5 netbsd-1-6-PATCH001-RC1:1.5 nathanw_sa_end:1.5.2.3 nathanw_sa_before_merge:1.8 fvdl_fs64_base:1.8 gmcgarry_ctxsw:1.8.0.4 gmcgarry_ctxsw_base:1.8 gmcgarry_ucred:1.8.0.2 gmcgarry_ucred_base:1.8 nathanw_sa_base:1.8 kqueue-aftermerge:1.8 kqueue-beforemerge:1.8 netbsd-1-6-RELEASE:1.5 netbsd-1-6-RC3:1.5 netbsd-1-6-RC2:1.5 netbsd-1-6-RC1:1.5 netbsd-1-6:1.5.0.18 netbsd-1-6-base:1.5 gehenna-devsw:1.5.0.16 gehenna-devsw-base:1.7 netbsd-1-5-PATCH003:1.4 eeh-devprop:1.5.0.14 eeh-devprop-base:1.5 newlock:1.5.0.12 newlock-base:1.5 ifpoll-base:1.5 thorpej-mips-cache:1.5.0.8 thorpej-mips-cache-base:1.5 thorpej-devvp-base3:1.5 thorpej-devvp-base2:1.5 post-chs-ubcperf:1.5 pre-chs-ubcperf:1.5 thorpej-devvp:1.5.0.6 thorpej-devvp-base:1.5 netbsd-1-5-PATCH002:1.4 kqueue:1.5.0.4 kqueue-base:1.8 netbsd-1-5-PATCH001:1.4 thorpej_scsipi_beforemerge:1.5 nathanw_sa:1.5.0.2 thorpej_scsipi_nbase:1.5 netbsd-1-5-RELEASE:1.4 netbsd-1-5-BETA2:1.4 netbsd-1-5-BETA:1.4 netbsd-1-4-PATCH003:1.4 netbsd-1-5-ALPHA2:1.4 netbsd-1-5:1.4.0.24 netbsd-1-5-base:1.4 minoura-xpg4dl-base:1.4 minoura-xpg4dl:1.4.0.22 netbsd-1-4-PATCH002:1.4 chs-ubc2-newbase:1.4 wrstuden-devbsize-19991221:1.4 wrstuden-devbsize:1.4.0.20 wrstuden-devbsize-base:1.4 kame_141_19991130:1.4 comdex-fall-1999:1.4.0.18 comdex-fall-1999-base:1.4 fvdl-softdep:1.4.0.16 fvdl-softdep-base:1.4 thorpej_scsipi:1.4.0.14 thorpej_scsipi_base:1.5 netbsd-1-4-PATCH001:1.4 kame_14_19990705:1.4 kame_14_19990628:1.4 kame:1.4.0.12 chs-ubc2:1.4.0.10 chs-ubc2-base:1.4 netbsd-1-4-RELEASE:1.4 netbsd-1-4:1.4.0.8 netbsd-1-4-base:1.4 netbsd-1-3-PATCH003:1.3 netbsd-1-3-PATCH003-CANDIDATE2:1.3 kenh-if-detach:1.4.0.6 kenh-if-detach-base:1.4 netbsd-1-3-PATCH003-CANDIDATE1:1.3 netbsd-1-3-PATCH003-CANDIDATE0:1.3 chs-ubc:1.4.0.4 chs-ubc-base:1.4 eeh-paddr_t:1.4.0.2 eeh-paddr_t-base:1.4 netbsd-1-3-PATCH002:1.3 netbsd-1-3-PATCH001:1.3 netbsd-1-3-RELEASE:1.3 netbsd-1-3-BETA:1.3 netbsd-1-3:1.3.0.8 netbsd-1-3-base:1.3 thorpej-signal:1.3.0.6 thorpej-signal-base:1.3 marc-pcmcia:1.3.0.4 marc-pcmcia-bp:1.3 marc-pcmcia-base:1.3 bouyer-scsipi:1.3.0.2 is-newarp-before-merge:1.3 netbsd-1-2-PATCH001:1.2 mrg-vm-swap:1.2.0.8 is-newarp:1.2.0.6 is-newarp-base:1.2 thorpej-setroot:1.2.0.2 netbsd-1-2-RELEASE:1.2 netbsd-1-2-BETA:1.2 netbsd-1-2:1.2.0.4 netbsd-1-2-base:1.2 date-03-may-96:1.1.1.1 netbsd:1.1.1 netbsd-1-1-PATCH001:1.1 netbsd-1-1-RELEASE:1.1 netbsd-1-1:1.1.0.2 netbsd-1-1-base:1.1; locks; strict; comment @ * @; 1.16 date 2008.11.29.23.15.20; author cube; state Exp; branches; next 1.15; 1.15 date 2008.11.25.02.40.36; author cube; state Exp; branches; next 1.14; 1.14 date 2008.02.20.17.05.53; author matt; state Exp; branches 1.14.6.1 1.14.10.1 1.14.16.1 1.14.18.1; next 1.13; 1.13 date 2005.12.11.23.05.25; author thorpej; state Exp; branches 1.13.46.1; next 1.12; 1.12 date 2005.12.10.23.21.39; author elad; state Exp; branches; next 1.11; 1.11 date 2005.02.20.10.22.26; author cube; state Exp; branches 1.11.4.1; next 1.10; 1.10 date 2003.07.08.07.13.52; author itojun; state Exp; branches 1.10.8.1 1.10.10.1; next 1.9; 1.9 date 2003.03.27.17.50.28; author christos; state Exp; branches 1.9.2.1; next 1.8; 1.8 date 2002.09.13.14.32.11; author itojun; state Exp; branches; next 1.7; 1.7 date 2002.07.01.22.09.34; author itojun; state Exp; branches; next 1.6; 1.6 date 2002.05.29.19.11.05; author christos; state Exp; branches; next 1.5; 1.5 date 2001.02.23.21.16.19; author christos; state Exp; branches 1.5.2.1 1.5.4.1 1.5.16.1; next 1.4; 1.4 date 98.05.02.14.34.25; author christos; state Exp; branches 1.4.14.1; next 1.3; 1.3 date 97.03.12.20.26.55; author christos; state Exp; branches; next 1.2; 1.2 date 96.03.15.02.28.07; author paulus; state Exp; branches; next 1.1; 1.1 date 95.07.04.06.28.24; author paulus; state Exp; branches; next ; 1.14.6.1 date 2009.01.17.13.29.31; author mjf; state Exp; branches; next ; 1.14.10.1 date 2009.05.04.08.14.15; author yamt; state Exp; branches; next ; 1.14.16.1 date 2008.12.13.01.15.26; author haad; state Exp; branches; next ; 1.14.18.1 date 2009.01.19.13.20.12; author skrll; state Exp; branches; next ; 1.13.46.1 date 2008.03.23.02.05.05; author matt; state Exp; branches; next ; 1.11.4.1 date 2006.06.21.15.10.27; author yamt; state Exp; branches; next 1.11.4.2; 1.11.4.2 date 2008.02.27.08.37.01; author yamt; state Exp; branches; next ; 1.10.8.1 date 2005.04.29.11.29.32; author kent; state Exp; branches; next ; 1.10.10.1 date 2005.03.19.08.36.32; author yamt; state Exp; branches; next ; 1.9.2.1 date 2004.08.03.10.54.19; author skrll; state Exp; branches; next 1.9.2.2; 1.9.2.2 date 2004.09.18.14.54.16; author skrll; state Exp; branches; next 1.9.2.3; 1.9.2.3 date 2004.09.21.13.36.41; author skrll; state Exp; branches; next 1.9.2.4; 1.9.2.4 date 2005.03.04.16.53.00; author skrll; state Exp; branches; next 1.9.2.5; 1.9.2.5 date 2005.12.11.10.29.19; author christos; state Exp; branches; next ; 1.5.2.1 date 2002.06.20.03.48.20; author nathanw; state Exp; branches; next 1.5.2.2; 1.5.2.2 date 2002.08.01.02.46.43; author nathanw; state Exp; branches; next 1.5.2.3; 1.5.2.3 date 2002.09.17.21.22.57; author nathanw; state Exp; branches; next ; 1.5.4.1 date 2002.06.23.17.50.32; author jdolecek; state Exp; branches; next 1.5.4.2; 1.5.4.2 date 2002.09.06.08.49.01; author jdolecek; state Exp; branches; next 1.5.4.3; 1.5.4.3 date 2002.10.10.18.43.49; author jdolecek; state Exp; branches; next ; 1.5.16.1 date 2002.05.30.13.52.26; author gehenna; state Exp; branches; next 1.5.16.2; 1.5.16.2 date 2002.07.15.10.36.52; author gehenna; state Exp; branches; next ; 1.4.14.1 date 2001.03.12.13.31.48; author bouyer; state Exp; branches; next ; desc @@ 1.16 log @Fix handling of ppp compressor modules, from Andrew Doran's input. - ref count each compressor - allow {un,}registration of several modules at once - une RUN_ONCE to make sure the mutex is initialised, because unfortunately built-in (and bootloader-loaded) modules init functions are run before pseudo-devices attach (reported by Nick Hudson). @ text @/* $NetBSD: ppp-comp.h,v 1.15 2008/11/25 02:40:36 cube Exp $ */ /* * ppp-comp.h - Definitions for doing PPP packet compression. * * Copyright (c) 1989-2002 Paul Mackerras. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The name(s) of the authors of this software must not be used to * endorse or promote products derived from this software without * prior written permission. * * 4. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by Paul Mackerras * ". * * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _NET_PPP_COMP_H_ #define _NET_PPP_COMP_H_ /* * The following symbols control whether we include code for * various compression methods. */ #ifndef DO_BSD_COMPRESS #define DO_BSD_COMPRESS 1 /* by default, include BSD-Compress */ #endif #ifndef DO_DEFLATE #define DO_DEFLATE 1 /* by default, include Deflate */ #endif #define DO_PREDICTOR_1 0 #define DO_PREDICTOR_2 0 /* * How many entries to make available in the compressors table */ #ifndef PPP_COMPRESSORS_MAX #define PPP_COMPRESSORS_MAX 8 #endif /* * Structure giving methods for compression/decompression. */ #ifdef PACKETPTR #include struct compressor { int compress_proto; /* CCP compression protocol number */ /* Allocate space for a compressor (transmit side) */ void *(*comp_alloc)(u_char *, int); /* Free space used by a compressor */ void (*comp_free)(void *); /* Initialize a compressor */ int (*comp_init)(void *, u_char *, int, int, int, int); /* Reset a compressor */ void (*comp_reset)(void *); /* Compress a packet */ int (*compress)(void *, PACKETPTR *, PACKETPTR, int, int); /* Return compression statistics */ void (*comp_stat)(void *, struct compstat *); /* Allocate space for a decompressor (receive side) */ void *(*decomp_alloc)(u_char *, int); /* Free space used by a decompressor */ void (*decomp_free)(void *); /* Initialize a decompressor */ int (*decomp_init)(void *, u_char *, int, int, int, int, int); /* Reset a decompressor */ void (*decomp_reset)(void *); /* Decompress a packet. */ int (*decompress)(void *, PACKETPTR, PACKETPTR *); /* Update state for an incompressible packet received */ void (*incomp)(void *, PACKETPTR); /* Return decompression statistics */ void (*decomp_stat)(void *, struct compstat *); LIST_ENTRY(compressor) comp_list; unsigned int comp_refcnt; }; #endif /* PACKETPTR */ /* * Return values for decompress routine. * We need to make these distinctions so that we can disable certain * useful functionality, namely sending a CCP reset-request as a result * of an error detected after decompression. This is to avoid infringing * a patent held by Motorola. * Don't you just lurve software patents. */ #define DECOMP_OK 0 /* everything went OK */ #define DECOMP_ERROR 1 /* error detected before decomp. */ #define DECOMP_FATALERROR 2 /* error detected after decomp. */ /* * CCP codes. */ #define CCP_CONFREQ 1 #define CCP_CONFACK 2 #define CCP_CONFNAK 3 #define CCP_CONFREJ 4 #define CCP_TERMREQ 5 #define CCP_TERMACK 6 #define CCP_RESETREQ 14 #define CCP_RESETACK 15 /* * Max # bytes for a CCP option */ #define CCP_MAX_OPTION_LENGTH 64 /* * Parts of a CCP packet. */ #define CCP_CODE(dp) ((dp)[0]) #define CCP_ID(dp) ((dp)[1]) #define CCP_LENGTH(dp) (((dp)[2] << 8) + (dp)[3]) #define CCP_HDRLEN 4 #define CCP_OPT_CODE(dp) ((dp)[0]) #define CCP_OPT_LENGTH(dp) ((dp)[1]) #define CCP_OPT_MINLEN 2 /* * Definitions for BSD-Compress. */ #define CI_BSD_COMPRESS 21 /* config. option for BSD-Compress */ #define CILEN_BSD_COMPRESS 3 /* length of config. option */ /* Macros for handling the 3rd byte of the BSD-Compress config option. */ #define BSD_NBITS(x) ((x) & 0x1F) /* number of bits requested */ #define BSD_VERSION(x) ((x) >> 5) /* version of option format */ #define BSD_CURRENT_VERSION 1 /* current version number */ #define BSD_MAKE_OPT(v, n) (((v) << 5) | (n)) #define BSD_MIN_BITS 9 /* smallest code size supported */ #define BSD_MAX_BITS 15 /* largest code size supported */ /* * Definitions for Deflate. */ #define CI_DEFLATE 26 /* config option for Deflate */ #define CI_DEFLATE_DRAFT 24 /* value used in original draft RFC */ #define CILEN_DEFLATE 4 /* length of its config option */ #define DEFLATE_MIN_SIZE 8 #define DEFLATE_MAX_SIZE 15 #define DEFLATE_METHOD_VAL 8 #define DEFLATE_SIZE(x) (((x) >> 4) + DEFLATE_MIN_SIZE) #define DEFLATE_METHOD(x) ((x) & 0x0F) #define DEFLATE_MAKE_OPT(w) ((((w) - DEFLATE_MIN_SIZE) << 4) \ + DEFLATE_METHOD_VAL) #define DEFLATE_CHK_SEQUENCE 0 /* * Definitions for MPPE. */ #define CI_MPPE 18 /* config option for MPPE */ #define CILEN_MPPE 6 /* length of config option */ #define MPPE_PAD 4 /* MPPE growth per frame */ #define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */ /* option bits for ccp_options.mppe */ #define MPPE_OPT_40 0x01 /* 40 bit */ #define MPPE_OPT_128 0x02 /* 128 bit */ #define MPPE_OPT_STATEFUL 0x04 /* stateful mode */ /* unsupported opts */ #define MPPE_OPT_56 0x08 /* 56 bit */ #define MPPE_OPT_MPPC 0x10 /* MPPC compression */ #define MPPE_OPT_D 0x20 /* Unknown */ #define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D) #define MPPE_OPT_UNKNOWN 0x40 /* Bits !defined in RFC 3078 were set */ /* * This is not nice ... the alternative is a bitfield struct though. * And unfortunately, we cannot share the same bits for the option * names above since C and H are the same bit. We could do a uint32_t * but then we have to do a htonl() all the time and/or we still need * to know which octet is which. */ #define MPPE_C_BIT 0x01 /* MPPC */ #define MPPE_D_BIT 0x10 /* Obsolete, usage unknown */ #define MPPE_L_BIT 0x20 /* 40-bit */ #define MPPE_S_BIT 0x40 /* 128-bit */ #define MPPE_M_BIT 0x80 /* 56-bit, not supported */ #define MPPE_H_BIT 0x01 /* Stateless (in a different byte) */ /* Does not include H bit; used for least significant octet only. */ #define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT) /* Build a CI from mppe opts (see RFC 3078) */ #define MPPE_OPTS_TO_CI(opts, ci) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ /* H bit */ \ if (opts & MPPE_OPT_STATEFUL) \ *ptr++ = 0x0; \ else \ *ptr++ = MPPE_H_BIT; \ *ptr++ = 0; \ *ptr++ = 0; \ \ /* S,L bits */ \ *ptr = 0; \ if (opts & MPPE_OPT_128) \ *ptr |= MPPE_S_BIT; \ if (opts & MPPE_OPT_40) \ *ptr |= MPPE_L_BIT; \ /* M,D,C bits not supported */ \ } while (/* CONSTCOND */ 0) /* The reverse of the above */ #define MPPE_CI_TO_OPTS(ci, opts) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ opts = 0; \ \ /* H bit */ \ if (!(ptr[0] & MPPE_H_BIT)) \ opts |= MPPE_OPT_STATEFUL; \ \ /* S,L bits */ \ if (ptr[3] & MPPE_S_BIT) \ opts |= MPPE_OPT_128; \ if (ptr[3] & MPPE_L_BIT) \ opts |= MPPE_OPT_40; \ \ /* M,D,C bits */ \ if (ptr[3] & MPPE_M_BIT) \ opts |= MPPE_OPT_56; \ if (ptr[3] & MPPE_D_BIT) \ opts |= MPPE_OPT_D; \ if (ptr[3] & MPPE_C_BIT) \ opts |= MPPE_OPT_MPPC; \ \ /* Other bits */ \ if (ptr[0] & ~MPPE_H_BIT) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[1] || ptr[2]) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[3] & ~MPPE_ALL_BITS) \ opts |= MPPE_OPT_UNKNOWN; \ } while (/* CONSTCOND */ 0) /* * Definitions for other, as yet unsupported, compression methods. */ #define CI_PREDICTOR_1 1 /* config option for Predictor-1 */ #define CILEN_PREDICTOR_1 2 /* length of its config option */ #define CI_PREDICTOR_2 2 /* config option for Predictor-2 */ #define CILEN_PREDICTOR_2 2 /* length of its config option */ #endif /* !_NET_PPP_COMP_H_ */ @ 1.15 log @Rework the way PPP compmressors are handled and allow them to be automatically loaded when needed. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.14 2008/02/20 17:05:53 matt Exp $ */ d99 1 a99 1 const char *comp_name; @ 1.14 log @s/u_\(int[0-9]*_t\)/u\1/g (change u_int*_t to uint*_t) @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.13 2005/12/11 23:05:25 thorpej Exp $ */ d65 2 d97 3 @ 1.14.10.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.14 2008/02/20 17:05:53 matt Exp $ */ a64 2 #include a94 3 LIST_ENTRY(compressor) comp_list; unsigned int comp_refcnt; @ 1.14.18.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.16 2008/11/29 23:15:20 cube Exp $ */ a64 2 #include a94 3 LIST_ENTRY(compressor) comp_list; unsigned int comp_refcnt; @ 1.14.6.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD$ */ a64 2 #include a94 3 LIST_ENTRY(compressor) comp_list; unsigned int comp_refcnt; @ 1.14.16.1 log @Update haad-dm branch to haad-dm-base2. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.16 2008/11/29 23:15:20 cube Exp $ */ a64 2 #include a94 3 LIST_ENTRY(compressor) comp_list; unsigned int comp_refcnt; @ 1.13 log @ANSI function decls and application of static. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.12 2005/12/10 23:21:39 elad Exp $ */ d194 1 a194 1 * names above since C and H are the same bit. We could do a u_int32 @ 1.13.46.1 log @sync with HEAD @ text @d1 1 a1 1 /* ppp-comp.h,v 1.13 2005/12/11 23:05:25 thorpej Exp */ d194 1 a194 1 * names above since C and H are the same bit. We could do a uint32_t @ 1.12 log @Multiple inclusion protection, as suggested by christos@@ on tech-kern@@ few days ago. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.11 2005/02/20 10:22:26 cube Exp $ */ d69 1 a69 1 void *(*comp_alloc) __P((u_char *, int)); d71 1 a71 1 void (*comp_free) __P((void *)); d73 1 a73 1 int (*comp_init) __P((void *, u_char *, int, int, int, int)); d75 1 a75 1 void (*comp_reset) __P((void *)); d77 1 a77 1 int (*compress) __P((void *, PACKETPTR *, PACKETPTR, int, int)); d79 1 a79 1 void (*comp_stat) __P((void *, struct compstat *)); d82 1 a82 1 void *(*decomp_alloc) __P((u_char *, int)); d84 1 a84 1 void (*decomp_free) __P((void *)); d86 1 a86 1 int (*decomp_init) __P((void *, u_char *, int, int, int, int, int)); d88 1 a88 1 void (*decomp_reset) __P((void *)); d90 1 a90 1 int (*decompress) __P((void *, PACKETPTR, PACKETPTR *)); d92 1 a92 1 void (*incomp) __P((void *, PACKETPTR)); d94 1 a94 1 void (*decomp_stat) __P((void *, struct compstat *)); @ 1.11 log @Add MPPE definitions (from ppp-2.4.3). @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.10 2003/07/08 07:13:52 itojun Exp $ */ d38 2 a39 2 #ifndef _NET_PPP_COMP_H #define _NET_PPP_COMP_H d272 1 a272 1 #endif /* _NET_PPP_COMP_H */ @ 1.11.4.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.11 2005/02/20 10:22:26 cube Exp $ */ d38 2 a39 2 #ifndef _NET_PPP_COMP_H_ #define _NET_PPP_COMP_H_ d69 1 a69 1 void *(*comp_alloc)(u_char *, int); d71 1 a71 1 void (*comp_free)(void *); d73 1 a73 1 int (*comp_init)(void *, u_char *, int, int, int, int); d75 1 a75 1 void (*comp_reset)(void *); d77 1 a77 1 int (*compress)(void *, PACKETPTR *, PACKETPTR, int, int); d79 1 a79 1 void (*comp_stat)(void *, struct compstat *); d82 1 a82 1 void *(*decomp_alloc)(u_char *, int); d84 1 a84 1 void (*decomp_free)(void *); d86 1 a86 1 int (*decomp_init)(void *, u_char *, int, int, int, int, int); d88 1 a88 1 void (*decomp_reset)(void *); d90 1 a90 1 int (*decompress)(void *, PACKETPTR, PACKETPTR *); d92 1 a92 1 void (*incomp)(void *, PACKETPTR); d94 1 a94 1 void (*decomp_stat)(void *, struct compstat *); d272 1 a272 1 #endif /* !_NET_PPP_COMP_H_ */ @ 1.11.4.2 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.11.4.1 2006/06/21 15:10:27 yamt Exp $ */ d194 1 a194 1 * names above since C and H are the same bit. We could do a uint32_t @ 1.10 log @prototype must not have variable name @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.9 2003/03/27 17:50:28 christos Exp $ */ d172 93 @ 1.10.8.1 log @sync with -current @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.11 2005/02/20 10:22:26 cube Exp $ */ a171 93 * Definitions for MPPE. */ #define CI_MPPE 18 /* config option for MPPE */ #define CILEN_MPPE 6 /* length of config option */ #define MPPE_PAD 4 /* MPPE growth per frame */ #define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */ /* option bits for ccp_options.mppe */ #define MPPE_OPT_40 0x01 /* 40 bit */ #define MPPE_OPT_128 0x02 /* 128 bit */ #define MPPE_OPT_STATEFUL 0x04 /* stateful mode */ /* unsupported opts */ #define MPPE_OPT_56 0x08 /* 56 bit */ #define MPPE_OPT_MPPC 0x10 /* MPPC compression */ #define MPPE_OPT_D 0x20 /* Unknown */ #define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D) #define MPPE_OPT_UNKNOWN 0x40 /* Bits !defined in RFC 3078 were set */ /* * This is not nice ... the alternative is a bitfield struct though. * And unfortunately, we cannot share the same bits for the option * names above since C and H are the same bit. We could do a u_int32 * but then we have to do a htonl() all the time and/or we still need * to know which octet is which. */ #define MPPE_C_BIT 0x01 /* MPPC */ #define MPPE_D_BIT 0x10 /* Obsolete, usage unknown */ #define MPPE_L_BIT 0x20 /* 40-bit */ #define MPPE_S_BIT 0x40 /* 128-bit */ #define MPPE_M_BIT 0x80 /* 56-bit, not supported */ #define MPPE_H_BIT 0x01 /* Stateless (in a different byte) */ /* Does not include H bit; used for least significant octet only. */ #define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT) /* Build a CI from mppe opts (see RFC 3078) */ #define MPPE_OPTS_TO_CI(opts, ci) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ /* H bit */ \ if (opts & MPPE_OPT_STATEFUL) \ *ptr++ = 0x0; \ else \ *ptr++ = MPPE_H_BIT; \ *ptr++ = 0; \ *ptr++ = 0; \ \ /* S,L bits */ \ *ptr = 0; \ if (opts & MPPE_OPT_128) \ *ptr |= MPPE_S_BIT; \ if (opts & MPPE_OPT_40) \ *ptr |= MPPE_L_BIT; \ /* M,D,C bits not supported */ \ } while (/* CONSTCOND */ 0) /* The reverse of the above */ #define MPPE_CI_TO_OPTS(ci, opts) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ opts = 0; \ \ /* H bit */ \ if (!(ptr[0] & MPPE_H_BIT)) \ opts |= MPPE_OPT_STATEFUL; \ \ /* S,L bits */ \ if (ptr[3] & MPPE_S_BIT) \ opts |= MPPE_OPT_128; \ if (ptr[3] & MPPE_L_BIT) \ opts |= MPPE_OPT_40; \ \ /* M,D,C bits */ \ if (ptr[3] & MPPE_M_BIT) \ opts |= MPPE_OPT_56; \ if (ptr[3] & MPPE_D_BIT) \ opts |= MPPE_OPT_D; \ if (ptr[3] & MPPE_C_BIT) \ opts |= MPPE_OPT_MPPC; \ \ /* Other bits */ \ if (ptr[0] & ~MPPE_H_BIT) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[1] || ptr[2]) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[3] & ~MPPE_ALL_BITS) \ opts |= MPPE_OPT_UNKNOWN; \ } while (/* CONSTCOND */ 0) /* @ 1.10.10.1 log @sync with head. xen and whitespace. xen part is not finished. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.10 2003/07/08 07:13:52 itojun Exp $ */ a171 93 * Definitions for MPPE. */ #define CI_MPPE 18 /* config option for MPPE */ #define CILEN_MPPE 6 /* length of config option */ #define MPPE_PAD 4 /* MPPE growth per frame */ #define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */ /* option bits for ccp_options.mppe */ #define MPPE_OPT_40 0x01 /* 40 bit */ #define MPPE_OPT_128 0x02 /* 128 bit */ #define MPPE_OPT_STATEFUL 0x04 /* stateful mode */ /* unsupported opts */ #define MPPE_OPT_56 0x08 /* 56 bit */ #define MPPE_OPT_MPPC 0x10 /* MPPC compression */ #define MPPE_OPT_D 0x20 /* Unknown */ #define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D) #define MPPE_OPT_UNKNOWN 0x40 /* Bits !defined in RFC 3078 were set */ /* * This is not nice ... the alternative is a bitfield struct though. * And unfortunately, we cannot share the same bits for the option * names above since C and H are the same bit. We could do a u_int32 * but then we have to do a htonl() all the time and/or we still need * to know which octet is which. */ #define MPPE_C_BIT 0x01 /* MPPC */ #define MPPE_D_BIT 0x10 /* Obsolete, usage unknown */ #define MPPE_L_BIT 0x20 /* 40-bit */ #define MPPE_S_BIT 0x40 /* 128-bit */ #define MPPE_M_BIT 0x80 /* 56-bit, not supported */ #define MPPE_H_BIT 0x01 /* Stateless (in a different byte) */ /* Does not include H bit; used for least significant octet only. */ #define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT) /* Build a CI from mppe opts (see RFC 3078) */ #define MPPE_OPTS_TO_CI(opts, ci) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ /* H bit */ \ if (opts & MPPE_OPT_STATEFUL) \ *ptr++ = 0x0; \ else \ *ptr++ = MPPE_H_BIT; \ *ptr++ = 0; \ *ptr++ = 0; \ \ /* S,L bits */ \ *ptr = 0; \ if (opts & MPPE_OPT_128) \ *ptr |= MPPE_S_BIT; \ if (opts & MPPE_OPT_40) \ *ptr |= MPPE_L_BIT; \ /* M,D,C bits not supported */ \ } while (/* CONSTCOND */ 0) /* The reverse of the above */ #define MPPE_CI_TO_OPTS(ci, opts) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ opts = 0; \ \ /* H bit */ \ if (!(ptr[0] & MPPE_H_BIT)) \ opts |= MPPE_OPT_STATEFUL; \ \ /* S,L bits */ \ if (ptr[3] & MPPE_S_BIT) \ opts |= MPPE_OPT_128; \ if (ptr[3] & MPPE_L_BIT) \ opts |= MPPE_OPT_40; \ \ /* M,D,C bits */ \ if (ptr[3] & MPPE_M_BIT) \ opts |= MPPE_OPT_56; \ if (ptr[3] & MPPE_D_BIT) \ opts |= MPPE_OPT_D; \ if (ptr[3] & MPPE_C_BIT) \ opts |= MPPE_OPT_MPPC; \ \ /* Other bits */ \ if (ptr[0] & ~MPPE_H_BIT) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[1] || ptr[2]) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[3] & ~MPPE_ALL_BITS) \ opts |= MPPE_OPT_UNKNOWN; \ } while (/* CONSTCOND */ 0) /* @ 1.9 log @PR/20844: Iain Hibbert: PPP Compressors cannot be loaded as LKM @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.8 2002/09/13 14:32:11 itojun Exp $ */ d69 1 a69 1 void *(*comp_alloc) __P((u_char *options, int opt_len)); d71 1 a71 1 void (*comp_free) __P((void *state)); d73 1 a73 2 int (*comp_init) __P((void *state, u_char *options, int opt_len, int unit, int hdrlen, int debug)); d75 1 a75 1 void (*comp_reset) __P((void *state)); d77 1 a77 2 int (*compress) __P((void *state, PACKETPTR *mret, PACKETPTR mp, int orig_len, int max_len)); d79 1 a79 1 void (*comp_stat) __P((void *state, struct compstat *stats)); d82 1 a82 1 void *(*decomp_alloc) __P((u_char *options, int opt_len)); d84 1 a84 1 void (*decomp_free) __P((void *state)); d86 1 a86 2 int (*decomp_init) __P((void *state, u_char *options, int opt_len, int unit, int hdrlen, int mru, int debug)); d88 1 a88 1 void (*decomp_reset) __P((void *state)); d90 1 a90 2 int (*decompress) __P((void *state, PACKETPTR mp, PACKETPTR *dmpp)); d92 1 a92 1 void (*incomp) __P((void *state, PACKETPTR mp)); d94 1 a94 1 void (*decomp_stat) __P((void *state, struct compstat *stats)); @ 1.9.2.1 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.10 2003/07/08 07:13:52 itojun Exp $ */ d69 1 a69 1 void *(*comp_alloc) __P((u_char *, int)); d71 1 a71 1 void (*comp_free) __P((void *)); d73 2 a74 1 int (*comp_init) __P((void *, u_char *, int, int, int, int)); d76 1 a76 1 void (*comp_reset) __P((void *)); d78 2 a79 1 int (*compress) __P((void *, PACKETPTR *, PACKETPTR, int, int)); d81 1 a81 1 void (*comp_stat) __P((void *, struct compstat *)); d84 1 a84 1 void *(*decomp_alloc) __P((u_char *, int)); d86 1 a86 1 void (*decomp_free) __P((void *)); d88 2 a89 1 int (*decomp_init) __P((void *, u_char *, int, int, int, int, int)); d91 1 a91 1 void (*decomp_reset) __P((void *)); d93 2 a94 1 int (*decompress) __P((void *, PACKETPTR, PACKETPTR *)); d96 1 a96 1 void (*incomp) __P((void *, PACKETPTR)); d98 1 a98 1 void (*decomp_stat) __P((void *, struct compstat *)); @ 1.9.2.2 log @Sync with HEAD. @ text @@ 1.9.2.3 log @Fix the sync with head I botched. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.9.2.1 2004/08/03 10:54:19 skrll Exp $ */ @ 1.9.2.4 log @Sync with HEAD. Hi Perry! @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.9.2.3 2004/09/21 13:36:41 skrll Exp $ */ a171 93 * Definitions for MPPE. */ #define CI_MPPE 18 /* config option for MPPE */ #define CILEN_MPPE 6 /* length of config option */ #define MPPE_PAD 4 /* MPPE growth per frame */ #define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */ /* option bits for ccp_options.mppe */ #define MPPE_OPT_40 0x01 /* 40 bit */ #define MPPE_OPT_128 0x02 /* 128 bit */ #define MPPE_OPT_STATEFUL 0x04 /* stateful mode */ /* unsupported opts */ #define MPPE_OPT_56 0x08 /* 56 bit */ #define MPPE_OPT_MPPC 0x10 /* MPPC compression */ #define MPPE_OPT_D 0x20 /* Unknown */ #define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D) #define MPPE_OPT_UNKNOWN 0x40 /* Bits !defined in RFC 3078 were set */ /* * This is not nice ... the alternative is a bitfield struct though. * And unfortunately, we cannot share the same bits for the option * names above since C and H are the same bit. We could do a u_int32 * but then we have to do a htonl() all the time and/or we still need * to know which octet is which. */ #define MPPE_C_BIT 0x01 /* MPPC */ #define MPPE_D_BIT 0x10 /* Obsolete, usage unknown */ #define MPPE_L_BIT 0x20 /* 40-bit */ #define MPPE_S_BIT 0x40 /* 128-bit */ #define MPPE_M_BIT 0x80 /* 56-bit, not supported */ #define MPPE_H_BIT 0x01 /* Stateless (in a different byte) */ /* Does not include H bit; used for least significant octet only. */ #define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT) /* Build a CI from mppe opts (see RFC 3078) */ #define MPPE_OPTS_TO_CI(opts, ci) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ /* H bit */ \ if (opts & MPPE_OPT_STATEFUL) \ *ptr++ = 0x0; \ else \ *ptr++ = MPPE_H_BIT; \ *ptr++ = 0; \ *ptr++ = 0; \ \ /* S,L bits */ \ *ptr = 0; \ if (opts & MPPE_OPT_128) \ *ptr |= MPPE_S_BIT; \ if (opts & MPPE_OPT_40) \ *ptr |= MPPE_L_BIT; \ /* M,D,C bits not supported */ \ } while (/* CONSTCOND */ 0) /* The reverse of the above */ #define MPPE_CI_TO_OPTS(ci, opts) \ do { \ u_char *ptr = ci; /* u_char[4] */ \ \ opts = 0; \ \ /* H bit */ \ if (!(ptr[0] & MPPE_H_BIT)) \ opts |= MPPE_OPT_STATEFUL; \ \ /* S,L bits */ \ if (ptr[3] & MPPE_S_BIT) \ opts |= MPPE_OPT_128; \ if (ptr[3] & MPPE_L_BIT) \ opts |= MPPE_OPT_40; \ \ /* M,D,C bits */ \ if (ptr[3] & MPPE_M_BIT) \ opts |= MPPE_OPT_56; \ if (ptr[3] & MPPE_D_BIT) \ opts |= MPPE_OPT_D; \ if (ptr[3] & MPPE_C_BIT) \ opts |= MPPE_OPT_MPPC; \ \ /* Other bits */ \ if (ptr[0] & ~MPPE_H_BIT) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[1] || ptr[2]) \ opts |= MPPE_OPT_UNKNOWN; \ if (ptr[3] & ~MPPE_ALL_BITS) \ opts |= MPPE_OPT_UNKNOWN; \ } while (/* CONSTCOND */ 0) /* @ 1.9.2.5 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.12 2005/12/10 23:21:39 elad Exp $ */ d38 2 a39 2 #ifndef _NET_PPP_COMP_H_ #define _NET_PPP_COMP_H_ d272 1 a272 1 #endif /* !_NET_PPP_COMP_H_ */ @ 1.8 log @copyright clarification. from openbsd 1. Paul Mackerras and the Australian National University have worked things out, and as a result, Paul now owns copyright on all these files, with the proper terms. 2. and... we managed to contact "Eric Rosenquist" through the help of people who found him: first one was nick.stott@@cogeco.ca This now has a better license. Two authors left to go. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.7 2002/07/01 22:09:34 itojun Exp $ */ d53 7 @ 1.7 log @new copyright boilerplate from CMU. from openbsd @ text @d1 1 a1 1 /* $NetBSD$ */ d6 1 a6 2 * Copyright (c) 1994 The Australian National University. * All rights reserved. d8 28 a35 19 * Permission to use, copy, modify, and distribute this software and its * documentation is hereby granted, provided that the above copyright * notice appears in all copies. This software is provided without any * warranty, express or implied. The Australian National University * makes no representations about the suitability of this software for * any purpose. * * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. @ 1.6 log @add 2 more CCP defines. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.5 2001/02/23 21:16:19 christos Exp $ */ a27 2 * * Id: ppp-comp.h,v 1.10 1996/09/26 06:30:11 paulus Exp @ 1.5 log @change CCP maxlen to 64 to accomodate mschap-2. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.4 1998/05/02 14:34:25 christos Exp $ */ d106 2 @ 1.5.4.1 log @catch up with -current on kqueue branch @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.5 2001/02/23 21:16:19 christos Exp $ */ a105 2 #define CCP_CONFNAK 3 #define CCP_CONFREJ 4 @ 1.5.4.2 log @sync kqueue branch with HEAD @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.5.4.1 2002/06/23 17:50:32 jdolecek Exp $ */ d28 2 @ 1.5.4.3 log @sync kqueue with -current; this includes merge of gehenna-devsw branch, merge of i386 MP branch, and part of autoconf rototil work @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.5.4.2 2002/09/06 08:49:01 jdolecek Exp $ */ d6 2 a7 1 * Copyright (c) 1989-2002 Paul Mackerras. All rights reserved. d9 19 a27 28 * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The name(s) of the authors of this software must not be used to * endorse or promote products derived from this software without * prior written permission. * * 4. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by Paul Mackerras * ". * * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. @ 1.5.2.1 log @Catch up to -current. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.5 2001/02/23 21:16:19 christos Exp $ */ a105 2 #define CCP_CONFNAK 3 #define CCP_CONFREJ 4 @ 1.5.2.2 log @Catch up to -current. @ text @d1 1 a1 1 /* $NetBSD$ */ d28 2 @ 1.5.2.3 log @Catch up to -current. @ text @d6 2 a7 1 * Copyright (c) 1989-2002 Paul Mackerras. All rights reserved. d9 19 a27 28 * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The name(s) of the authors of this software must not be used to * endorse or promote products derived from this software without * prior written permission. * * 4. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by Paul Mackerras * ". * * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. @ 1.5.16.1 log @Catch up with -current. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.6 2002/05/29 19:11:05 christos Exp $ */ a105 2 #define CCP_CONFNAK 3 #define CCP_CONFREJ 4 @ 1.5.16.2 log @catch up with -current. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.7 2002/07/01 22:09:34 itojun Exp $ */ d28 2 @ 1.4 log @Merge changes from pppd-2.3.4; adds ppp-deflate-draft stuff and updates zlib. Maybe we can merge our other copy of zlib with this one now and avoid having two copies? @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.3 1997/03/12 20:26:55 christos Exp $ */ d114 1 a114 1 #define CCP_MAX_OPTION_LENGTH 32 @ 1.4.14.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.4 1998/05/02 14:34:25 christos Exp $ */ d114 1 a114 1 #define CCP_MAX_OPTION_LENGTH 64 @ 1.3 log @Update to ppp-2.3b4; from Paul Mackerras @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.2 1996/03/15 02:28:07 paulus Exp $ */ d146 3 a148 1 #define CI_DEFLATE 24 /* config option for Deflate */ @ 1.2 log @Added packet filtering, support for "PPP Deflate" packet compression, trivial multicast support, and support for xon/xoff output flow control to the PPP subsystem. Fixed several bugs, including making the accumulation and resetting of statistics more consistent. State for the VJ compressor is now dynamically allocated. @ text @d1 1 a1 1 /* $NetBSD: ppp-comp.h,v 1.1 1995/07/04 06:28:24 paulus Exp $ */ d29 1 d144 1 a144 1 * Definitions for other, as yet unsupported, compression methods. a145 5 #define CI_PREDICTOR_1 1 /* config option for Predictor-1 */ #define CILEN_PREDICTOR_1 2 /* length of its config option */ #define CI_PREDICTOR_2 2 /* config option for Predictor-2 */ #define CILEN_PREDICTOR_2 2 /* length of its config option */ d157 8 @ 1.1 log @Latest version of PPP stuff, with packet compression and other improvements. The PPP kernel code is now split into if_ppp.c, containing generic PPP support, and ppp_tty.c, which specifically supports PPP on async tty devices (as a line discipline). This is so that other devices can be supported without making them look like ttys. @ text @d1 1 a1 1 /* $NetBSD: ppp_defs.h,v 1.6 1995/04/24 02:42:06 paulus Exp $ */ a28 1 * $Id: ppp-comp.h,v 1.7 1995/05/01 01:43:37 paulus Exp $ d41 5 d141 20 @