github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/pkg/ebpftracer/types/sockaddr.go (about) 1 package types 2 3 import "net/netip" 4 5 type SockAddrFamily int16 6 7 const ( 8 AF_UNSPEC SockAddrFamily = 0 9 AF_UNIX SockAddrFamily = 1 10 AF_LOCAL SockAddrFamily = AF_UNIX 11 AF_INET SockAddrFamily = 2 12 AF_AX25 SockAddrFamily = 3 13 AF_IPX SockAddrFamily = 4 14 AF_APPLETALK SockAddrFamily = 5 15 AF_NETROM SockAddrFamily = 6 16 AF_BRIDGE SockAddrFamily = 7 17 AF_ATMPVC SockAddrFamily = 8 18 AF_X25 SockAddrFamily = 9 19 AF_INET6 SockAddrFamily = 10 20 AF_ROSE SockAddrFamily = 11 21 AF_DECnet SockAddrFamily = 12 22 AF_NETBEUI SockAddrFamily = 13 23 AF_SECURITY SockAddrFamily = 14 24 AF_KEY SockAddrFamily = 15 25 AF_NETLINK SockAddrFamily = 16 26 AF_ROUTE SockAddrFamily = AF_NETLINK 27 AF_PACKET SockAddrFamily = 17 28 AF_ASH SockAddrFamily = 18 29 AF_ECONET SockAddrFamily = 19 30 AF_ATMSVC SockAddrFamily = 20 31 AF_RDS SockAddrFamily = 21 32 AF_SNA SockAddrFamily = 22 33 AF_IRDA SockAddrFamily = 23 34 AF_PPPOX SockAddrFamily = 24 35 AF_WANPIPE SockAddrFamily = 25 36 AF_LLC SockAddrFamily = 26 37 AF_IB SockAddrFamily = 27 38 AF_MPLS SockAddrFamily = 28 39 AF_CAN SockAddrFamily = 29 40 AF_TIPC SockAddrFamily = 30 41 AF_BLUETOOTH SockAddrFamily = 31 42 AF_IUCV SockAddrFamily = 32 43 AF_RXRPC SockAddrFamily = 33 44 AF_ISDN SockAddrFamily = 34 45 AF_PHONET SockAddrFamily = 35 46 AF_IEEE802154 SockAddrFamily = 36 47 AF_CAIF SockAddrFamily = 37 48 AF_ALG SockAddrFamily = 38 49 AF_NFC SockAddrFamily = 39 50 AF_VSOCK SockAddrFamily = 40 51 AF_KCM SockAddrFamily = 41 52 AF_QIPCRTR SockAddrFamily = 42 53 AF_SMC SockAddrFamily = 43 54 AF_XDP SockAddrFamily = 44 55 ) 56 57 var sockAddrTypeNames = map[SockAddrFamily]string{ 58 AF_UNSPEC: "AF_UNSPEC", 59 AF_UNIX: "AF_UNIX", 60 AF_INET: "AF_INET", 61 AF_AX25: "AF_AX25", 62 AF_IPX: "AF_IPX", 63 AF_APPLETALK: "AF_APPLETALK", 64 AF_NETROM: "AF_NETROM", 65 AF_BRIDGE: "AF_BRIDGE", 66 AF_ATMPVC: "AF_ATMPVC", 67 AF_X25: "AF_X25", 68 AF_INET6: "AF_INET6", 69 AF_ROSE: "AF_ROSE", 70 AF_DECnet: "AF_DECnet", 71 AF_NETBEUI: "AF_NETBEUI", 72 AF_SECURITY: "AF_SECURITY", 73 AF_KEY: "AF_KEY", 74 AF_NETLINK: "AF_NETLINK", 75 AF_PACKET: "AF_PACKET", 76 AF_ASH: "AF_ASH", 77 AF_ECONET: "AF_ECONET", 78 AF_ATMSVC: "AF_ATMSVC", 79 AF_RDS: "AF_RDS", 80 AF_SNA: "AF_SNA", 81 AF_IRDA: "AF_IRDA", 82 AF_PPPOX: "AF_PPPOX", 83 AF_WANPIPE: "AF_WANPIPE", 84 AF_LLC: "AF_LLC", 85 AF_IB: "AF_IB", 86 AF_MPLS: "AF_MPLS", 87 AF_CAN: "AF_CAN", 88 AF_TIPC: "AF_TIPC", 89 AF_BLUETOOTH: "AF_BLUETOOTH", 90 AF_IUCV: "AF_IUCV", 91 AF_RXRPC: "AF_RXRPC", 92 AF_ISDN: "AF_ISDN", 93 AF_PHONET: "AF_PHONET", 94 AF_IEEE802154: "AF_IEEE802154", 95 AF_CAIF: "AF_CAIF", 96 AF_ALG: "AF_ALG", 97 AF_NFC: "AF_NFC", 98 AF_VSOCK: "AF_VSOCK", 99 AF_KCM: "AF_KCM", 100 AF_QIPCRTR: "AF_QIPCRTR", 101 AF_SMC: "AF_SMC", 102 AF_XDP: "AF_XDP", 103 } 104 105 func (t SockAddrFamily) String() string { 106 if t, found := sockAddrTypeNames[t]; found { 107 return t 108 } 109 110 return "UNKNOWN" 111 } 112 113 type internalSockAddr struct{} 114 115 func (internalSockAddr) sockaddr() {} 116 117 type Sockaddr interface { 118 sockaddr() 119 120 Family() SockAddrFamily 121 } 122 123 type UnixSockAddr struct { 124 internalSockAddr 125 126 Path string 127 } 128 129 func (UnixSockAddr) Family() SockAddrFamily { 130 return AF_UNIX 131 } 132 133 type Ip4SockAddr struct { 134 internalSockAddr 135 136 Addr netip.AddrPort 137 } 138 139 func (Ip4SockAddr) Family() SockAddrFamily { 140 return AF_INET 141 } 142 143 type Ip6SockAddr struct { 144 internalSockAddr 145 146 Addr netip.AddrPort 147 FlowInfo uint32 148 ScopeID uint32 149 } 150 151 func (Ip6SockAddr) Family() SockAddrFamily { 152 return AF_INET6 153 } 154 155 // GenericSockAddr is a catch all of socket addr family types we do now specifically handle yet 156 type GenericSockAddr struct { 157 internalSockAddr 158 159 family SockAddrFamily 160 } 161 162 func (a GenericSockAddr) Family() SockAddrFamily { 163 return a.family 164 } 165 166 func NewGenericSockAddr(family SockAddrFamily) GenericSockAddr { 167 return GenericSockAddr{ 168 family: family, 169 } 170 }