gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

icmp.go (1551B)


      1 // 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 
      5 package ipv4
      6 
      7 import "golang.org/x/net/internal/iana"
      8 
      9 // An ICMPType represents a type of ICMP message.
     10 type ICMPType int
     11 
     12 func (typ ICMPType) String() string {
     13 	s, ok := icmpTypes[typ]
     14 	if !ok {
     15 		return "<nil>"
     16 	}
     17 	return s
     18 }
     19 
     20 // Protocol returns the ICMPv4 protocol number.
     21 func (typ ICMPType) Protocol() int {
     22 	return iana.ProtocolICMP
     23 }
     24 
     25 // An ICMPFilter represents an ICMP message filter for incoming
     26 // packets. The filter belongs to a packet delivery path on a host and
     27 // it cannot interact with forwarding packets or tunnel-outer packets.
     28 //
     29 // Note: RFC 8200 defines a reasonable role model and it works not
     30 // only for IPv6 but IPv4. A node means a device that implements IP.
     31 // A router means a node that forwards IP packets not explicitly
     32 // addressed to itself, and a host means a node that is not a router.
     33 type ICMPFilter struct {
     34 	icmpFilter
     35 }
     36 
     37 // Accept accepts incoming ICMP packets including the type field value
     38 // typ.
     39 func (f *ICMPFilter) Accept(typ ICMPType) {
     40 	f.accept(typ)
     41 }
     42 
     43 // Block blocks incoming ICMP packets including the type field value
     44 // typ.
     45 func (f *ICMPFilter) Block(typ ICMPType) {
     46 	f.block(typ)
     47 }
     48 
     49 // SetAll sets the filter action to the filter.
     50 func (f *ICMPFilter) SetAll(block bool) {
     51 	f.setAll(block)
     52 }
     53 
     54 // WillBlock reports whether the ICMP type will be blocked.
     55 func (f *ICMPFilter) WillBlock(typ ICMPType) bool {
     56 	return f.willBlock(typ)
     57 }