mirror of
				https://github.com/vishvananda/netlink.git
				synced 2025-10-31 11:17:03 +08:00 
			
		
		
		
	 77df5d35f7
			
		
	
	77df5d35f7
	
	
	
		
			
			The xfrm framework is linux-only. Only implement the respective types for GOOS=linux to avoid dependencies to x/sys/unix on non-linux or non-unix platforms. Provide dummy XfrmPolicy and XfrmState types for the globally defined XfrmPolicy* and XfrmState* functions.
		
			
				
	
	
		
			76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package netlink
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"golang.org/x/sys/unix"
 | |
| )
 | |
| 
 | |
| // Proto is an enum representing an ipsec protocol.
 | |
| type Proto uint8
 | |
| 
 | |
| const (
 | |
| 	XFRM_PROTO_ROUTE2    Proto = unix.IPPROTO_ROUTING
 | |
| 	XFRM_PROTO_ESP       Proto = unix.IPPROTO_ESP
 | |
| 	XFRM_PROTO_AH        Proto = unix.IPPROTO_AH
 | |
| 	XFRM_PROTO_HAO       Proto = unix.IPPROTO_DSTOPTS
 | |
| 	XFRM_PROTO_COMP      Proto = unix.IPPROTO_COMP
 | |
| 	XFRM_PROTO_IPSEC_ANY Proto = unix.IPPROTO_RAW
 | |
| )
 | |
| 
 | |
| func (p Proto) String() string {
 | |
| 	switch p {
 | |
| 	case XFRM_PROTO_ROUTE2:
 | |
| 		return "route2"
 | |
| 	case XFRM_PROTO_ESP:
 | |
| 		return "esp"
 | |
| 	case XFRM_PROTO_AH:
 | |
| 		return "ah"
 | |
| 	case XFRM_PROTO_HAO:
 | |
| 		return "hao"
 | |
| 	case XFRM_PROTO_COMP:
 | |
| 		return "comp"
 | |
| 	case XFRM_PROTO_IPSEC_ANY:
 | |
| 		return "ipsec-any"
 | |
| 	}
 | |
| 	return fmt.Sprintf("%d", p)
 | |
| }
 | |
| 
 | |
| // Mode is an enum representing an ipsec transport.
 | |
| type Mode uint8
 | |
| 
 | |
| const (
 | |
| 	XFRM_MODE_TRANSPORT Mode = iota
 | |
| 	XFRM_MODE_TUNNEL
 | |
| 	XFRM_MODE_ROUTEOPTIMIZATION
 | |
| 	XFRM_MODE_IN_TRIGGER
 | |
| 	XFRM_MODE_BEET
 | |
| 	XFRM_MODE_MAX
 | |
| )
 | |
| 
 | |
| func (m Mode) String() string {
 | |
| 	switch m {
 | |
| 	case XFRM_MODE_TRANSPORT:
 | |
| 		return "transport"
 | |
| 	case XFRM_MODE_TUNNEL:
 | |
| 		return "tunnel"
 | |
| 	case XFRM_MODE_ROUTEOPTIMIZATION:
 | |
| 		return "ro"
 | |
| 	case XFRM_MODE_IN_TRIGGER:
 | |
| 		return "in_trigger"
 | |
| 	case XFRM_MODE_BEET:
 | |
| 		return "beet"
 | |
| 	}
 | |
| 	return fmt.Sprintf("%d", m)
 | |
| }
 | |
| 
 | |
| // XfrmMark represents the mark associated to the state or policy
 | |
| type XfrmMark struct {
 | |
| 	Value uint32
 | |
| 	Mask  uint32
 | |
| }
 | |
| 
 | |
| func (m *XfrmMark) String() string {
 | |
| 	return fmt.Sprintf("(0x%x,0x%x)", m.Value, m.Mask)
 | |
| }
 |