mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-04 07:49:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package netlink
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"net"
 | 
						|
)
 | 
						|
 | 
						|
// Dir is an enum representing an ipsec template direction.
 | 
						|
type Dir uint8
 | 
						|
 | 
						|
const (
 | 
						|
	XFRM_DIR_IN Dir = iota
 | 
						|
	XFRM_DIR_OUT
 | 
						|
	XFRM_DIR_FWD
 | 
						|
	XFRM_SOCKET_IN
 | 
						|
	XFRM_SOCKET_OUT
 | 
						|
	XFRM_SOCKET_FWD
 | 
						|
)
 | 
						|
 | 
						|
func (d Dir) String() string {
 | 
						|
	switch d {
 | 
						|
	case XFRM_DIR_IN:
 | 
						|
		return "dir in"
 | 
						|
	case XFRM_DIR_OUT:
 | 
						|
		return "dir out"
 | 
						|
	case XFRM_DIR_FWD:
 | 
						|
		return "dir fwd"
 | 
						|
	case XFRM_SOCKET_IN:
 | 
						|
		return "socket in"
 | 
						|
	case XFRM_SOCKET_OUT:
 | 
						|
		return "socket out"
 | 
						|
	case XFRM_SOCKET_FWD:
 | 
						|
		return "socket fwd"
 | 
						|
	}
 | 
						|
	return fmt.Sprintf("socket %d", d-XFRM_SOCKET_IN)
 | 
						|
}
 | 
						|
 | 
						|
// PolicyAction is an enum representing an ipsec policy action.
 | 
						|
type PolicyAction uint8
 | 
						|
 | 
						|
const (
 | 
						|
	XFRM_POLICY_ALLOW PolicyAction = 0
 | 
						|
	XFRM_POLICY_BLOCK PolicyAction = 1
 | 
						|
)
 | 
						|
 | 
						|
func (a PolicyAction) String() string {
 | 
						|
	switch a {
 | 
						|
	case XFRM_POLICY_ALLOW:
 | 
						|
		return "allow"
 | 
						|
	case XFRM_POLICY_BLOCK:
 | 
						|
		return "block"
 | 
						|
	default:
 | 
						|
		return fmt.Sprintf("action %d", a)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// XfrmPolicyTmpl encapsulates a rule for the base addresses of an ipsec
 | 
						|
// policy. These rules are matched with XfrmState to determine encryption
 | 
						|
// and authentication algorithms.
 | 
						|
type XfrmPolicyTmpl struct {
 | 
						|
	Dst   net.IP
 | 
						|
	Src   net.IP
 | 
						|
	Proto Proto
 | 
						|
	Mode  Mode
 | 
						|
	Spi   int
 | 
						|
	Reqid int
 | 
						|
}
 | 
						|
 | 
						|
func (t XfrmPolicyTmpl) String() string {
 | 
						|
	return fmt.Sprintf("{Dst: %v, Src: %v, Proto: %s, Mode: %s, Spi: 0x%x, Reqid: 0x%x}",
 | 
						|
		t.Dst, t.Src, t.Proto, t.Mode, t.Spi, t.Reqid)
 | 
						|
}
 | 
						|
 | 
						|
// XfrmPolicy represents an ipsec policy. It represents the overlay network
 | 
						|
// and has a list of XfrmPolicyTmpls representing the base addresses of
 | 
						|
// the policy.
 | 
						|
type XfrmPolicy struct {
 | 
						|
	Dst      *net.IPNet
 | 
						|
	Src      *net.IPNet
 | 
						|
	Proto    Proto
 | 
						|
	DstPort  int
 | 
						|
	SrcPort  int
 | 
						|
	Dir      Dir
 | 
						|
	Priority int
 | 
						|
	Index    int
 | 
						|
	Action   PolicyAction
 | 
						|
	Ifindex  int
 | 
						|
	Ifid     int
 | 
						|
	Mark     *XfrmMark
 | 
						|
	Tmpls    []XfrmPolicyTmpl
 | 
						|
}
 | 
						|
 | 
						|
func (p XfrmPolicy) String() string {
 | 
						|
	return fmt.Sprintf("{Dst: %v, Src: %v, Proto: %s, DstPort: %d, SrcPort: %d, Dir: %s, Priority: %d, Index: %d, Action: %s, Ifindex: %d, Ifid: %d, Mark: %s, Tmpls: %s}",
 | 
						|
		p.Dst, p.Src, p.Proto, p.DstPort, p.SrcPort, p.Dir, p.Priority, p.Index, p.Action, p.Ifindex, p.Ifid, p.Mark, p.Tmpls)
 | 
						|
}
 |