.github
alerting
client
config
core
docs
example
jsonpath
k8s
k8stest
metric
pattern
security
static
vendor
cloud.google.com
github.com
golang.org
x
crypto
net
bpf
context
http
http2
idna
internal
ipv4
batch.go
control.go
control_bsd.go
control_pktinfo.go
control_stub.go
control_unix.go
control_windows.go
dgramopt.go
doc.go
endpoint.go
genericopt.go
header.go
helper.go
iana.go
icmp.go
icmp_linux.go
icmp_stub.go
packet.go
payload.go
payload_cmsg.go
payload_nocmsg.go
sockopt.go
sockopt_posix.go
sockopt_stub.go
sys_aix.go
sys_asmreq.go
sys_asmreq_stub.go
sys_asmreqn.go
sys_asmreqn_stub.go
sys_bpf.go
sys_bpf_stub.go
sys_bsd.go
sys_darwin.go
sys_dragonfly.go
sys_freebsd.go
sys_linux.go
sys_solaris.go
sys_ssmreq.go
sys_ssmreq_stub.go
sys_stub.go
sys_windows.go
zsys_aix_ppc64.go
zsys_darwin.go
zsys_dragonfly.go
zsys_freebsd_386.go
zsys_freebsd_amd64.go
zsys_freebsd_arm.go
zsys_freebsd_arm64.go
zsys_linux_386.go
zsys_linux_amd64.go
zsys_linux_arm.go
zsys_linux_arm64.go
zsys_linux_mips.go
zsys_linux_mips64.go
zsys_linux_mips64le.go
zsys_linux_mipsle.go
zsys_linux_ppc.go
zsys_linux_ppc64.go
zsys_linux_ppc64le.go
zsys_linux_riscv64.go
zsys_linux_s390x.go
zsys_netbsd.go
zsys_openbsd.go
zsys_solaris.go
ipv6
AUTHORS
CONTRIBUTORS
LICENSE
PATENTS
oauth2
sys
text
time
google.golang.org
gopkg.in
k8s.io
sigs.k8s.io
modules.txt
watchdog
.dockerignore
.gitattributes
.gitignore
Dockerfile
LICENSE.md
README.md
config.yaml
go.mod
go.sum
gzip.go
main.go
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
// Copyright 2013 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package ipv4
|
|
|
|
import "golang.org/x/net/internal/iana"
|
|
|
|
// An ICMPType represents a type of ICMP message.
|
|
type ICMPType int
|
|
|
|
func (typ ICMPType) String() string {
|
|
s, ok := icmpTypes[typ]
|
|
if !ok {
|
|
return "<nil>"
|
|
}
|
|
return s
|
|
}
|
|
|
|
// Protocol returns the ICMPv4 protocol number.
|
|
func (typ ICMPType) Protocol() int {
|
|
return iana.ProtocolICMP
|
|
}
|
|
|
|
// An ICMPFilter represents an ICMP message filter for incoming
|
|
// packets. The filter belongs to a packet delivery path on a host and
|
|
// it cannot interact with forwarding packets or tunnel-outer packets.
|
|
//
|
|
// Note: RFC 8200 defines a reasonable role model and it works not
|
|
// only for IPv6 but IPv4. A node means a device that implements IP.
|
|
// A router means a node that forwards IP packets not explicitly
|
|
// addressed to itself, and a host means a node that is not a router.
|
|
type ICMPFilter struct {
|
|
icmpFilter
|
|
}
|
|
|
|
// Accept accepts incoming ICMP packets including the type field value
|
|
// typ.
|
|
func (f *ICMPFilter) Accept(typ ICMPType) {
|
|
f.accept(typ)
|
|
}
|
|
|
|
// Block blocks incoming ICMP packets including the type field value
|
|
// typ.
|
|
func (f *ICMPFilter) Block(typ ICMPType) {
|
|
f.block(typ)
|
|
}
|
|
|
|
// SetAll sets the filter action to the filter.
|
|
func (f *ICMPFilter) SetAll(block bool) {
|
|
f.setAll(block)
|
|
}
|
|
|
|
// WillBlock reports whether the ICMP type will be blocked.
|
|
func (f *ICMPFilter) WillBlock(typ ICMPType) bool {
|
|
return f.willBlock(typ)
|
|
}
|