blob: 30e3ce424d0b191d0244e31244e548f8a773e1a5 [file] [log] [blame]
Mikio Haracdfc4ce2013-06-04 17:42:58 +09001// Copyright 2013 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Mikio Hara9704df92014-04-27 22:30:08 +09005// +build darwin dragonfly freebsd netbsd openbsd
Mikio Haracdfc4ce2013-06-04 17:42:58 +09006
7package ipv6
8
Mikio Hara668aea82014-12-04 17:32:07 +09009func (f *sysICMPv6Filter) accept(typ ICMPType) {
10 f.Filt[typ>>5] |= 1 << (uint32(typ) & 31)
11}
12
13func (f *sysICMPv6Filter) block(typ ICMPType) {
14 f.Filt[typ>>5] &^= 1 << (uint32(typ) & 31)
Mikio Haracdfc4ce2013-06-04 17:42:58 +090015}
16
Mikio Hara97775bb2014-11-01 09:18:48 +090017func (f *sysICMPv6Filter) setAll(block bool) {
Mikio Harad3a1ea62013-06-05 18:12:07 +090018 for i := range f.Filt {
Mikio Haracdfc4ce2013-06-04 17:42:58 +090019 if block {
20 f.Filt[i] = 0
21 } else {
22 f.Filt[i] = 1<<32 - 1
23 }
24 }
25}
26
Mikio Hara97775bb2014-11-01 09:18:48 +090027func (f *sysICMPv6Filter) willBlock(typ ICMPType) bool {
Mikio Haracdfc4ce2013-06-04 17:42:58 +090028 return f.Filt[typ>>5]&(1<<(uint32(typ)&31)) == 0
29}