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 }