github.com/vishvananda/netlink@v1.3.1/xfrm_linux.go (about)

     1  package netlink
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"golang.org/x/sys/unix"
     7  )
     8  
     9  // Proto is an enum representing an ipsec protocol.
    10  type Proto uint8
    11  
    12  const (
    13  	XFRM_PROTO_ROUTE2    Proto = unix.IPPROTO_ROUTING
    14  	XFRM_PROTO_ESP       Proto = unix.IPPROTO_ESP
    15  	XFRM_PROTO_AH        Proto = unix.IPPROTO_AH
    16  	XFRM_PROTO_HAO       Proto = unix.IPPROTO_DSTOPTS
    17  	XFRM_PROTO_COMP      Proto = unix.IPPROTO_COMP
    18  	XFRM_PROTO_IPSEC_ANY Proto = unix.IPPROTO_RAW
    19  )
    20  
    21  func (p Proto) String() string {
    22  	switch p {
    23  	case XFRM_PROTO_ROUTE2:
    24  		return "route2"
    25  	case XFRM_PROTO_ESP:
    26  		return "esp"
    27  	case XFRM_PROTO_AH:
    28  		return "ah"
    29  	case XFRM_PROTO_HAO:
    30  		return "hao"
    31  	case XFRM_PROTO_COMP:
    32  		return "comp"
    33  	case XFRM_PROTO_IPSEC_ANY:
    34  		return "ipsec-any"
    35  	}
    36  	return fmt.Sprintf("%d", p)
    37  }
    38  
    39  // Mode is an enum representing an ipsec transport.
    40  type Mode uint8
    41  
    42  const (
    43  	XFRM_MODE_TRANSPORT Mode = iota
    44  	XFRM_MODE_TUNNEL
    45  	XFRM_MODE_ROUTEOPTIMIZATION
    46  	XFRM_MODE_IN_TRIGGER
    47  	XFRM_MODE_BEET
    48  	XFRM_MODE_MAX
    49  )
    50  
    51  // SADir is an enum representing an ipsec template direction.
    52  type SADir uint8
    53  
    54  const (
    55  	XFRM_SA_DIR_IN SADir = iota + 1
    56  	XFRM_SA_DIR_OUT
    57  )
    58  
    59  func (m Mode) String() string {
    60  	switch m {
    61  	case XFRM_MODE_TRANSPORT:
    62  		return "transport"
    63  	case XFRM_MODE_TUNNEL:
    64  		return "tunnel"
    65  	case XFRM_MODE_ROUTEOPTIMIZATION:
    66  		return "ro"
    67  	case XFRM_MODE_IN_TRIGGER:
    68  		return "in_trigger"
    69  	case XFRM_MODE_BEET:
    70  		return "beet"
    71  	}
    72  	return fmt.Sprintf("%d", m)
    73  }
    74  
    75  // XfrmMark represents the mark associated to the state or policy
    76  type XfrmMark struct {
    77  	Value uint32
    78  	Mask  uint32
    79  }
    80  
    81  func (m *XfrmMark) String() string {
    82  	return fmt.Sprintf("(0x%x,0x%x)", m.Value, m.Mask)
    83  }