head 1.35; access; symbols netbsd-10-0-RELEASE:1.35 netbsd-10-0-RC6:1.35 netbsd-10-0-RC5:1.35 netbsd-10-0-RC4:1.35 netbsd-10-0-RC3:1.35 netbsd-10-0-RC2:1.35 thorpej-ifq:1.35.0.22 thorpej-ifq-base:1.35 thorpej-altq-separation:1.35.0.20 thorpej-altq-separation-base:1.35 netbsd-10-0-RC1:1.35 netbsd-10:1.35.0.18 netbsd-10-base:1.35 bouyer-sunxi-drm:1.35.0.16 bouyer-sunxi-drm-base:1.35 netbsd-9-3-RELEASE:1.32 thorpej-i2c-spi-conf2:1.35.0.14 thorpej-i2c-spi-conf2-base:1.35 thorpej-futex2:1.35.0.12 thorpej-futex2-base:1.35 thorpej-cfargs2:1.35.0.10 thorpej-cfargs2-base:1.35 cjep_sun2x-base1:1.35 cjep_sun2x:1.35.0.8 cjep_sun2x-base:1.35 cjep_staticlib_x-base1:1.35 netbsd-9-2-RELEASE:1.32 cjep_staticlib_x:1.35.0.6 cjep_staticlib_x-base:1.35 thorpej-i2c-spi-conf:1.35.0.4 thorpej-i2c-spi-conf-base:1.35 thorpej-cfargs:1.35.0.2 thorpej-cfargs-base:1.35 thorpej-futex:1.32.0.16 thorpej-futex-base:1.35 netbsd-9-1-RELEASE:1.32 bouyer-xenpvh-base2:1.32 phil-wifi-20200421:1.32 bouyer-xenpvh-base1:1.32 phil-wifi-20200411:1.32 bouyer-xenpvh:1.32.0.14 bouyer-xenpvh-base:1.32 is-mlppp:1.32.0.12 is-mlppp-base:1.32 phil-wifi-20200406:1.32 netbsd-8-2-RELEASE:1.31 ad-namecache-base3:1.32 netbsd-9-0-RELEASE:1.32 netbsd-9-0-RC2:1.32 ad-namecache-base2:1.32 ad-namecache-base1:1.32 ad-namecache:1.32.0.10 ad-namecache-base:1.32 netbsd-9-0-RC1:1.32 phil-wifi-20191119:1.32 netbsd-9:1.32.0.8 netbsd-9-base:1.32 phil-wifi-20190609:1.32 netbsd-8-1-RELEASE:1.31 netbsd-8-1-RC1:1.31 isaki-audio2:1.32.0.6 isaki-audio2-base:1.32 pgoyette-compat-merge-20190127:1.32 pgoyette-compat-20190127:1.32 pgoyette-compat-20190118:1.32 pgoyette-compat-1226:1.32 pgoyette-compat-1126:1.32 pgoyette-compat-1020:1.32 pgoyette-compat-0930:1.32 pgoyette-compat-0906:1.32 netbsd-7-2-RELEASE:1.31 pgoyette-compat-0728:1.32 netbsd-8-0-RELEASE:1.31 phil-wifi:1.32.0.4 phil-wifi-base:1.32 pgoyette-compat-0625:1.32 netbsd-8-0-RC2:1.31 pgoyette-compat-0521:1.32 pgoyette-compat-0502:1.32 pgoyette-compat-0422:1.32 netbsd-8-0-RC1:1.31 pgoyette-compat-0415:1.32 pgoyette-compat-0407:1.32 pgoyette-compat-0330:1.32 pgoyette-compat-0322:1.32 pgoyette-compat-0315:1.32 netbsd-7-1-2-RELEASE:1.31 pgoyette-compat:1.32.0.2 pgoyette-compat-base:1.32 netbsd-7-1-1-RELEASE:1.31 tls-maxphys-base-20171202:1.31 matt-nb8-mediatek:1.31.0.78 matt-nb8-mediatek-base:1.31 nick-nhusb-base-20170825:1.31 perseant-stdc-iso10646:1.31.0.76 perseant-stdc-iso10646-base:1.31 netbsd-8:1.31.0.74 netbsd-8-base:1.31 prg-localcount2-base3:1.31 prg-localcount2-base2:1.31 prg-localcount2-base1:1.31 prg-localcount2:1.31.0.72 prg-localcount2-base:1.31 pgoyette-localcount-20170426:1.31 bouyer-socketcan-base1:1.31 jdolecek-ncq:1.31.0.70 jdolecek-ncq-base:1.31 pgoyette-localcount-20170320:1.31 netbsd-7-1:1.31.0.68 netbsd-7-1-RELEASE:1.31 netbsd-7-1-RC2:1.31 nick-nhusb-base-20170204:1.31 netbsd-7-nhusb-base-20170116:1.31 bouyer-socketcan:1.31.0.66 bouyer-socketcan-base:1.31 pgoyette-localcount-20170107:1.31 netbsd-7-1-RC1:1.31 nick-nhusb-base-20161204:1.31 pgoyette-localcount-20161104:1.31 netbsd-7-0-2-RELEASE:1.31 nick-nhusb-base-20161004:1.31 localcount-20160914:1.31 netbsd-7-nhusb:1.31.0.64 netbsd-7-nhusb-base:1.31 pgoyette-localcount-20160806:1.31 pgoyette-localcount-20160726:1.31 pgoyette-localcount:1.31.0.62 pgoyette-localcount-base:1.31 nick-nhusb-base-20160907:1.31 nick-nhusb-base-20160529:1.31 netbsd-7-0-1-RELEASE:1.31 nick-nhusb-base-20160422:1.31 nick-nhusb-base-20160319:1.31 nick-nhusb-base-20151226:1.31 netbsd-7-0:1.31.0.60 netbsd-7-0-RELEASE:1.31 nick-nhusb-base-20150921:1.31 netbsd-7-0-RC3:1.31 netbsd-7-0-RC2:1.31 netbsd-7-0-RC1:1.31 nick-nhusb-base-20150606:1.31 nick-nhusb-base-20150406:1.31 nick-nhusb:1.31.0.58 nick-nhusb-base:1.31 netbsd-5-2-3-RELEASE:1.31 netbsd-5-1-5-RELEASE:1.31 netbsd-6-0-6-RELEASE:1.31 netbsd-6-1-5-RELEASE:1.31 netbsd-7:1.31.0.56 netbsd-7-base:1.31 yamt-pagecache-base9:1.31 yamt-pagecache-tag8:1.31 netbsd-6-1-4-RELEASE:1.31 netbsd-6-0-5-RELEASE:1.31 tls-earlyentropy:1.31.0.54 tls-earlyentropy-base:1.31 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.31 riastradh-drm2-base3:1.31 netbsd-6-1-3-RELEASE:1.31 netbsd-6-0-4-RELEASE:1.31 netbsd-5-2-2-RELEASE:1.31 netbsd-5-1-4-RELEASE:1.31 netbsd-6-1-2-RELEASE:1.31 netbsd-6-0-3-RELEASE:1.31 netbsd-5-2-1-RELEASE:1.31 netbsd-5-1-3-RELEASE:1.31 rmind-smpnet-nbase:1.31 netbsd-6-1-1-RELEASE:1.31 riastradh-drm2-base2:1.31 riastradh-drm2-base1:1.31 riastradh-drm2:1.31.0.52 riastradh-drm2-base:1.31 rmind-smpnet:1.31.0.44 rmind-smpnet-base:1.31 netbsd-6-1:1.31.0.50 netbsd-6-0-2-RELEASE:1.31 netbsd-6-1-RELEASE:1.31 khorben-n900:1.31.0.48 netbsd-6-1-RC4:1.31 netbsd-6-1-RC3:1.31 agc-symver:1.31.0.46 agc-symver-base:1.31 netbsd-6-1-RC2:1.31 netbsd-6-1-RC1:1.31 yamt-pagecache-base8:1.31 netbsd-5-2:1.31.0.42 netbsd-6-0-1-RELEASE:1.31 yamt-pagecache-base7:1.31 netbsd-5-2-RELEASE:1.31 netbsd-5-2-RC1:1.31 matt-nb6-plus-nbase:1.31 yamt-pagecache-base6:1.31 netbsd-6-0:1.31.0.40 netbsd-6-0-RELEASE:1.31 netbsd-6-0-RC2:1.31 tls-maxphys:1.31.0.38 tls-maxphys-base:1.31 matt-nb6-plus:1.31.0.36 matt-nb6-plus-base:1.31 netbsd-6-0-RC1:1.31 jmcneill-usbmp-base10:1.31 yamt-pagecache-base5:1.31 jmcneill-usbmp-base9:1.31 yamt-pagecache-base4:1.31 jmcneill-usbmp-base8:1.31 jmcneill-usbmp-base7:1.31 jmcneill-usbmp-base6:1.31 jmcneill-usbmp-base5:1.31 jmcneill-usbmp-base4:1.31 jmcneill-usbmp-base3:1.31 jmcneill-usbmp-pre-base2:1.31 jmcneill-usbmp-base2:1.31 netbsd-6:1.31.0.34 netbsd-6-base:1.31 netbsd-5-1-2-RELEASE:1.31 netbsd-5-1-1-RELEASE:1.31 jmcneill-usbmp:1.31.0.32 jmcneill-usbmp-base:1.31 jmcneill-audiomp3:1.31.0.30 jmcneill-audiomp3-base:1.31 yamt-pagecache-base3:1.31 yamt-pagecache-base2:1.31 yamt-pagecache:1.31.0.28 yamt-pagecache-base:1.31 rmind-uvmplock-nbase:1.31 cherry-xenmp:1.31.0.26 cherry-xenmp-base:1.31 bouyer-quota2-nbase:1.31 bouyer-quota2:1.31.0.24 bouyer-quota2-base:1.31 jruoho-x86intr:1.31.0.22 jruoho-x86intr-base:1.31 matt-mips64-premerge-20101231:1.31 matt-nb5-mips64-premerge-20101231:1.31 matt-nb5-pq3:1.31.0.20 matt-nb5-pq3-base:1.31 netbsd-5-1:1.31.0.18 netbsd-5-1-RELEASE:1.31 uebayasi-xip-base4:1.31 uebayasi-xip-base3:1.31 yamt-nfs-mp-base11:1.31 netbsd-5-1-RC4:1.31 matt-nb5-mips64-k15:1.31 uebayasi-xip-base2:1.31 yamt-nfs-mp-base10:1.31 netbsd-5-1-RC3:1.31 netbsd-5-1-RC2:1.31 uebayasi-xip-base1:1.31 netbsd-5-1-RC1:1.31 rmind-uvmplock:1.31.0.16 rmind-uvmplock-base:1.31 yamt-nfs-mp-base9:1.31 uebayasi-xip:1.31.0.14 uebayasi-xip-base:1.31 netbsd-5-0-2-RELEASE:1.31 matt-nb5-mips64-premerge-20091211:1.31 matt-premerge-20091211:1.31 yamt-nfs-mp-base8:1.31 matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.31 matt-nb4-mips64-k7-u2a-k9b:1.31 matt-nb5-mips64-u1-k1-k5:1.31 yamt-nfs-mp-base7:1.31 matt-nb5-mips64:1.31.0.12 netbsd-5-0-1-RELEASE:1.31 jymxensuspend-base:1.31 yamt-nfs-mp-base6:1.31 yamt-nfs-mp-base5:1.31 yamt-nfs-mp-base4:1.31 jym-xensuspend-nbase:1.31 yamt-nfs-mp-base3:1.31 nick-hppapmap-base4:1.31 nick-hppapmap-base3:1.31 netbsd-5-0:1.31.0.10 netbsd-5-0-RELEASE:1.31 netbsd-5-0-RC4:1.31 netbsd-5-0-RC3:1.31 nick-hppapmap-base2:1.31 netbsd-5-0-RC2:1.31 jym-xensuspend:1.31.0.8 jym-xensuspend-base:1.31 netbsd-5-0-RC1:1.31 haad-dm-base2:1.31 haad-nbase2:1.31 ad-audiomp2:1.31.0.6 ad-audiomp2-base:1.31 netbsd-5:1.31.0.4 netbsd-5-base:1.31 nick-hppapmap:1.31.0.2 nick-hppapmap-base:1.31 matt-mips64-base2:1.31 matt-mips64:1.28.0.24 haad-dm-base1:1.31 wrstuden-revivesa-base-4:1.31 netbsd-4-0-1-RELEASE:1.26 wrstuden-revivesa-base-3:1.31 wrstuden-revivesa-base-2:1.31 wrstuden-fixsa-newbase:1.26 nick-csl-alignment-base5:1.28 haad-dm:1.29.0.16 haad-dm-base:1.31 wrstuden-revivesa-base-1:1.29 simonb-wapbl-nbase:1.29 yamt-pf42-base4:1.29 simonb-wapbl:1.29.0.14 simonb-wapbl-base:1.29 yamt-pf42-base3:1.29 hpcarm-cleanup-nbase:1.29 yamt-pf42-baseX:1.29 yamt-pf42-base2:1.29 yamt-nfs-mp-base2:1.29 wrstuden-revivesa:1.29.0.12 wrstuden-revivesa-base:1.29 yamt-nfs-mp:1.29.0.10 yamt-nfs-mp-base:1.29 yamt-pf42:1.29.0.8 yamt-pf42-base:1.29 ad-socklock-base1:1.29 yamt-lazymbuf-base15:1.29 yamt-lazymbuf-base14:1.29 keiichi-mipv6-nbase:1.29 mjf-devfs2:1.29.0.6 mjf-devfs2-base:1.31 nick-net80211-sync:1.29.0.4 nick-net80211-sync-base:1.29 keiichi-mipv6:1.29.0.2 keiichi-mipv6-base:1.29 bouyer-xeni386-merge1:1.28.20.1 matt-armv6-prevmlocking:1.28 wrstuden-fixsa-base-1:1.26 vmlocking2-base3:1.29 netbsd-4-0:1.26.0.34 netbsd-4-0-RELEASE:1.26 bouyer-xeni386-nbase:1.29 yamt-kmem-base3:1.28 cube-autoconf:1.28.0.22 cube-autoconf-base:1.28 yamt-kmem-base2:1.28 bouyer-xeni386:1.28.0.20 bouyer-xeni386-base:1.29 yamt-kmem:1.28.0.18 yamt-kmem-base:1.28 vmlocking2-base2:1.28 reinoud-bufcleanup-nbase:1.28 vmlocking2:1.28.0.16 vmlocking2-base1:1.28 netbsd-4-0-RC5:1.26 matt-nb4-arm:1.26.0.32 matt-nb4-arm-base:1.26 matt-armv6-nbase:1.29 jmcneill-base:1.28 netbsd-4-0-RC4:1.26 mjf-devfs:1.28.0.14 mjf-devfs-base:1.29 bouyer-xenamd64-base2:1.28 vmlocking-nbase:1.28 yamt-x86pmap-base4:1.28 bouyer-xenamd64:1.28.0.12 bouyer-xenamd64-base:1.28 netbsd-4-0-RC3:1.26 yamt-x86pmap-base3:1.28 yamt-x86pmap-base2:1.28 netbsd-4-0-RC2:1.26 yamt-x86pmap:1.28.0.10 yamt-x86pmap-base:1.28 netbsd-4-0-RC1:1.26 matt-armv6:1.28.0.8 matt-armv6-base:1.29 matt-mips64-base:1.28 jmcneill-pm:1.28.0.6 jmcneill-pm-base:1.28 hpcarm-cleanup:1.28.0.4 hpcarm-cleanup-base:1.29 nick-csl-alignment:1.28.0.2 nick-csl-alignment-base:1.28 netbsd-3-1-1-RELEASE:1.25 netbsd-3-0-3-RELEASE:1.25 yamt-idlelwp-base8:1.27 wrstuden-fixsa:1.26.0.30 wrstuden-fixsa-base:1.26 thorpej-atomic:1.27.0.8 thorpej-atomic-base:1.27 reinoud-bufcleanup:1.27.0.6 reinoud-bufcleanup-base:1.28 mjf-ufs-trans:1.27.0.4 mjf-ufs-trans-base:1.28 vmlocking:1.27.0.2 vmlocking-base:1.28 ad-audiomp:1.26.0.28 ad-audiomp-base:1.26 yamt-idlelwp:1.26.0.26 post-newlock2-merge:1.26 newlock2-nbase:1.26 yamt-splraiseipl-base5:1.26 yamt-splraiseipl-base4:1.26 yamt-splraiseipl-base3:1.26 abandoned-netbsd-4-base:1.26 abandoned-netbsd-4:1.26.0.18 netbsd-3-1:1.25.0.14 netbsd-3-1-RELEASE:1.25 netbsd-3-0-2-RELEASE:1.25 yamt-splraiseipl-base2:1.26 netbsd-3-1-RC4:1.25 yamt-splraiseipl:1.26.0.22 yamt-splraiseipl-base:1.26 netbsd-3-1-RC3:1.25 yamt-pdpolicy-base9:1.26 newlock2:1.26.0.20 newlock2-base:1.26 yamt-pdpolicy-base8:1.26 netbsd-3-1-RC2:1.25 netbsd-3-1-RC1:1.25 yamt-pdpolicy-base7:1.26 netbsd-4:1.26.0.24 netbsd-4-base:1.26 yamt-pdpolicy-base6:1.26 chap-midi-nbase:1.26 netbsd-3-0-1-RELEASE:1.25 gdamore-uart:1.26.0.16 gdamore-uart-base:1.26 simonb-timcounters-final:1.26 yamt-pdpolicy-base5:1.26 chap-midi:1.26.0.14 chap-midi-base:1.26 yamt-pdpolicy-base4:1.26 yamt-pdpolicy-base3:1.26 peter-altq-base:1.26 peter-altq:1.26.0.12 yamt-pdpolicy-base2:1.26 elad-kernelauth-base:1.26 elad-kernelauth:1.26.0.10 yamt-pdpolicy:1.26.0.8 yamt-pdpolicy-base:1.26 yamt-uio_vmspace-base5:1.26 simonb-timecounters:1.26.0.6 simonb-timecounters-base:1.26 rpaulo-netinet-merge-pcb:1.26.0.4 rpaulo-netinet-merge-pcb-base:1.26 yamt-uio_vmspace:1.26.0.2 netbsd-3-0:1.25.0.12 netbsd-3-0-RELEASE:1.25 netbsd-3-0-RC6:1.25 yamt-readahead-base3:1.25 netbsd-3-0-RC5:1.25 netbsd-3-0-RC4:1.25 netbsd-3-0-RC3:1.25 yamt-readahead-base2:1.25 netbsd-3-0-RC2:1.25 yamt-readahead-pervnode:1.25 yamt-readahead-perfile:1.25 yamt-readahead:1.25.0.10 yamt-readahead-base:1.25 netbsd-3-0-RC1:1.25 yamt-vop-base3:1.25 netbsd-2-0-3-RELEASE:1.21 netbsd-2-1:1.21.0.8 yamt-vop-base2:1.25 thorpej-vnode-attr:1.25.0.8 thorpej-vnode-attr-base:1.25 netbsd-2-1-RELEASE:1.21 yamt-vop:1.25.0.6 yamt-vop-base:1.25 netbsd-2-1-RC6:1.21 netbsd-2-1-RC5:1.21 netbsd-2-1-RC4:1.21 netbsd-2-1-RC3:1.21 netbsd-2-1-RC2:1.21 netbsd-2-1-RC1:1.21 yamt-lazymbuf:1.25.0.4 yamt-km-base4:1.25 netbsd-2-0-2-RELEASE:1.21 yamt-km-base3:1.25 netbsd-3:1.25.0.2 netbsd-3-base:1.25 yamt-km-base2:1.24 yamt-km:1.24.0.6 yamt-km-base:1.24 kent-audio2:1.24.0.4 kent-audio2-base:1.25 netbsd-2-0-1-RELEASE:1.21 kent-audio1-beforemerge:1.24 netbsd-2:1.21.0.6 netbsd-2-base:1.21 kent-audio1:1.24.0.2 kent-audio1-base:1.24 netbsd-2-0-RELEASE:1.21 netbsd-2-0-RC5:1.21 netbsd-2-0-RC4:1.21 netbsd-2-0-RC3:1.21 netbsd-2-0-RC2:1.21 netbsd-2-0-RC1:1.21 BEFORE-IPF413:1.23 netbsd-2-0:1.21.0.4 netbsd-2-0-base:1.21 BEFORE-IPF411:1.21 netbsd-1-6-PATCH002-RELEASE:1.19.16.1 netbsd-1-6-PATCH002:1.19.16.1 netbsd-1-6-PATCH002-RC4:1.19.16.1 netbsd-1-6-PATCH002-RC3:1.19.16.1 netbsd-1-6-PATCH002-RC2:1.19.16.1 netbsd-1-6-PATCH002-RC1:1.19.16.1 ktrace-lwp:1.21.0.2 ktrace-lwp-base:1.26 netbsd-1-6-PATCH001:1.19 netbsd-1-6-PATCH001-RELEASE:1.19 netbsd-1-6-PATCH001-RC3:1.19 netbsd-1-6-PATCH001-RC2:1.19 netbsd-1-6-PATCH001-RC1:1.19 nathanw_sa_end:1.18.6.2 nathanw_sa_before_merge:1.20 fvdl_fs64_base:1.20 gmcgarry_ctxsw:1.20.0.4 gmcgarry_ctxsw_base:1.20 gmcgarry_ucred:1.20.0.2 gmcgarry_ucred_base:1.20 nathanw_sa_base:1.20 kqueue-aftermerge:1.20 kqueue-beforemerge:1.20 netbsd-1-6-RELEASE:1.19 netbsd-1-6-RC3:1.19 netbsd-1-6-RC2:1.19 netbsd-1-6-RC1:1.19 netbsd-1-6:1.19.0.16 netbsd-1-6-base:1.19 gehenna-devsw:1.19.0.14 gehenna-devsw-base:1.20 netbsd-1-5-PATCH003:1.18 eeh-devprop:1.19.0.12 eeh-devprop-base:1.19 newlock:1.19.0.10 newlock-base:1.19 ifpoll-base:1.19 thorpej-mips-cache:1.19.0.6 thorpej-mips-cache-base:1.19 thorpej-devvp-base3:1.19 thorpej-devvp-base2:1.19 post-chs-ubcperf:1.19 pre-chs-ubcperf:1.19 thorpej-devvp:1.19.0.4 thorpej-devvp-base:1.19 netbsd-1-5-PATCH002:1.18 kqueue:1.19.0.2 kqueue-base:1.20 netbsd-1-5-PATCH001:1.18 thorpej_scsipi_beforemerge:1.18 nathanw_sa:1.18.0.6 thorpej_scsipi_nbase:1.18 netbsd-1-5-RELEASE:1.18 netbsd-1-5-BETA2:1.18 netbsd-1-5-BETA:1.18 netbsd-1-4-PATCH003:1.15 netbsd-1-5-ALPHA2:1.18 netbsd-1-5:1.18.0.4 netbsd-1-5-base:1.18 minoura-xpg4dl-base:1.18 minoura-xpg4dl:1.18.0.2 netbsd-1-4-PATCH002:1.15 chs-ubc2-newbase:1.17 wrstuden-devbsize-19991221:1.17 wrstuden-devbsize:1.16.0.8 wrstuden-devbsize-base:1.17 kame_141_19991130:1.15.6.2 comdex-fall-1999:1.16.0.6 comdex-fall-1999-base:1.16 fvdl-softdep:1.16.0.4 fvdl-softdep-base:1.16 thorpej_scsipi:1.16.0.2 thorpej_scsipi_base:1.18 netbsd-1-4-PATCH001:1.15 kame_14_19990705:1.15.6.1 kame_14_19990628:1.15.6.1 kame:1.15.0.6 chs-ubc2:1.15.0.4 chs-ubc2-base:1.16 netbsd-1-4-RELEASE:1.15 netbsd-1-4:1.15.0.2 netbsd-1-4-base:1.15 netbsd-1-3-PATCH003:1.12 netbsd-1-3-PATCH003-CANDIDATE2:1.12 kenh-if-detach:1.13.0.6 kenh-if-detach-base:1.13 netbsd-1-3-PATCH003-CANDIDATE1:1.12 netbsd-1-3-PATCH003-CANDIDATE0:1.12 chs-ubc:1.13.0.4 chs-ubc-base:1.13 eeh-paddr_t:1.13.0.2 eeh-paddr_t-base:1.13 netbsd-1-3-PATCH002:1.12 netbsd-1-3-PATCH001:1.12 lite-2:1.1.1.2 lite-1:1.1.1.1 CSRG:1.1.1 netbsd-1-3-RELEASE:1.12 netbsd-1-3-BETA:1.12 netbsd-1-3:1.12.0.14 netbsd-1-3-base:1.12 thorpej-signal:1.12.0.12 thorpej-signal-base:1.12 marc-pcmcia:1.12.0.10 marc-pcmcia-bp:1.12 marc-pcmcia-base:1.12 bouyer-scsipi:1.12.0.8 is-newarp-before-merge:1.12 netbsd-1-2-PATCH001:1.10.4.1 mrg-vm-swap:1.12.0.6 is-newarp:1.12.0.4 is-newarp-base:1.12 thorpej-setroot:1.12.0.2 netbsd-1-2-RELEASE:1.10 netbsd-1-2-BETA:1.10 netbsd-1-2:1.10.0.4 netbsd-1-2-base:1.10 date-03-may-96:1.1.1.1 netbsd:1.1.1 netbsd-1-1-PATCH001:1.9 netbsd-1-1-RELEASE:1.9 netbsd-1-1:1.9.0.2 netbsd-1-1-base:1.9 netbsd-1-0-PATCH06:1.6 netbsd-1-0-PATCH05:1.6 netbsd-1-0-PATCH04:1.6 netbsd-1-0-PATCH03:1.6 netbsd-1-0-PATCH02:1.6 netbsd-1-0-PATCH1:1.6 netbsd-1-0-PATCH0:1.6 netbsd-1-0-RELEASE:1.6 netbsd-1-0:1.6.0.2 netbsd-1-0-base:1.6; locks; strict; comment @ * @; 1.35 date 2021.02.03.18.13.13; author roy; state Exp; branches; next 1.34; commitid W26lRWt1lztgdiGC; 1.34 date 2021.02.03.11.53.43; author roy; state Exp; branches; next 1.33; commitid 7irZkizDUb3Z6gGC; 1.33 date 2021.02.03.05.51.40; author roy; state Exp; branches; next 1.32; commitid Ejsas7gYBOHG6eGC; 1.32 date 2018.02.07.11.42.58; author maxv; state Exp; branches 1.32.16.1; next 1.31; commitid EImvvfob2e0Q9VpA; 1.31 date 2008.08.07.06.20.14; author cegger; state Exp; branches; next 1.30; 1.30 date 2008.08.06.15.01.23; author plunky; state Exp; branches; next 1.29; 1.29 date 2007.12.25.18.33.46; author perry; state Exp; branches 1.29.6.1 1.29.10.1 1.29.12.1 1.29.16.1; next 1.28; 1.28 date 2007.07.09.21.11.11; author ad; state Exp; branches 1.28.8.1 1.28.14.1 1.28.16.1 1.28.20.1; next 1.27; 1.27 date 2007.03.04.06.03.21; author christos; state Exp; branches 1.27.2.1 1.27.4.1; next 1.26; 1.26 date 2005.12.10.23.36.23; author elad; state Exp; branches 1.26.26.1; next 1.25; 1.25 date 2005.02.26.22.45.12; author perry; state Exp; branches 1.25.4.1; next 1.24; 1.24 date 2004.09.04.23.30.07; author manu; state Exp; branches 1.24.4.1 1.24.6.1; next 1.23; 1.23 date 2004.04.21.17.49.46; author itojun; state Exp; branches; next 1.22; 1.22 date 2004.04.18.21.00.36; author matt; state Exp; branches; next 1.21; 1.21 date 2003.06.26.03.35.00; author itojun; state Exp; branches 1.21.2.1; next 1.20; 1.20 date 2002.06.09.16.33.41; author itojun; state Exp; branches; next 1.19; 1.19 date 2001.05.08.10.07.15; author itojun; state Exp; branches 1.19.2.1 1.19.14.1 1.19.16.1; next 1.18; 1.18 date 2000.03.23.07.03.29; author thorpej; state Exp; branches 1.18.4.1 1.18.6.1; next 1.17; 1.17 date 99.11.20.00.37.59; author thorpej; state Exp; branches; next 1.16; 1.16 date 99.07.01.08.12.51; author itojun; state Exp; branches 1.16.2.1 1.16.8.1; next 1.15; 1.15 date 99.01.11.21.31.03; author thorpej; state Exp; branches 1.15.4.1 1.15.6.1; next 1.14; 1.14 date 98.12.22.02.51.33; author thorpej; state Exp; branches; next 1.13; 1.13 date 98.02.10.01.26.57; author perry; state Exp; branches; next 1.12; 1.12 date 96.09.09.17.14.05; author mycroft; state Exp; branches; next 1.11; 1.11 date 96.06.23.12.12.48; author mycroft; state Exp; branches; next 1.10; 1.10 date 96.02.13.23.42.55; author christos; state Exp; branches 1.10.4.1; next 1.9; 1.9 date 95.05.31.21.50.43; author mycroft; state Exp; branches; next 1.8; 1.8 date 95.04.13.06.35.03; author cgd; state Exp; branches; next 1.7; 1.7 date 95.03.26.20.32.31; author jtc; state Exp; branches; next 1.6; 1.6 date 94.06.29.06.38.24; author cgd; state Exp; branches; next 1.5; 1.5 date 94.06.09.16.02.50; author brezak; state Exp; branches; next 1.4; 1.4 date 94.05.13.06.06.24; author mycroft; state Exp; branches; next 1.3; 1.3 date 94.01.09.01.06.16; author mycroft; state Exp; branches; next 1.2; 1.2 date 94.01.08.21.21.51; author mycroft; state Exp; branches; next 1.1; 1.1 date 93.12.06.05.03.34; author hpeyerl; state Exp; branches 1.1.1.1; next ; 1.32.16.1 date 2021.04.03.22.29.01; author thorpej; state Exp; branches; next ; commitid 1gqS07EfPjskJTNC; 1.29.6.1 date 2008.09.28.10.40.58; author mjf; state Exp; branches; next ; 1.29.10.1 date 2009.05.04.08.14.17; author yamt; state Exp; branches; next ; 1.29.12.1 date 2008.09.18.04.37.01; author wrstuden; state Exp; branches; next ; 1.29.16.1 date 2008.10.19.22.17.46; author haad; state Exp; branches; next ; 1.28.8.1 date 2008.01.09.01.57.28; author matt; state Exp; branches; next ; 1.28.14.1 date 2008.02.18.21.07.08; author mjf; state Exp; branches; next ; 1.28.16.1 date 2007.12.26.19.57.40; author ad; state Exp; branches; next ; 1.28.20.1 date 2008.01.02.21.57.22; author bouyer; state Exp; branches; next ; 1.27.2.1 date 2007.07.01.21.50.50; author ad; state Exp; branches; next ; 1.27.4.1 date 2007.07.11.20.11.25; author mjf; state Exp; branches; next ; 1.26.26.1 date 2007.03.12.05.59.38; author rmind; state Exp; branches; next ; 1.25.4.1 date 2006.06.21.15.11.01; author yamt; state Exp; branches; next 1.25.4.2; 1.25.4.2 date 2007.09.03.14.42.59; author yamt; state Exp; branches; next 1.25.4.3; 1.25.4.3 date 2008.01.21.09.47.16; author yamt; state Exp; branches; next ; 1.24.4.1 date 2005.04.29.11.29.33; author kent; state Exp; branches; next ; 1.24.6.1 date 2005.03.19.08.36.38; author yamt; state Exp; branches; next ; 1.21.2.1 date 2004.08.03.10.54.40; author skrll; state Exp; branches; next 1.21.2.2; 1.21.2.2 date 2004.09.18.14.54.54; author skrll; state Exp; branches; next 1.21.2.3; 1.21.2.3 date 2004.09.21.13.37.12; author skrll; state Exp; branches; next 1.21.2.4; 1.21.2.4 date 2005.03.04.16.53.29; author skrll; state Exp; branches; next 1.21.2.5; 1.21.2.5 date 2005.12.11.10.29.24; author christos; state Exp; branches; next ; 1.19.2.1 date 2002.06.23.17.50.54; author jdolecek; state Exp; branches; next ; 1.19.14.1 date 2002.06.20.15.52.23; author gehenna; state Exp; branches; next ; 1.19.16.1 date 2003.06.30.02.21.21; author grant; state Exp; branches; next ; 1.18.4.1 date 2003.11.30.19.00.27; author he; state Exp; branches; next ; 1.18.6.1 date 2001.06.21.20.08.39; author nathanw; state Exp; branches; next 1.18.6.2; 1.18.6.2 date 2002.06.20.03.48.46; author nathanw; state Exp; branches; next ; 1.16.2.1 date 2000.11.20.18.10.31; author bouyer; state Exp; branches; next ; 1.16.8.1 date 99.12.27.18.36.17; author wrstuden; state Exp; branches; next ; 1.15.4.1 date 99.07.01.23.47.02; author thorpej; state Exp; branches; next ; 1.15.6.1 date 99.06.28.06.37.00; author itojun; state Exp; branches; next 1.15.6.2; 1.15.6.2 date 99.11.30.13.35.33; author itojun; state Exp; branches; next ; 1.10.4.1 date 96.12.11.04.01.06; author mycroft; state Exp; branches; next ; 1.1.1.1 date 98.01.05.09.54.13; author thorpej; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 98.01.05.09.56.09; author thorpej; state Exp; branches; next ; desc @@ 1.35 log @CTASSERT -> __CTASSERT to unbreak userland build. While here move __packed in tcp_debug.h back to where it was and note removal warrants more investigation. @ text @/* $NetBSD: ip_mroute.h,v 1.34 2021/02/03 11:53:43 roy Exp $ */ #ifndef _NETINET_IP_MROUTE_H_ #define _NETINET_IP_MROUTE_H_ /* * Definitions for IP multicast forwarding. * * Written by David Waitzman, BBN Labs, August 1988. * Modified by Steve Deering, Stanford, February 1989. * Modified by Ajit Thyagarajan, PARC, August 1993. * Modified by Ajit Thyagarajan, PARC, August 1994. * Modified by Ahmed Helmy, SGI, June 1996. * Modified by Pavlin Radoslavov, ICSI, October 2002. * * MROUTING Revision: 1.2 * and PIM-SMv2 and PIM-DM support, advanced API support, * bandwidth metering and signaling. */ #include #include #ifdef _KERNEL struct sockopt; /* from */ #endif /* * Multicast Routing set/getsockopt commands. */ #define MRT_INIT 100 /* initialize forwarder */ #define MRT_DONE 101 /* shut down forwarder */ #define MRT_ADD_VIF 102 /* create virtual interface */ #define MRT_DEL_VIF 103 /* delete virtual interface */ #define MRT_ADD_MFC 104 /* insert forwarding cache entry */ #define MRT_DEL_MFC 105 /* delete forwarding cache entry */ #define MRT_VERSION 106 /* get kernel version number */ #define MRT_ASSERT 107 /* enable assert processing */ #define MRT_PIM MRT_ASSERT /* enable PIM processing */ #define MRT_API_SUPPORT 109 /* supported MRT API */ #define MRT_API_CONFIG 110 /* config MRT API */ #define MRT_ADD_BW_UPCALL 111 /* create bandwidth monitor */ #define MRT_DEL_BW_UPCALL 112 /* delete bandwidth monitor */ /* * Types and macros for handling bitmaps with one bit per virtual interface. */ #define MAXVIFS 32 typedef u_int32_t vifbitmap_t; typedef u_int16_t vifi_t; /* type of a vif index */ #define VIFM_SET(n, m) ((m) |= (1 << (n))) #define VIFM_CLR(n, m) ((m) &= ~(1 << (n))) #define VIFM_ISSET(n, m) ((m) & (1 << (n))) #define VIFM_SETALL(m) ((m) = 0xffffffff) #define VIFM_CLRALL(m) ((m) = 0x00000000) #define VIFM_COPY(mfrom, mto) ((mto) = (mfrom)) #define VIFM_SAME(m1, m2) ((m1) == (m2)) #define VIFF_TUNNEL 0x1 /* vif represents a tunnel end-point */ #define VIFF_SRCRT 0x2 /* tunnel uses IP src routing */ #define VIFF_REGISTER 0x4 /* used for PIM Register encap/decap */ /* * Argument structure for MRT_ADD_VIF. * (MRT_DEL_VIF takes a single vifi_t argument.) */ struct vifctl { vifi_t vifc_vifi; /* the index of the vif to be added */ u_int8_t vifc_flags; /* VIFF_ flags defined below */ u_int8_t vifc_threshold; /* min ttl required to forward on vif */ u_int32_t vifc_rate_limit; /* max rate */ struct in_addr vifc_lcl_addr;/* local interface address */ struct in_addr vifc_rmt_addr;/* remote address (tunnels only) */ }; /* * Argument structure for MRT_ADD_MFC and MRT_DEL_MFC. * XXX if you change this, make sure to change struct mfcctl2 as well. */ struct mfcctl { struct in_addr mfcc_origin; /* ip origin of mcasts */ struct in_addr mfcc_mcastgrp; /* multicast group associated */ vifi_t mfcc_parent; /* incoming vif */ u_int8_t mfcc_ttls[MAXVIFS]; /* forwarding ttls on vifs */ }; /* * The new argument structure for MRT_ADD_MFC and MRT_DEL_MFC overlays * and extends the old struct mfcctl. */ struct mfcctl2 { /* the mfcctl fields */ struct in_addr mfcc_origin; /* ip origin of mcasts */ struct in_addr mfcc_mcastgrp; /* multicast group associated*/ vifi_t mfcc_parent; /* incoming vif */ u_int8_t mfcc_ttls[MAXVIFS]; /* forwarding ttls on vifs */ /* extension fields */ u_int8_t mfcc_flags[MAXVIFS]; /* the MRT_MFC_FLAGS_* flags */ struct in_addr mfcc_rp; /* the RP address */ }; /* * The advanced-API flags. * * The MRT_MFC_FLAGS_XXX API flags are also used as flags * for the mfcc_flags field. */ #define MRT_MFC_FLAGS_DISABLE_WRONGVIF (1 << 0) /* disable WRONGVIF signals */ #define MRT_MFC_FLAGS_BORDER_VIF (1 << 1) /* border vif */ #define MRT_MFC_RP (1 << 8) /* enable RP address */ #define MRT_MFC_BW_UPCALL (1 << 9) /* enable bw upcalls */ #define MRT_MFC_FLAGS_ALL (MRT_MFC_FLAGS_DISABLE_WRONGVIF | \ MRT_MFC_FLAGS_BORDER_VIF) #define MRT_API_FLAGS_ALL (MRT_MFC_FLAGS_ALL | \ MRT_MFC_RP | \ MRT_MFC_BW_UPCALL) /* * Structure for installing or delivering an upcall if the * measured bandwidth is above or below a threshold. * * User programs (e.g. daemons) may have a need to know when the * bandwidth used by some data flow is above or below some threshold. * This interface allows the userland to specify the threshold (in * bytes and/or packets) and the measurement interval. Flows are * all packet with the same source and destination IP address. * At the moment the code is only used for multicast destinations * but there is nothing that prevents its use for unicast. * * The measurement interval cannot be shorter than some Tmin (currently, 3s). * The threshold is set in packets and/or bytes per_interval. * * Measurement works as follows: * * For >= measurements: * The first packet marks the start of a measurement interval. * During an interval we count packets and bytes, and when we * pass the threshold we deliver an upcall and we are done. * The first packet after the end of the interval resets the * count and restarts the measurement. * * For <= measurement: * We start a timer to fire at the end of the interval, and * then for each incoming packet we count packets and bytes. * When the timer fires, we compare the value with the threshold, * schedule an upcall if we are below, and restart the measurement * (reschedule timer and zero counters). */ struct bw_data { struct timeval b_time; u_int64_t b_packets; u_int64_t b_bytes; }; struct bw_upcall { struct in_addr bu_src; /* source address */ struct in_addr bu_dst; /* destination address */ u_int32_t bu_flags; /* misc flags (see below) */ #define BW_UPCALL_UNIT_PACKETS (1 << 0) /* threshold (in packets) */ #define BW_UPCALL_UNIT_BYTES (1 << 1) /* threshold (in bytes) */ #define BW_UPCALL_GEQ (1 << 2) /* upcall if bw >= threshold */ #define BW_UPCALL_LEQ (1 << 3) /* upcall if bw <= threshold */ #define BW_UPCALL_DELETE_ALL (1 << 4) /* delete all upcalls for s,d*/ struct bw_data bu_threshold; /* the bw threshold */ struct bw_data bu_measured; /* the measured bw */ }; /* max. number of upcalls to deliver together */ #define BW_UPCALLS_MAX 128 /* min. threshold time interval for bandwidth measurement */ #define BW_UPCALL_THRESHOLD_INTERVAL_MIN_SEC 3 #define BW_UPCALL_THRESHOLD_INTERVAL_MIN_USEC 0 /* * Argument structure used by mrouted to get src-grp pkt counts. */ struct sioc_sg_req { struct in_addr src; struct in_addr grp; u_long pktcnt; u_long bytecnt; u_long wrong_if; }; /* * Argument structure used by mrouted to get vif pkt counts. */ struct sioc_vif_req { vifi_t vifi; /* vif number */ u_long icount; /* input packet count on vif */ u_long ocount; /* output packet count on vif */ u_long ibytes; /* input byte count on vif */ u_long obytes; /* output byte count on vif */ }; /* * The kernel's multicast routing statistics. */ struct mrtstat { u_long mrts_mfc_lookups; /* # forw. cache hash table hits */ u_long mrts_mfc_misses; /* # forw. cache hash table misses */ u_long mrts_upcalls; /* # calls to mrouted */ u_long mrts_no_route; /* no route for packet's origin */ u_long mrts_bad_tunnel; /* malformed tunnel options */ u_long mrts_cant_tunnel; /* no room for tunnel options */ u_long mrts_wrong_if; /* arrived on wrong interface */ u_long mrts_upq_ovflw; /* upcall Q overflow */ u_long mrts_cache_cleanups; /* # entries with no upcalls */ u_long mrts_drop_sel; /* pkts dropped selectively */ u_long mrts_q_overflow; /* pkts dropped - Q overflow */ u_long mrts_pkt2large; /* pkts dropped - size > BKT SIZE */ u_long mrts_upq_sockfull; /* upcalls dropped - socket full */ }; #ifdef _KERNEL /* * The kernel's virtual-interface structure. */ struct encaptab; struct vif { struct mbuf *tbf_q, **tbf_t; /* packet queue */ struct timeval tbf_last_pkt_t; /* arr. time of last pkt */ u_int32_t tbf_n_tok; /* no of tokens in bucket */ u_int32_t tbf_q_len; /* length of queue at this vif */ u_int32_t tbf_max_q_len; /* max. queue length */ u_int8_t v_flags; /* VIFF_ flags defined above */ u_int8_t v_threshold; /* min ttl required to forward on vif */ u_int32_t v_rate_limit; /* max rate */ struct in_addr v_lcl_addr; /* local interface address */ struct in_addr v_rmt_addr; /* remote address (tunnels only) */ struct ifnet *v_ifp; /* pointer to interface */ u_long v_pkt_in; /* # pkts in on interface */ u_long v_pkt_out; /* # pkts out on interface */ u_long v_bytes_in; /* # bytes in on interface */ u_long v_bytes_out; /* # bytes out on interface */ struct route v_route; /* cached route if this is a tunnel */ callout_t v_repq_ch; /* for tbf_reprocess_q() */ const struct encaptab *v_encap_cookie; }; /* * The kernel's multicast forwarding cache entry structure. * (A field for the type of service (mfc_tos) is to be added * at a future point.) */ struct mfc { LIST_ENTRY(mfc) mfc_hash; struct in_addr mfc_origin; /* ip origin of mcasts */ struct in_addr mfc_mcastgrp; /* multicast group associated */ vifi_t mfc_parent; /* incoming vif */ u_int8_t mfc_ttls[MAXVIFS]; /* forwarding ttls on vifs */ u_long mfc_pkt_cnt; /* pkt count for src-grp */ u_long mfc_byte_cnt; /* byte count for src-grp */ u_long mfc_wrong_if; /* wrong if for src-grp */ int mfc_expire; /* time to clean entry up */ struct timeval mfc_last_assert; /* last time I sent an assert */ struct rtdetq *mfc_stall; /* pkts waiting for route */ u_int8_t mfc_flags[MAXVIFS]; /* the MRT_MFC_FLAGS_* flags */ struct in_addr mfc_rp; /* the RP address */ struct bw_meter *mfc_bw_meter; /* list of bandwidth meters */ }; /* * Structure used to communicate from kernel to multicast router. * (Note the convenient similarity to an IP packet.) */ struct igmpmsg { u_int32_t unused1; u_int32_t unused2; u_int8_t im_msgtype; /* what type of message */ #define IGMPMSG_NOCACHE 1 /* no MFC in the kernel */ #define IGMPMSG_WRONGVIF 2 /* packet came from wrong interface */ #define IGMPMSG_WHOLEPKT 3 /* PIM pkt for user level encap. */ #define IGMPMSG_BW_UPCALL 4 /* BW monitoring upcall */ u_int8_t im_mbz; /* must be zero */ u_int8_t im_vif; /* vif rec'd on */ u_int8_t unused3; struct in_addr im_src, im_dst; }; #ifdef __CTASSERT __CTASSERT(sizeof(struct igmpmsg) == 20); #endif /* * Argument structure used for pkt info. while upcall is made. */ struct rtdetq { struct mbuf *m; /* a copy of the packet */ struct ifnet *ifp; /* interface pkt came in on */ #ifdef UPCALL_TIMING struct timeval t; /* timestamp */ #endif /* UPCALL_TIMING */ struct rtdetq *next; }; #define MFCTBLSIZ 256 #define MAX_UPQ 4 /* max. no of pkts in upcall Q */ /* * Token bucket filter code */ #define MAX_BKT_SIZE 10000 /* 10K bytes size */ #define MAXQSIZE 10 /* max. no of pkts in token queue */ /* * Structure for measuring the bandwidth and sending an upcall if the * measured bandwidth is above or below a threshold. */ struct bw_meter { struct bw_meter *bm_mfc_next; /* next bw meter (same mfc) */ struct bw_meter *bm_time_next; /* next bw meter (same time) */ uint32_t bm_time_hash; /* the time hash value */ struct mfc *bm_mfc; /* the corresponding mfc */ uint32_t bm_flags; /* misc flags (see below) */ #define BW_METER_UNIT_PACKETS (1 << 0) /* threshold (in packets) */ #define BW_METER_UNIT_BYTES (1 << 1) /* threshold (in bytes) */ #define BW_METER_GEQ (1 << 2) /* upcall if bw >= threshold */ #define BW_METER_LEQ (1 << 3) /* upcall if bw <= threshold */ #define BW_METER_USER_FLAGS (BW_METER_UNIT_PACKETS | \ BW_METER_UNIT_BYTES | \ BW_METER_GEQ | \ BW_METER_LEQ) #define BW_METER_UPCALL_DELIVERED (1 << 24) /* upcall was delivered */ struct bw_data bm_threshold; /* the upcall threshold */ struct bw_data bm_measured; /* the measured bw */ struct timeval bm_start_time; /* abs. time */ }; int ip_mrouter_set(struct socket *, struct sockopt *); int ip_mrouter_get(struct socket *, struct sockopt *); int mrt_ioctl(struct socket *, u_long, void *); int ip_mrouter_done(void); void ip_mrouter_detach(struct ifnet *); void reset_vif(struct vif *); int ip_mforward(struct mbuf *, struct ifnet *); #endif /* _KERNEL */ #endif /* !_NETINET_IP_MROUTE_H_ */ @ 1.34 log @Sprinkle CTASSERT to enforce on-wire layout without __packed @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.33 2021/02/03 05:51:40 roy Exp $ */ d287 2 a288 2 #ifdef CTASSERT CTASSERT(sizeof(struct igmpmsg) == 20); @ 1.33 log @Remove __packed from various network structures They are already network aligned and adding the __packed attribute just causes needless compiler warnings about accssing members of packed objects. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.32 2018/02/07 11:42:58 maxv Exp $ */ d287 3 @ 1.32 log @Remove RSVP_ISI, that's mostly dead code. FreeBSD and OpenBSD too removed it; FreeBSD kept some pieces but they are mostly no-opts. Sent on tech-net@@, no comment. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.31 2008/08/07 06:20:14 cegger Exp $ */ d286 1 a286 1 } __packed; @ 1.32.16.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.35 2021/02/03 18:13:13 roy Exp $ */ d286 1 a286 4 }; #ifdef __CTASSERT __CTASSERT(sizeof(struct igmpmsg) == 20); #endif @ 1.31 log @make this compile as proposed by dholland@@ @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.30 2008/08/06 15:01:23 plunky Exp $ */ a244 4 #ifdef RSVP_ISI int v_rsvp_on; /* # RSVP listening on this vif */ struct socket *v_rsvpd; /* # RSVPD daemon */ #endif /* RSVP_ISI */ a340 8 #ifdef RSVP_ISI int ip_mforward(struct mbuf *, struct ifnet *, struct ip_moptions *); int legal_vif_num(int); int ip_rsvp_vif_init(struct socket *, struct mbuf *); int ip_rsvp_vif_done(struct socket *, struct mbuf *); void ip_rsvp_force_done(struct socket *); void rsvp_input(struct mbuf *, int, int); #else a341 1 #endif @ 1.30 log @Convert socket options code to use a sockopt structure instead of laying everything into an mbuf. approved by core @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.29 2007/12/25 18:33:46 perry Exp $ */ d24 4 @ 1.29 log @Convert many of the uses of __attribute__ to equivalent __packed, __unused and __dead macros from cdefs.h @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.28 2007/07/09 21:11:11 ad Exp $ */ d335 2 a336 2 int ip_mrouter_set(struct socket *, int, struct mbuf **); int ip_mrouter_get(struct socket *, int, struct mbuf **); @ 1.29.10.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.29 2007/12/25 18:33:46 perry Exp $ */ a23 4 #ifdef _KERNEL struct sockopt; /* from */ #endif d335 2 a336 2 int ip_mrouter_set(struct socket *, struct sockopt *); int ip_mrouter_get(struct socket *, struct sockopt *); @ 1.29.16.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.31 2008/08/07 06:20:14 cegger Exp $ */ a23 4 #ifdef _KERNEL struct sockopt; /* from */ #endif d335 2 a336 2 int ip_mrouter_set(struct socket *, struct sockopt *); int ip_mrouter_get(struct socket *, struct sockopt *); @ 1.29.6.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD$ */ a23 4 #ifdef _KERNEL struct sockopt; /* from */ #endif d335 2 a336 2 int ip_mrouter_set(struct socket *, struct sockopt *); int ip_mrouter_get(struct socket *, struct sockopt *); @ 1.29.12.1 log @Sync with wrstuden-revivesa-base-2. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.29 2007/12/25 18:33:46 perry Exp $ */ a23 4 #ifdef _KERNEL struct sockopt; /* from */ #endif d335 2 a336 2 int ip_mrouter_set(struct socket *, struct sockopt *); int ip_mrouter_get(struct socket *, struct sockopt *); @ 1.28 log @Merge some of the less invasive changes from the vmlocking branch: - kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.27 2007/03/04 06:03:21 christos Exp $ */ d286 1 a286 1 } __attribute__((__packed__)); @ 1.28.14.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.29 2007/12/25 18:33:46 perry Exp $ */ d286 1 a286 1 } __packed; @ 1.28.8.1 log @sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.28 2007/07/09 21:11:11 ad Exp $ */ d286 1 a286 1 } __packed; @ 1.28.20.1 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD$ */ d286 1 a286 1 } __packed; @ 1.28.16.1 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.29 2007/12/25 18:33:46 perry Exp $ */ d286 1 a286 1 } __packed; @ 1.27 log @Kill caddr_t; there will be some MI fallout, but it will be fixed shortly. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.26 2005/12/10 23:36:23 elad Exp $ */ d240 1 a240 1 struct callout v_repq_ch; /* for tbf_reprocess_q() */ @ 1.27.4.1 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.28 2007/07/09 21:11:11 ad Exp $ */ d240 1 a240 1 callout_t v_repq_ch; /* for tbf_reprocess_q() */ @ 1.27.2.1 log @Adapt to callout API change. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.27 2007/03/04 06:03:21 christos Exp $ */ d240 1 a240 1 callout_t v_repq_ch; /* for tbf_reprocess_q() */ @ 1.26 log @Multiple inclusion protection, as suggested by christos@@ on tech-kern@@ few days ago. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.25 2005/02/26 22:45:12 perry Exp $ */ d337 1 a337 1 int mrt_ioctl(struct socket *, u_long, caddr_t); @ 1.26.26.1 log @Sync with HEAD. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.26 2005/12/10 23:36:23 elad Exp $ */ d337 1 a337 1 int mrt_ioctl(struct socket *, u_long, void *); @ 1.25 log @nuke trailing whitespace @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.24 2004/09/04 23:30:07 manu Exp $ */ d354 1 a354 1 #endif /* _NETINET_IP_MROUTE_H_ */ @ 1.25.4.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.25 2005/02/26 22:45:12 perry Exp $ */ d354 1 a354 1 #endif /* !_NETINET_IP_MROUTE_H_ */ @ 1.25.4.2 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.25.4.1 2006/06/21 15:11:01 yamt Exp $ */ d240 1 a240 1 callout_t v_repq_ch; /* for tbf_reprocess_q() */ d337 1 a337 1 int mrt_ioctl(struct socket *, u_long, void *); @ 1.25.4.3 log @sync with head @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.25.4.2 2007/09/03 14:42:59 yamt Exp $ */ d286 1 a286 1 } __packed; @ 1.24 log @IPv4 PIM support, based on a submission from Pavlin Radoslavov posted on tech-net@@ @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.23 2004/04/21 17:49:46 itojun Exp $ */ d133 1 a133 1 * For >= measurements: @ 1.24.4.1 log @sync with -current @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.25 2005/02/26 22:45:12 perry Exp $ */ d133 1 a133 1 * For >= measurements: @ 1.24.6.1 log @sync with head. xen and whitespace. xen part is not finished. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.24 2004/09/04 23:30:07 manu Exp $ */ d133 1 a133 1 * For >= measurements: @ 1.23 log @no space between function name and paren: foo (blah) -> foo(blah) @ text @d1 4 a4 1 /* $NetBSD: ip_mroute.h,v 1.22 2004/04/18 21:00:36 matt Exp $ */ d13 2 d17 2 a20 3 #ifndef _NETINET_IP_MROUTE_H_ #define _NETINET_IP_MROUTE_H_ d34 6 a39 1 #define MRT_ASSERT 107 /* enable PIM assert processing */ d59 1 d76 1 a76 1 * (mfcc_tos to be added at a future point) d86 88 d265 3 d278 4 a281 2 #define IGMPMSG_NOCACHE 1 #define IGMPMSG_WRONGVIF 2 d309 25 d335 6 a340 6 int ip_mrouter_set(struct socket *, int, struct mbuf **); int ip_mrouter_get(struct socket *, int, struct mbuf **); int mrt_ioctl(struct socket *, u_long, caddr_t); int ip_mrouter_done(void); void ip_mrouter_detach(struct ifnet *); void reset_vif(struct vif *); d342 6 a347 7 int ip_mforward(struct mbuf *, struct ifnet *, struct ip_moptions *); int legal_vif_num(int); int ip_rsvp_vif_init(struct socket *, struct mbuf *); int ip_rsvp_vif_done(struct socket *, struct mbuf *); void ip_rsvp_force_done(struct socket *); /*int rsvp_input(struct mbuf *, struct ifnet *);*/ void rsvp_input(struct mbuf *, int, int); d349 1 a349 1 int ip_mforward(struct mbuf *, struct ifnet *); @ 1.22 log @De __P() @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.21 2003/06/26 03:35:00 itojun Exp $ */ d207 6 a212 6 int ip_mrouter_set (struct socket *, int, struct mbuf **); int ip_mrouter_get (struct socket *, int, struct mbuf **); int mrt_ioctl (struct socket *, u_long, caddr_t); int ip_mrouter_done (void); void ip_mrouter_detach (struct ifnet *); void reset_vif (struct vif *); d214 7 a220 7 int ip_mforward (struct mbuf *, struct ifnet *, struct ip_moptions *); int legal_vif_num (int); int ip_rsvp_vif_init (struct socket *, struct mbuf *); int ip_rsvp_vif_done (struct socket *, struct mbuf *); void ip_rsvp_force_done (struct socket *); /*int rsvp_input (struct mbuf *, struct ifnet *);*/ void rsvp_input (struct mbuf *, int, int); d222 1 a222 1 int ip_mforward (struct mbuf *, struct ifnet *); @ 1.21 log @cleanup multicast routing stuff on if_detach(). XXX sideeffect to running instance of multicast routing daemon unknown @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.20 2002/06/09 16:33:41 itojun Exp $ */ d207 6 a212 6 int ip_mrouter_set __P((struct socket *, int, struct mbuf **)); int ip_mrouter_get __P((struct socket *, int, struct mbuf **)); int mrt_ioctl __P((struct socket *, u_long, caddr_t)); int ip_mrouter_done __P((void)); void ip_mrouter_detach(struct ifnet *); void reset_vif __P((struct vif *)); d214 7 a220 7 int ip_mforward __P((struct mbuf *, struct ifnet *, struct ip_moptions *)); int legal_vif_num __P((int)); int ip_rsvp_vif_init __P((struct socket *, struct mbuf *)); int ip_rsvp_vif_done __P((struct socket *, struct mbuf *)); void ip_rsvp_force_done __P((struct socket *)); /*int rsvp_input __P((struct mbuf *, struct ifnet *));*/ void rsvp_input __P((struct mbuf *, int, int)); d222 1 a222 1 int ip_mforward __P((struct mbuf *, struct ifnet *)); @ 1.21.2.1 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.23 2004/04/21 17:49:46 itojun Exp $ */ d207 4 a210 4 int ip_mrouter_set(struct socket *, int, struct mbuf **); int ip_mrouter_get(struct socket *, int, struct mbuf **); int mrt_ioctl(struct socket *, u_long, caddr_t); int ip_mrouter_done(void); d212 1 a212 1 void reset_vif(struct vif *); d214 7 a220 7 int ip_mforward(struct mbuf *, struct ifnet *, struct ip_moptions *); int legal_vif_num(int); int ip_rsvp_vif_init(struct socket *, struct mbuf *); int ip_rsvp_vif_done(struct socket *, struct mbuf *); void ip_rsvp_force_done(struct socket *); /*int rsvp_input(struct mbuf *, struct ifnet *);*/ void rsvp_input(struct mbuf *, int, int); d222 1 a222 1 int ip_mforward(struct mbuf *, struct ifnet *); @ 1.21.2.2 log @Sync with HEAD. @ text @d1 1 a1 4 /* $NetBSD: ip_mroute.h,v 1.24 2004/09/04 23:30:07 manu Exp $ */ #ifndef _NETINET_IP_MROUTE_H_ #define _NETINET_IP_MROUTE_H_ a9 2 * Modified by Ahmed Helmy, SGI, June 1996. * Modified by Pavlin Radoslavov, ICSI, October 2002. a11 2 * and PIM-SMv2 and PIM-DM support, advanced API support, * bandwidth metering and signaling. d14 3 d30 1 a30 6 #define MRT_ASSERT 107 /* enable assert processing */ #define MRT_PIM MRT_ASSERT /* enable PIM processing */ #define MRT_API_SUPPORT 109 /* supported MRT API */ #define MRT_API_CONFIG 110 /* config MRT API */ #define MRT_ADD_BW_UPCALL 111 /* create bandwidth monitor */ #define MRT_DEL_BW_UPCALL 112 /* delete bandwidth monitor */ a49 1 #define VIFF_REGISTER 0x4 /* used for PIM Register encap/decap */ d66 1 a66 1 * XXX if you change this, make sure to change struct mfcctl2 as well. a75 88 * The new argument structure for MRT_ADD_MFC and MRT_DEL_MFC overlays * and extends the old struct mfcctl. */ struct mfcctl2 { /* the mfcctl fields */ struct in_addr mfcc_origin; /* ip origin of mcasts */ struct in_addr mfcc_mcastgrp; /* multicast group associated*/ vifi_t mfcc_parent; /* incoming vif */ u_int8_t mfcc_ttls[MAXVIFS]; /* forwarding ttls on vifs */ /* extension fields */ u_int8_t mfcc_flags[MAXVIFS]; /* the MRT_MFC_FLAGS_* flags */ struct in_addr mfcc_rp; /* the RP address */ }; /* * The advanced-API flags. * * The MRT_MFC_FLAGS_XXX API flags are also used as flags * for the mfcc_flags field. */ #define MRT_MFC_FLAGS_DISABLE_WRONGVIF (1 << 0) /* disable WRONGVIF signals */ #define MRT_MFC_FLAGS_BORDER_VIF (1 << 1) /* border vif */ #define MRT_MFC_RP (1 << 8) /* enable RP address */ #define MRT_MFC_BW_UPCALL (1 << 9) /* enable bw upcalls */ #define MRT_MFC_FLAGS_ALL (MRT_MFC_FLAGS_DISABLE_WRONGVIF | \ MRT_MFC_FLAGS_BORDER_VIF) #define MRT_API_FLAGS_ALL (MRT_MFC_FLAGS_ALL | \ MRT_MFC_RP | \ MRT_MFC_BW_UPCALL) /* * Structure for installing or delivering an upcall if the * measured bandwidth is above or below a threshold. * * User programs (e.g. daemons) may have a need to know when the * bandwidth used by some data flow is above or below some threshold. * This interface allows the userland to specify the threshold (in * bytes and/or packets) and the measurement interval. Flows are * all packet with the same source and destination IP address. * At the moment the code is only used for multicast destinations * but there is nothing that prevents its use for unicast. * * The measurement interval cannot be shorter than some Tmin (currently, 3s). * The threshold is set in packets and/or bytes per_interval. * * Measurement works as follows: * * For >= measurements: * The first packet marks the start of a measurement interval. * During an interval we count packets and bytes, and when we * pass the threshold we deliver an upcall and we are done. * The first packet after the end of the interval resets the * count and restarts the measurement. * * For <= measurement: * We start a timer to fire at the end of the interval, and * then for each incoming packet we count packets and bytes. * When the timer fires, we compare the value with the threshold, * schedule an upcall if we are below, and restart the measurement * (reschedule timer and zero counters). */ struct bw_data { struct timeval b_time; u_int64_t b_packets; u_int64_t b_bytes; }; struct bw_upcall { struct in_addr bu_src; /* source address */ struct in_addr bu_dst; /* destination address */ u_int32_t bu_flags; /* misc flags (see below) */ #define BW_UPCALL_UNIT_PACKETS (1 << 0) /* threshold (in packets) */ #define BW_UPCALL_UNIT_BYTES (1 << 1) /* threshold (in bytes) */ #define BW_UPCALL_GEQ (1 << 2) /* upcall if bw >= threshold */ #define BW_UPCALL_LEQ (1 << 3) /* upcall if bw <= threshold */ #define BW_UPCALL_DELETE_ALL (1 << 4) /* delete all upcalls for s,d*/ struct bw_data bu_threshold; /* the bw threshold */ struct bw_data bu_measured; /* the measured bw */ }; /* max. number of upcalls to deliver together */ #define BW_UPCALLS_MAX 128 /* min. threshold time interval for bandwidth measurement */ #define BW_UPCALL_THRESHOLD_INTERVAL_MIN_SEC 3 #define BW_UPCALL_THRESHOLD_INTERVAL_MIN_USEC 0 /* a166 3 u_int8_t mfc_flags[MAXVIFS]; /* the MRT_MFC_FLAGS_* flags */ struct in_addr mfc_rp; /* the RP address */ struct bw_meter *mfc_bw_meter; /* list of bandwidth meters */ d177 2 a178 4 #define IGMPMSG_NOCACHE 1 /* no MFC in the kernel */ #define IGMPMSG_WRONGVIF 2 /* packet came from wrong interface */ #define IGMPMSG_WHOLEPKT 3 /* PIM pkt for user level encap. */ #define IGMPMSG_BW_UPCALL 4 /* BW monitoring upcall */ a205 25 /* * Structure for measuring the bandwidth and sending an upcall if the * measured bandwidth is above or below a threshold. */ struct bw_meter { struct bw_meter *bm_mfc_next; /* next bw meter (same mfc) */ struct bw_meter *bm_time_next; /* next bw meter (same time) */ uint32_t bm_time_hash; /* the time hash value */ struct mfc *bm_mfc; /* the corresponding mfc */ uint32_t bm_flags; /* misc flags (see below) */ #define BW_METER_UNIT_PACKETS (1 << 0) /* threshold (in packets) */ #define BW_METER_UNIT_BYTES (1 << 1) /* threshold (in bytes) */ #define BW_METER_GEQ (1 << 2) /* upcall if bw >= threshold */ #define BW_METER_LEQ (1 << 3) /* upcall if bw <= threshold */ #define BW_METER_USER_FLAGS (BW_METER_UNIT_PACKETS | \ BW_METER_UNIT_BYTES | \ BW_METER_GEQ | \ BW_METER_LEQ) #define BW_METER_UPCALL_DELIVERED (1 << 24) /* upcall was delivered */ struct bw_data bm_threshold; /* the upcall threshold */ struct bw_data bm_measured; /* the measured bw */ struct timeval bm_start_time; /* abs. time */ }; d207 6 a212 6 int ip_mrouter_set(struct socket *, int, struct mbuf **); int ip_mrouter_get(struct socket *, int, struct mbuf **); int mrt_ioctl(struct socket *, u_long, caddr_t); int ip_mrouter_done(void); void ip_mrouter_detach(struct ifnet *); void reset_vif(struct vif *); d214 7 a220 6 int ip_mforward(struct mbuf *, struct ifnet *, struct ip_moptions *); int legal_vif_num(int); int ip_rsvp_vif_init(struct socket *, struct mbuf *); int ip_rsvp_vif_done(struct socket *, struct mbuf *); void ip_rsvp_force_done(struct socket *); void rsvp_input(struct mbuf *, int, int); d222 1 a222 1 int ip_mforward(struct mbuf *, struct ifnet *); @ 1.21.2.3 log @Fix the sync with head I botched. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.21.2.1 2004/08/03 10:54:40 skrll Exp $ */ @ 1.21.2.4 log @Sync with HEAD. Hi Perry! @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.21.2.3 2004/09/21 13:37:12 skrll Exp $ */ d133 1 a133 1 * For >= measurements: @ 1.21.2.5 log @Sync with head. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.26 2005/12/10 23:36:23 elad Exp $ */ d354 1 a354 1 #endif /* !_NETINET_IP_MROUTE_H_ */ @ 1.20 log @whitespace @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.19 2001/05/08 10:07:15 itojun Exp $ */ d211 1 @ 1.19 log @pull encapsulated packet for vif* via ip_encap framework. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.18 2000/03/23 07:03:29 thorpej Exp $ */ d74 1 a74 1 d85 1 a85 1 d116 1 a116 1 d152 1 a152 1 * (A field for the type of service (mfc_tos) is to be added d199 1 a199 1 d201 1 a201 1 * Token bucket filter code d205 1 a205 1 @ 1.19.16.1 log @Pull up revision 1.21 (requested by itojun in ticket #1342): cleanup multicast routing stuff on if_detach(). @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.19 2001/05/08 10:07:15 itojun Exp $ */ a210 1 void ip_mrouter_detach(struct ifnet *); @ 1.19.2.1 log @catch up with -current on kqueue branch @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.19 2001/05/08 10:07:15 itojun Exp $ */ d74 1 a74 1 d85 1 a85 1 d116 1 a116 1 d152 1 a152 1 * (A field for the type of service (mfc_tos) is to be added d199 1 a199 1 d201 1 a201 1 * Token bucket filter code d205 1 a205 1 @ 1.19.14.1 log @catch up with -current. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.20 2002/06/09 16:33:41 itojun Exp $ */ d74 1 a74 1 d85 1 a85 1 d116 1 a116 1 d152 1 a152 1 * (A field for the type of service (mfc_tos) is to be added d199 1 a199 1 d201 1 a201 1 * Token bucket filter code d205 1 a205 1 @ 1.18 log @New callout mechanism with two major improvements over the old timeout()/untimeout() API: - Clients supply callout handle storage, thus eliminating problems of resource allocation. - Insertion and removal of callouts is constant time, important as this facility is used quite a lot in the kernel. The old timeout()/untimeout() API has been removed from the kernel. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.17 1999/11/20 00:37:59 thorpej Exp $ */ d123 1 d147 1 a222 1 int mrt_ipip_input __P((struct mbuf *, int)); @ 1.18.4.1 log @Pull up revision 1.21 via patch, requested by itojun in ticket #54: Clean up multicast routing when an interface is detached. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.18 2000/03/23 07:03:29 thorpej Exp $ */ a208 1 void ip_mrouter_detach __P((struct ifnet *)); @ 1.18.6.1 log @Catch up to -current. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.18 2000/03/23 07:03:29 thorpej Exp $ */ a122 1 struct encaptab; a145 1 const struct encaptab *v_encap_cookie; d221 1 @ 1.18.6.2 log @Catch up to -current. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.18.6.1 2001/06/21 20:08:39 nathanw Exp $ */ d74 1 a74 1 d85 1 a85 1 d116 1 a116 1 d152 1 a152 1 * (A field for the type of service (mfc_tos) is to be added d199 1 a199 1 d201 1 a201 1 * Token bucket filter code d205 1 a205 1 @ 1.17 log @Add the `packed' attribute to structures which describe wire protocol data. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.16 1999/07/01 08:12:51 itojun Exp $ */ d18 1 d141 1 @ 1.16 log @IPv6 kernel code, based on KAME/NetBSD 1.4, SNAP kit 19990628. (Sorry for a big commit, I can't separate this into several pieces...) Pls check sys/netinet6/TODO and sys/netinet6/IMPLEMENTATION for details. - sys/kern: do not assume single mbuf, accept chained mbuf on passing data from userland to kernel (or other way round). - "midway" ATM card: ATM PVC pseudo device support, like those done in ALTQ package (ftp://ftp.csl.sony.co.jp/pub/kjc/). - sys/netinet/tcp*: IPv4/v6 dual stack tcp support. - sys/netinet/{ip6,icmp6}.h, sys/net/pfkeyv2.h: IETF document assumes those file to be there so we patch it up. - sys/netinet: IPsec additions are here and there. - sys/netinet6/*: most of IPv6 code sits here. - sys/netkey: IPsec key management code - dev/pci/pcidevs: regen In my understanding no code here is subject to export control so it should be safe. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.15 1999/01/11 21:31:03 thorpej Exp $ */ d179 1 a179 1 }; @ 1.16.2.1 log @Update thorpej_scsipi to -current as of a month ago @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.18 2000/03/23 07:03:29 thorpej Exp $ */ a17 1 #include a139 1 struct callout v_repq_ch; /* for tbf_reprocess_q() */ d179 1 a179 1 } __attribute__((__packed__)); @ 1.16.8.1 log @Pull up to last week's -current. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.17 1999/11/20 00:37:59 thorpej Exp $ */ d179 1 a179 1 } __attribute__((__packed__)); @ 1.15 log @Adjust for the new IP-IP input path. mrt_ipip_input() is called from ipip_input(), and returns non-zero if mrt_ipip_input() handled the packet. XXX Eventually, the multicast code should probably use regular IP-IP XXX `interfaces', but mrouted knows about the VIF table, etc. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.14 1998/12/22 02:51:33 thorpej Exp $ */ d214 2 a215 1 void rsvp_input __P((struct mbuf *, struct ifnet *)); @ 1.15.4.1 log @Sync w/ -current. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.16 1999/07/01 08:12:51 itojun Exp $ */ d214 1 a214 2 /*int rsvp_input __P((struct mbuf *, struct ifnet *));*/ void rsvp_input __P((struct mbuf *, int, int)); @ 1.15.6.1 log @KAME/NetBSD 1.4 SNAP kit, dated 19990628. NOTE: this branch (kame) is used just for refernce. this may not compile due to multiple reasons. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.15 1999/01/11 21:31:03 thorpej Exp $ */ d214 1 a214 2 /*int rsvp_input __P((struct mbuf *, struct ifnet *));*/ void rsvp_input __P((struct mbuf *, int, int)); @ 1.15.6.2 log @bring in latest KAME (as of 19991130, KAME/NetBSD141) into kame branch just for reference purposes. This commit includes 1.4 -> 1.4.1 sync for kame branch. The branch does not compile at all (due to the lack of ALTQ and some other source code). Please do not try to modify the branch, this is just for referenre purposes. synchronization to latest KAME will take place on HEAD branch soon. @ text @@ 1.14 log @ipip_input() -> mrt_ipip_input(). @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.13 1998/02/10 01:26:57 perry Exp $ */ d218 1 a218 1 void mrt_ipip_input __P((struct mbuf *, ...)); @ 1.13 log @add/cleanup multiple inclusion protection. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.12 1996/09/09 17:14:05 mycroft Exp $ */ d218 1 a218 1 void ipip_input __P((struct mbuf *, ...)); @ 1.12 log @Rework the token bucket filter to use a list of packets rather than a static array. Also, fix several memory leaks. From Bill Fenner. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.11 1996/06/23 12:12:48 mycroft Exp $ */ d14 3 d221 2 @ 1.11 log @Return ENOPROTOOPT rather than picking pseudo-random error values. Don't allow SIOCGET{VIF,SG}CNT from sockets other than the multicast router. Restructure rip_ctloutput() like ip_ctloutput(), and fix memory leaks. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.10 1996/02/13 23:42:55 christos Exp $ */ a116 9 * Token bucket filter at each vif */ struct tbf { u_int32_t last_pkt_t; /* arr. time of last pkt */ u_int32_t n_tok; /* no of tokens in bucket */ u_int32_t q_len; /* length of queue at this vif */ }; /* d120 6 a128 1 struct tbf v_tbf; /* token bucket structure at intf. */ d199 1 a199 10 /* * Queue structure at each vif */ struct pkt_queue { u_int32_t pkt_len; /* length of packet in queue */ struct mbuf *pkt_m; /* pointer to packet mbuf */ struct ip *pkt_ip; /* pointer to ip header */ }; @ 1.10 log @netinet prototypes @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.9 1995/05/31 21:50:43 mycroft Exp $ */ d213 3 a215 3 int ip_mrouter_set __P((int, struct socket *, struct mbuf **)); int ip_mrouter_get __P((int, struct socket *, struct mbuf **)); int mrt_ioctl __P((u_long, caddr_t)); @ 1.10.4.1 log @From trunk: Eliminate SS_PRIV; instead, pass down a proc pointer to the usrreq methods that need it. Fix numerous memory leaks and bogus return values. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.11 1996/06/23 12:12:48 mycroft Exp $ */ d213 3 a215 3 int ip_mrouter_set __P((struct socket *, int, struct mbuf **)); int ip_mrouter_get __P((struct socket *, int, struct mbuf **)); int mrt_ioctl __P((struct socket *, u_long, caddr_t)); @ 1.9 log @Integrate multicast 3.5 distribution, with several bugs fixed and general cleanup. This is a (working) snapshot of work in progress. @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.8 1995/04/13 06:35:03 cgd Exp $ */ d213 16 a228 4 int ip_mforward __P((struct mbuf *, struct ifnet *)); int ip_mrouter_get __P((int, struct socket *, struct mbuf **)); int ip_mrouter_set __P((int, struct socket *, struct mbuf **)); int ip_mrouter_done __P((void)); @ 1.8 log @be a bit more careful and explicit with types. (basically a large no-op.) @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.7 1995/03/26 20:32:31 jtc Exp $ */ d4 1 a4 42 * Copyright (c) 1989 Stephen Deering. * Copyright (c) 1992 Regents of the University of California. * All rights reserved. * * This code is derived from software contributed to Berkeley by * Stephen Deering of Stanford University. * * 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. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @@(#)ip_mroute.h 7.2 (Berkeley) 7/8/92 */ /* * Definitions for the kernel part of DVMRP, * a Distance-Vector Multicast Routing Protocol. * (See RFC-1075.) d8 2 d11 1 a11 1 * MROUTING 1.0 d14 1 d17 1 a17 1 * DVMRP-specific setsockopt commands. d19 8 a26 8 #define DVMRP_INIT 100 #define DVMRP_DONE 101 #define DVMRP_ADD_VIF 102 #define DVMRP_DEL_VIF 103 #define DVMRP_ADD_LGRP 104 #define DVMRP_DEL_LGRP 105 #define DVMRP_ADD_MRT 106 #define DVMRP_DEL_MRT 107 d34 1 a34 1 typedef u_int16_t vifi_t; /* type of a vif index */ d36 7 a42 6 #define VIFM_SET(n, m) ((m) |= (1 << (n))) #define VIFM_CLR(n, m) ((m) &= ~(1 << (n))) #define VIFM_ISSET(n, m) ((m) & (1 << (n))) #define VIFM_CLRALL(m) ((m) = 0x00000000) #define VIFM_COPY(mfrom, mto) ((mto) = (mfrom)) #define VIFM_SAME(m1, m2) ((m1) == (m2)) d44 2 d48 2 a49 2 * Agument structure for DVMRP_ADD_VIF. * (DVMRP_DEL_VIF takes a single vifi_t argument.) d52 6 a57 5 vifi_t vifc_vifi; /* the index of the vif to be added */ u_int8_t vifc_flags; /* VIFF_ flags defined below */ u_int8_t vifc_threshold; /* min ttl required to forward on vif */ struct in_addr vifc_lcl_addr; /* local interface address */ struct in_addr vifc_rmt_addr; /* remote address (tunnels only) */ a59 4 #define VIFF_TUNNEL 0x1 /* vif represents a tunnel end-point */ #define VIFF_SRCRT 0x2 /* tunnel uses IP src routing */ d61 2 a62 1 * Argument structure for DVMRP_ADD_LGRP and DVMRP_DEL_LGRP. d64 5 a68 3 struct lgrplctl { vifi_t lgc_vifi; struct in_addr lgc_gaddr; d70 1 a70 2 d72 1 a72 2 * Argument structure for DVMRP_ADD_MRT. * (DVMRP_DEL_MRT takes a single struct in_addr argument, containing origin.) d74 6 a79 6 struct mrtctl { struct in_addr mrtc_origin; /* subnet origin of multicasts */ struct in_addr mrtc_originmask; /* subnet mask for origin */ vifi_t mrtc_parent; /* incoming vif */ vifbitmap_t mrtc_children; /* outgoing children vifs */ vifbitmap_t mrtc_leaves; /* subset of outgoing children vifs */ d81 1 a81 4 #ifdef _KERNEL d83 1 a83 1 * The kernel's virtual-interface structure. d85 6 a90 23 struct vif { u_char v_flags; /* VIFF_ flags defined above */ u_char v_threshold; /* min ttl required to forward on vif */ struct in_addr v_lcl_addr; /* local interface address */ struct in_addr v_rmt_addr; /* remote address (tunnels only) */ struct ifnet *v_ifp; /* pointer to interface */ struct in_addr *v_lcl_grps; /* list of local grps (phyints only) */ int v_lcl_grps_max; /* malloc'ed number of v_lcl_grps */ int v_lcl_grps_n; /* used number of v_lcl_grps */ u_long v_cached_group; /* last grp looked-up (phyints only) */ int v_cached_result; /* last look-up result (phyints only) */ }; /* * The kernel's multicast route structure. */ struct mrt { struct in_addr mrt_origin; /* subnet origin of multicasts */ struct in_addr mrt_originmask; /* subnet mask for origin */ vifi_t mrt_parent; /* incoming vif */ vifbitmap_t mrt_children; /* outgoing children vifs */ vifbitmap_t mrt_leaves; /* subset of outgoing children vifs */ struct mrt *mrt_next; /* forward link */ a93 7 #define MRTHASHSIZ 256 #if (MRTHASHSIZ & (MRTHASHSIZ - 1)) == 0 /* from sys:route.h */ #define MRTHASHMOD(h) ((h) & (MRTHASHSIZ - 1)) #else #define MRTHASHMOD(h) ((h) % MRTHASHSIZ) #endif d98 3 a100 4 u_long mrts_mrt_lookups; /* # multicast route lookups */ u_long mrts_mrt_misses; /* # multicast route cache misses */ u_long mrts_grp_lookups; /* # group address lookups */ u_long mrts_grp_misses; /* # group address cache misses */ d105 18 d125 88 d214 2 a215 1 int ip_mrouter_cmd __P((int, struct socket *, struct mbuf *)); d217 1 @ 1.7 log @KERNEL -> _KERNEL @ text @d1 1 a1 1 /* $NetBSD: ip_mroute.h,v 1.6 1994/06/29 06:38:24 cgd Exp $ */ d71 2 a72 2 typedef u_long vifbitmap_t; typedef u_short vifi_t; /* type of a vif index */ d88 2 a89 2 u_char vifc_flags; /* VIFF_ flags defined below */ u_char vifc_threshold; /* min ttl required to forward on vif */ @ 1.6 log @New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD' @ text @d1 1 a1 1 /* $NetBSD$ */ d120 1 a120 1 #ifdef KERNEL d175 1 a175 1 #endif /* KERNEL */ @ 1.5 log @Update to version 2 mrouting; from pre-4.4lite NetBSD + 4.4 mods @ text @d1 2 d39 1 a39 2 * from: @@(#)ip_mroute.h 7.2 (Berkeley) 7/8/92 * $Id $ @ 1.4 log @Update to 4.4-Lite networking code, with a few local changes. @ text @d3 2 a4 2 * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. d37 2 a38 2 * from: @@(#)ip_mroute.h 8.1 (Berkeley) 6/10/93 * $Id: $ d94 1 d150 1 a150 1 #define MRTHASHSIZ 64 d168 1 d171 1 a171 1 a173 1 a174 1 @ 1.3 log @Prototype the rest. @ text @d3 2 a4 2 * Copyright (c) 1992 Regents of the University of California. * All rights reserved. d37 2 a38 1 * @@(#)ip_mroute.h 7.2 (Berkeley) 7/8/92 a93 1 #define VIFF_SRCRT 0x2 /* tunnel uses IP src routing */ d149 1 a149 1 #define MRTHASHSIZ 256 a166 1 u_long mrts_wrong_if; /* arrived on wrong interface */ d169 1 a169 1 int ip_mforward __P((struct ip *, struct ifnet *, struct mbuf *)); d172 1 @ 1.2 log @Fix some inconsistent spacing; spaces at the end of lines, etc. @ text @d170 1 d172 1 a172 2 int ip_mrouter_done __P(()); @ 1.1 log @multicast support. >From Chris Maeda, cmaeda@@cs.washington.edu These patches are derived from the IP Multicast patches for BSDI. @ text @d93 1 a93 1 #define VIFF_SRCRT 0x2 /* tunnel uses IP src routing */ @ 1.1.1.1 log @Import sys/netinet from 4.4BSD-Lite for reference purposes. @ text @d3 2 a4 2 * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. d37 1 a37 1 * @@(#)ip_mroute.h 8.1 (Berkeley) 6/10/93 d93 1 d149 1 a149 1 #define MRTHASHSIZ 64 d167 1 a169 1 d171 1 a171 1 int ip_mrouter_done __P((void)); @ 1.1.1.2 log @Import sys/netinet from 4.4BSD-Lite2 for reference purposes. @ text @d37 1 a37 1 * @@(#)ip_mroute.h 8.2 (Berkeley) 4/28/95 a165 1 u_long mrts_wrong_if; /* arrived on the wrong interface */ d173 1 @