@@ -996,6 +996,104 @@ func ParsePtraceRequestArgument(rawValue uint64) (PtraceRequestArgument, error)
996
996
return 0 , fmt .Errorf ("not a valid ptrace request value: %d" , rawValue )
997
997
}
998
998
999
+ type SocketcallCallArgument uint64
1000
+
1001
+ const (
1002
+ SYS_SOCKET SocketcallCallArgument = iota + 1
1003
+ SYS_BIND
1004
+ SYS_CONNECT
1005
+ SYS_LISTEN
1006
+ SYS_ACCEPT
1007
+ SYS_GETSOCKNAME
1008
+ SYS_GETPEERNAME
1009
+ SYS_SOCKETPAIR
1010
+ SYS_SEND
1011
+ SYS_RECV
1012
+ SYS_SENDTO
1013
+ SYS_RECVFROM
1014
+ SYS_SHUTDOWN
1015
+ SYS_SETSOCKOPT
1016
+ SYS_GETSOCKOPT
1017
+ SYS_SENDMSG
1018
+ SYS_RECVMSG
1019
+ SYS_ACCEPT4
1020
+ SYS_RECVMMSG
1021
+ SYS_SENDMMSG
1022
+ )
1023
+
1024
+ func (s SocketcallCallArgument ) Value () uint64 {
1025
+ return uint64 (s )
1026
+ }
1027
+
1028
+ var socketcallCallStringMap = map [SocketcallCallArgument ]string {
1029
+ SYS_SOCKET : "SYS_SOCKET" ,
1030
+ SYS_BIND : "SYS_BIND" ,
1031
+ SYS_CONNECT : "SYS_CONNECT" ,
1032
+ SYS_LISTEN : "SYS_LISTEN" ,
1033
+ SYS_ACCEPT : "SYS_ACCEPT" ,
1034
+ SYS_GETSOCKNAME : "SYS_GETSOCKNAME" ,
1035
+ SYS_GETPEERNAME : "SYS_GETPEERNAME" ,
1036
+ SYS_SOCKETPAIR : "SYS_SOCKETPAIR" ,
1037
+ SYS_SEND : "SYS_SEND" ,
1038
+ SYS_RECV : "SYS_RECV" ,
1039
+ SYS_SENDTO : "SYS_SENDTO" ,
1040
+ SYS_RECVFROM : "SYS_RECVFROM" ,
1041
+ SYS_SHUTDOWN : "SYS_SHUTDOWN" ,
1042
+ SYS_SETSOCKOPT : "SYS_SETSOCKOPT" ,
1043
+ SYS_GETSOCKOPT : "SYS_GETSOCKOPT" ,
1044
+ SYS_SENDMSG : "SYS_SENDMSG" ,
1045
+ SYS_RECVMSG : "SYS_RECVMSG" ,
1046
+ SYS_ACCEPT4 : "SYS_ACCEPT4" ,
1047
+ SYS_RECVMMSG : "SYS_RECVMMSG" ,
1048
+ SYS_SENDMMSG : "SYS_SENDMMSG" ,
1049
+ }
1050
+
1051
+ func (s SocketcallCallArgument ) String () string {
1052
+ var res string
1053
+
1054
+ if sdName , ok := socketcallCallStringMap [s ]; ok {
1055
+ res = sdName
1056
+ } else {
1057
+ res = strconv .Itoa (int (s ))
1058
+ }
1059
+
1060
+ return res
1061
+ }
1062
+
1063
+ var socketcallCallMap = map [uint64 ]SocketcallCallArgument {
1064
+ SYS_SOCKET .Value (): SYS_SOCKET ,
1065
+ SYS_BIND .Value (): SYS_BIND ,
1066
+ SYS_CONNECT .Value (): SYS_CONNECT ,
1067
+ SYS_LISTEN .Value (): SYS_LISTEN ,
1068
+ SYS_ACCEPT .Value (): SYS_ACCEPT ,
1069
+ SYS_GETSOCKNAME .Value (): SYS_GETSOCKNAME ,
1070
+ SYS_GETPEERNAME .Value (): SYS_GETPEERNAME ,
1071
+ SYS_SOCKETPAIR .Value (): SYS_SOCKETPAIR ,
1072
+ SYS_SEND .Value (): SYS_SEND ,
1073
+ SYS_RECV .Value (): SYS_RECV ,
1074
+ SYS_SENDTO .Value (): SYS_SENDTO ,
1075
+ SYS_RECVFROM .Value (): SYS_RECVFROM ,
1076
+ SYS_SHUTDOWN .Value (): SYS_SHUTDOWN ,
1077
+ SYS_SETSOCKOPT .Value (): SYS_SETSOCKOPT ,
1078
+ SYS_GETSOCKOPT .Value (): SYS_GETSOCKOPT ,
1079
+ SYS_SENDMSG .Value (): SYS_SENDMSG ,
1080
+ SYS_RECVMSG .Value (): SYS_RECVMSG ,
1081
+ SYS_ACCEPT4 .Value (): SYS_ACCEPT4 ,
1082
+ SYS_RECVMMSG .Value (): SYS_RECVMMSG ,
1083
+ SYS_SENDMMSG .Value (): SYS_SENDMMSG ,
1084
+ }
1085
+
1086
+ // ParseSocketcallCall parses the `call` argument of the `socketcall` syscall
1087
+ // http://man7.org/linux/man-pages/man2/socketcall.2.html
1088
+ // https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/net.h
1089
+ func ParseSocketcallCall (rawValue uint64 ) (SocketcallCallArgument , error ) {
1090
+ if v , ok := socketcallCallMap [rawValue ]; ok {
1091
+ return v , nil
1092
+ }
1093
+
1094
+ return 0 , fmt .Errorf ("not a valid socketcall call value: %d" , rawValue )
1095
+ }
1096
+
999
1097
type SocketDomainArgument uint64
1000
1098
1001
1099
const (
@@ -1096,8 +1194,6 @@ var socketDomainStringMap = map[SocketDomainArgument]string{
1096
1194
AF_XDP : "AF_XDP" ,
1097
1195
}
1098
1196
1099
- // String parses the `domain` bitmask argument of the `socket` syscall
1100
- // http://man7.org/linux/man-pages/man2/socket.2.html
1101
1197
func (s SocketDomainArgument ) String () string {
1102
1198
var res string
1103
1199
@@ -1158,6 +1254,8 @@ var socketDomainMap = map[uint64]SocketDomainArgument{
1158
1254
AF_XDP .Value (): AF_XDP ,
1159
1255
}
1160
1256
1257
+ // ParseSocketDomainArgument parses the `domain` bitmask argument of the `socket` syscall
1258
+ // http://man7.org/linux/man-pages/man2/socket.2.html
1161
1259
func ParseSocketDomainArgument (rawValue uint64 ) (SocketDomainArgument , error ) {
1162
1260
v , ok := socketDomainMap [rawValue ]
1163
1261
if ! ok {
0 commit comments