diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2015-12-11 19:50:21 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2015-12-17 14:38:46 +0100 |
| commit | 6f71e5dce1817676a47fc7b92f7d288e4094f614 (patch) | |
| tree | 696068b0d1735504d9d5e44615f4a6fa951f8390 | |
| parent | 6922b20d36c85dfc02126c323d5de936ede9453c (diff) | |
sys: add PF_NFC support
| -rw-r--r-- | executor/syscalls.h | 11 | ||||
| -rw-r--r-- | prog/consts.go | 16 | ||||
| -rw-r--r-- | sys/decl.go | 4 | ||||
| -rw-r--r-- | sys/sys.go | 33 | ||||
| -rw-r--r-- | sys/sys.txt | 82 | ||||
| -rw-r--r-- | sysgen/sysgen.go | 4 |
6 files changed, 149 insertions, 1 deletions
diff --git a/executor/syscalls.h b/executor/syscalls.h index fb00ee822..61a92476f 100644 --- a/executor/syscalls.h +++ b/executor/syscalls.h @@ -595,4 +595,15 @@ call_t syscalls[] = { {"sendmmsg$alg", __NR_sendmmsg}, {"recvmsg$alg", __NR_recvmsg}, {"recvmmsg$alg", __NR_recvmmsg}, + {"socket$nfc_llcp", __NR_socket}, + {"bind$nfc_llcp", __NR_bind}, + {"connect$nfc_llcp", __NR_connect}, + {"accept$nfc_llcp", __NR_accept}, + {"setsockopt$NFC_LLCP_RW", __NR_setsockopt}, + {"setsockopt$NFC_LLCP_MIUX", __NR_setsockopt}, + {"getsockopt$nfc_llcp", __NR_getsockopt}, + {"sendmsg$nfc_llcp", __NR_sendmsg}, + {"sendmmsg$nfc_llcp", __NR_sendmmsg}, + {"socket$nfc_raw", __NR_socket}, + {"connect$nfc_raw", __NR_connect}, }; diff --git a/prog/consts.go b/prog/consts.go index 999c8d784..949b6a852 100644 --- a/prog/consts.go +++ b/prog/consts.go @@ -15,6 +15,7 @@ const ( AF_IPX = 4 AF_LOCAL = 1 AF_NETLINK = 16 + AF_NFC = 39 AF_PACKET = 17 AF_X25 = 9 ALG_SET_AEAD_ASSOCLEN = 4 @@ -635,6 +636,20 @@ const ( MS_STRICTATIME = 16777216 MS_SYNC = 4 MS_SYNCHRONOUS = 16 + NFC_LLCP_MIUX = 1 + NFC_LLCP_REMOTE_LTO = 3 + NFC_LLCP_REMOTE_MIU = 2 + NFC_LLCP_REMOTE_RW = 4 + NFC_LLCP_RW = 0 + NFC_PROTO_FELICA = 3 + NFC_PROTO_ISO14443 = 4 + NFC_PROTO_ISO14443_B = 6 + NFC_PROTO_ISO15693 = 7 + NFC_PROTO_JEWEL = 1 + NFC_PROTO_MIFARE = 2 + NFC_PROTO_NFC_DEP = 5 + NFC_SOCKPROTO_LLCP = 1 + NFC_SOCKPROTO_RAW = 0 NT_386_IOPERM = 513 NT_386_TLS = 512 NT_AUXV = 6 @@ -880,6 +895,7 @@ const ( SOCK_SEQPACKET = 5 SOCK_STREAM = 1 SOL_ALG = 279 + SOL_NFC = 280 SOL_SOCKET = 1 SO_ACCEPTCONN = 30 SO_ATTACH_BPF = 50 diff --git a/sys/decl.go b/sys/decl.go index 93d7fccea..61838bc7d 100644 --- a/sys/decl.go +++ b/sys/decl.go @@ -83,6 +83,8 @@ const ( FdUserFault FdAlg FdAlgConn + FdNfcRaw + FdNfcLlcp IPCMsq IPCSem @@ -187,7 +189,7 @@ func (t ResourceType) SubKinds() []ResourceSubkind { return []ResourceSubkind{FdFile, FdSock, FdPipe, FdSignal, FdEvent, FdTimer, FdEpoll, FdDir, FdMq, FdInotify, FdFanotify, FdTty, FdDRI, FdFuse, FdKdbus, FdBpfMap, FdBpfProg, FdPerf, FdUserFault, - FdAlg, FdAlgConn} + FdAlg, FdAlgConn, FdNfcRaw, FdNfcLlcp} case ResIPC: return []ResourceSubkind{IPCMsq, IPCSem, IPCShm} case ResIOCtx, ResKey, ResInotifyDesc, ResPid, ResUid, ResGid, ResTimerid: diff --git a/sys/sys.go b/sys/sys.go index d55c8c7a6..cf2f8c7ff 100644 --- a/sys/sys.go +++ b/sys/sys.go @@ -1692,4 +1692,37 @@ func initCalls() { func() { Calls = append(Calls, &Call{ID: 563, Name: "recvmmsg$alg", CallName: "recvmmsg", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdAlgConn}, PtrType{TypeCommon: TypeCommon{TypeName: "mmsg", IsOptional: false}, Type: ArrayType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "alg_recv_msghdr", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, TypeSize: 8, Val: uintptr(0)}, ConstType{TypeCommon: TypeCommon{TypeName: "addrlen", IsOptional: false}, TypeSize: 4, Val: uintptr(0)}, PtrType{TypeCommon: TypeCommon{TypeName: "vec", IsOptional: false}, Type: ArrayType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "iovec_out", IsOptional: false}, Fields: []Type{PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Kind: BufferBlob}}, LenType{TypeCommon: TypeCommon{TypeName: "len", IsOptional: false}, Buf: "addr", TypeSize: 8}}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "vlen", IsOptional: false}, Buf: "vec", TypeSize: 8}, PtrType{TypeCommon: TypeCommon{TypeName: "ctrl", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "ctrl", IsOptional: false}, Kind: BufferBlob}}, LenType{TypeCommon: TypeCommon{TypeName: "ctrllen", IsOptional: false}, Buf: "ctrl", TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "f", IsOptional: false}, TypeSize: 4}}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "vlen", IsOptional: false}, Buf: "mmsg", TypeSize: 0}, FlagsType{TypeCommon: TypeCommon{TypeName: "f", IsOptional: false}, TypeSize: 0, Vals: []uintptr{1073741824, 64, 8192, 1, 2, 32, 256, 65536}}}}) }() + func() { + Calls = append(Calls, &Call{ID: 564, Name: "socket$nfc_llcp", CallName: "socket", Ret: ResourceType{TypeCommon: TypeCommon{TypeName: "ret", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, Args: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "domain", IsOptional: false}, TypeSize: 0, Val: uintptr(39)}, FlagsType{TypeCommon: TypeCommon{TypeName: "type", IsOptional: false}, TypeSize: 0, Vals: []uintptr{1, 2, 3}}, ConstType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 0, Val: uintptr(1)}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 565, Name: "bind$nfc_llcp", CallName: "bind", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "sockaddr_nfc_llcp", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "family", IsOptional: false}, TypeSize: 2, Val: uintptr(39)}, IntType{TypeCommon: TypeCommon{TypeName: "devidx", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "target", IsOptional: false}, TypeSize: 4}, FlagsType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 4, Vals: []uintptr{1, 2, 3, 4, 5, 6, 7}}, IntType{TypeCommon: TypeCommon{TypeName: "dsap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "ssap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv0", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv1", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv2", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv3", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv4", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv5", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv6", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv7", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv8", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv9", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv10", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv11", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv12", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv13", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv14", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv15", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv16", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv17", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "servlen", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "addrlen", IsOptional: false}, Buf: "addr", TypeSize: 0}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 566, Name: "connect$nfc_llcp", CallName: "connect", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "sockaddr_nfc_llcp", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "family", IsOptional: false}, TypeSize: 2, Val: uintptr(39)}, IntType{TypeCommon: TypeCommon{TypeName: "devidx", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "target", IsOptional: false}, TypeSize: 4}, FlagsType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 4, Vals: []uintptr{1, 2, 3, 4, 5, 6, 7}}, IntType{TypeCommon: TypeCommon{TypeName: "dsap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "ssap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv0", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv1", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv2", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv3", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv4", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv5", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv6", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv7", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv8", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv9", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv10", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv11", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv12", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv13", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv14", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv15", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv16", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv17", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "servlen", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "addrlen", IsOptional: false}, Buf: "addr", TypeSize: 0}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 567, Name: "accept$nfc_llcp", CallName: "accept", Ret: ResourceType{TypeCommon: TypeCommon{TypeName: "ret", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, PtrType{TypeCommon: TypeCommon{TypeName: "peer", IsOptional: true}, Type: StructType{TypeCommon: TypeCommon{TypeName: "sockaddr_nfc_llcp", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "family", IsOptional: false}, TypeSize: 2, Val: uintptr(39)}, IntType{TypeCommon: TypeCommon{TypeName: "devidx", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "target", IsOptional: false}, TypeSize: 4}, FlagsType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 4, Vals: []uintptr{1, 2, 3, 4, 5, 6, 7}}, IntType{TypeCommon: TypeCommon{TypeName: "dsap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "ssap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv0", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv1", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv2", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv3", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv4", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv5", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv6", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv7", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv8", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv9", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv10", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv11", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv12", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv13", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv14", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv15", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv16", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv17", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "servlen", IsOptional: false}, TypeSize: 8}}}, Dir: DirOut}, PtrType{TypeCommon: TypeCommon{TypeName: "peerlen", IsOptional: false}, Type: LenType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, Buf: "peer", TypeSize: 4}, Dir: DirInOut}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 568, Name: "setsockopt$NFC_LLCP_RW", CallName: "setsockopt", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, ConstType{TypeCommon: TypeCommon{TypeName: "level", IsOptional: false}, TypeSize: 0, Val: uintptr(280)}, ConstType{TypeCommon: TypeCommon{TypeName: "opt", IsOptional: false}, TypeSize: 0, Val: uintptr(0)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: IntType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, TypeSize: 4}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "arglen", IsOptional: false}, Buf: "arg", TypeSize: 0}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 569, Name: "setsockopt$NFC_LLCP_MIUX", CallName: "setsockopt", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, ConstType{TypeCommon: TypeCommon{TypeName: "level", IsOptional: false}, TypeSize: 0, Val: uintptr(280)}, ConstType{TypeCommon: TypeCommon{TypeName: "opt", IsOptional: false}, TypeSize: 0, Val: uintptr(1)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: IntType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, TypeSize: 4}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "arglen", IsOptional: false}, Buf: "arg", TypeSize: 0}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 570, Name: "getsockopt$nfc_llcp", CallName: "getsockopt", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, ConstType{TypeCommon: TypeCommon{TypeName: "level", IsOptional: false}, TypeSize: 0, Val: uintptr(280)}, FlagsType{TypeCommon: TypeCommon{TypeName: "opt", IsOptional: false}, TypeSize: 0, Vals: []uintptr{0, 1, 2, 3, 4}}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Kind: BufferBlob}}, LenType{TypeCommon: TypeCommon{TypeName: "arglen", IsOptional: false}, Buf: "arg", TypeSize: 0}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 571, Name: "sendmsg$nfc_llcp", CallName: "sendmsg", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, PtrType{TypeCommon: TypeCommon{TypeName: "msg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "nfc_llcp_send_msghdr", IsOptional: false}, Fields: []Type{PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "sockaddr_nfc_llcp", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "family", IsOptional: false}, TypeSize: 2, Val: uintptr(39)}, IntType{TypeCommon: TypeCommon{TypeName: "devidx", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "target", IsOptional: false}, TypeSize: 4}, FlagsType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 4, Vals: []uintptr{1, 2, 3, 4, 5, 6, 7}}, IntType{TypeCommon: TypeCommon{TypeName: "dsap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "ssap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv0", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv1", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv2", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv3", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv4", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv5", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv6", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv7", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv8", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv9", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv10", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv11", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv12", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv13", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv14", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv15", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv16", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv17", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "servlen", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "addrlen", IsOptional: false}, Buf: "addr", TypeSize: 4}, PtrType{TypeCommon: TypeCommon{TypeName: "vec", IsOptional: false}, Type: ArrayType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "iovec_in", IsOptional: false}, Fields: []Type{PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Dir: DirIn, Type: BufferType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Kind: BufferBlob}}, LenType{TypeCommon: TypeCommon{TypeName: "len", IsOptional: false}, Buf: "addr", TypeSize: 8}}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "vlen", IsOptional: false}, Buf: "vec", TypeSize: 8}, PtrType{TypeCommon: TypeCommon{TypeName: "ctrl", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "cmsghdr", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "len", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "level", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "type", IsOptional: false}, TypeSize: 4}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "ctrllen", IsOptional: false}, Buf: "ctrl", TypeSize: 8}, FlagsType{TypeCommon: TypeCommon{TypeName: "f", IsOptional: false}, TypeSize: 4, Vals: []uintptr{2048, 4, 64, 128, 32768, 16384, 1}}}}, Dir: DirIn}, FlagsType{TypeCommon: TypeCommon{TypeName: "f", IsOptional: false}, TypeSize: 0, Vals: []uintptr{2048, 4, 64, 128, 32768, 16384, 1}}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 572, Name: "sendmmsg$nfc_llcp", CallName: "sendmmsg", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcLlcp}, PtrType{TypeCommon: TypeCommon{TypeName: "mmsg", IsOptional: false}, Type: ArrayType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "nfc_llcp_send_msghdr", IsOptional: false}, Fields: []Type{PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "sockaddr_nfc_llcp", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "family", IsOptional: false}, TypeSize: 2, Val: uintptr(39)}, IntType{TypeCommon: TypeCommon{TypeName: "devidx", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "target", IsOptional: false}, TypeSize: 4}, FlagsType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 4, Vals: []uintptr{1, 2, 3, 4, 5, 6, 7}}, IntType{TypeCommon: TypeCommon{TypeName: "dsap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "ssap", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv0", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv1", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "serv2", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv3", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv4", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv5", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv6", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv7", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv8", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv9", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv10", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv11", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv12", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv13", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv14", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv15", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv16", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "serv17", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "servlen", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "addrlen", IsOptional: false}, Buf: "addr", TypeSize: 4}, PtrType{TypeCommon: TypeCommon{TypeName: "vec", IsOptional: false}, Type: ArrayType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "iovec_in", IsOptional: false}, Fields: []Type{PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Dir: DirIn, Type: BufferType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Kind: BufferBlob}}, LenType{TypeCommon: TypeCommon{TypeName: "len", IsOptional: false}, Buf: "addr", TypeSize: 8}}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "vlen", IsOptional: false}, Buf: "vec", TypeSize: 8}, PtrType{TypeCommon: TypeCommon{TypeName: "ctrl", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "cmsghdr", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "len", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "level", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "type", IsOptional: false}, TypeSize: 4}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "ctrllen", IsOptional: false}, Buf: "ctrl", TypeSize: 8}, FlagsType{TypeCommon: TypeCommon{TypeName: "f", IsOptional: false}, TypeSize: 4, Vals: []uintptr{2048, 4, 64, 128, 32768, 16384, 1}}}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "vlen", IsOptional: false}, Buf: "mmsg", TypeSize: 0}, FlagsType{TypeCommon: TypeCommon{TypeName: "f", IsOptional: false}, TypeSize: 0, Vals: []uintptr{2048, 4, 64, 128, 32768, 16384, 1}}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 573, Name: "socket$nfc_raw", CallName: "socket", Ret: ResourceType{TypeCommon: TypeCommon{TypeName: "ret", IsOptional: false}, Kind: ResFD, Subkind: FdNfcRaw}, Args: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "domain", IsOptional: false}, TypeSize: 0, Val: uintptr(39)}, FlagsType{TypeCommon: TypeCommon{TypeName: "type", IsOptional: false}, TypeSize: 0, Vals: []uintptr{1, 3}}, ConstType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 0, Val: uintptr(0)}}}) + }() + func() { + Calls = append(Calls, &Call{ID: 574, Name: "connect$nfc_raw", CallName: "connect", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdNfcRaw}, PtrType{TypeCommon: TypeCommon{TypeName: "addr", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "sockaddr_nfc", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "family", IsOptional: false}, TypeSize: 2, Val: uintptr(39)}, IntType{TypeCommon: TypeCommon{TypeName: "dev", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "targ", IsOptional: false}, TypeSize: 4}, FlagsType{TypeCommon: TypeCommon{TypeName: "proto", IsOptional: false}, TypeSize: 4, Vals: []uintptr{1, 2, 3, 4, 5, 6, 7}}}}, Dir: DirIn}, LenType{TypeCommon: TypeCommon{TypeName: "addrlen", IsOptional: false}, Buf: "addr", TypeSize: 0}}}) + }() } diff --git a/sys/sys.txt b/sys/sys.txt index 7e84ed34f..189266d0c 100644 --- a/sys/sys.txt +++ b/sys/sys.txt @@ -72,6 +72,7 @@ include <linux/fuse.h> include <linux/perf_event.h> include <linux/hw_breakpoint.h> include <linux/if_alg.h> +include <linux/nfc.h> include <asm/prctl.h> @@ -2652,3 +2653,84 @@ define ALG_SET_AEAD_AUTHSIZE 5 #define AF_ALG 38 define SOL_ALG 279 + + + +# PF_KEY support. + +# See net/key/af_key.c, requires root. +# socket$key(domain const[AF_KEY], type const[SOCK_RAW], proto const[PF_KEY_V2]) fd[key] + + + + +# PF_NFC support. + +socket$nfc_llcp(domain const[AF_NFC], type flags[nfc_llcp_type], proto const[NFC_SOCKPROTO_LLCP]) fd[nfc_llcp] +bind$nfc_llcp(fd fd[nfc_llcp], addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr]) +connect$nfc_llcp(fd fd[nfc_llcp], addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr]) +accept$nfc_llcp(fd fd[nfc_llcp], peer ptr[out, sockaddr_nfc_llcp, opt], peerlen ptr[inout, len[peer, int32]]) fd[nfc_llcp] +setsockopt$NFC_LLCP_RW(fd fd[nfc_llcp], level const[SOL_NFC], opt const[NFC_LLCP_RW], arg ptr[in, int32], arglen len[arg]) +setsockopt$NFC_LLCP_MIUX(fd fd[nfc_llcp], level const[SOL_NFC], opt const[NFC_LLCP_MIUX], arg ptr[in, int32], arglen len[arg]) +getsockopt$nfc_llcp(fd fd[nfc_llcp], level const[SOL_NFC], opt flags[nfc_llcp_opts], arg buffer[out], arglen len[arg]) +sendmsg$nfc_llcp(fd fd[nfc_llcp], msg ptr[in, nfc_llcp_send_msghdr], f flags[send_flags]) +sendmmsg$nfc_llcp(fd fd[nfc_llcp], mmsg ptr[in, array[nfc_llcp_send_msghdr]], vlen len[mmsg], f flags[send_flags]) + +socket$nfc_raw(domain const[AF_NFC], type flags[nfc_raw_type], proto const[NFC_SOCKPROTO_RAW]) fd[nfc_raw] +connect$nfc_raw(fd fd[nfc_raw], addr ptr[in, sockaddr_nfc], addrlen len[addr]) + +nfc_llcp_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW +nfc_raw_type = SOCK_STREAM, SOCK_RAW +nfc_proto = NFC_PROTO_JEWEL, NFC_PROTO_MIFARE, NFC_PROTO_FELICA, NFC_PROTO_ISO14443, NFC_PROTO_NFC_DEP, NFC_PROTO_ISO14443_B, NFC_PROTO_ISO15693 +nfc_llcp_opts = NFC_LLCP_RW, NFC_LLCP_MIUX, NFC_LLCP_REMOTE_MIU, NFC_LLCP_REMOTE_LTO, NFC_LLCP_REMOTE_RW + +sockaddr_nfc_llcp { + family const[AF_NFC, int16] + devidx int32 + target int32 + proto flags[nfc_proto, int32] + dsap int8 + ssap int8 +# TODO: need fixed-length arrays +# char service_name[63] + serv0 int8 + serv1 int8 + serv2 int32 + serv3 int32 + serv4 int32 + serv5 int32 + serv6 int32 + serv7 int32 + serv8 int32 + serv9 int32 + serv10 int32 + serv11 int32 + serv12 int32 + serv13 int32 + serv14 int32 + serv15 int32 + serv16 int32 + serv17 int8 + servlen intptr +} + +sockaddr_nfc { + family const[AF_NFC, int16] + dev int32 + targ int32 + proto flags[nfc_proto, int32] +} + +nfc_llcp_send_msghdr { + addr ptr[in, sockaddr_nfc_llcp] + addrlen len[addr, int32] + vec ptr[in, array[iovec_in]] + vlen len[vec, intptr] + ctrl ptr[in, cmsghdr] + ctrllen len[ctrl, intptr] + f flags[send_flags, int32] +} + +define SOL_NFC 280 +define NFC_PROTO_ISO15693 7 + diff --git a/sysgen/sysgen.go b/sysgen/sysgen.go index 0cd6ae61e..671e27c0b 100644 --- a/sysgen/sysgen.go +++ b/sysgen/sysgen.go @@ -355,6 +355,10 @@ func fmtFdKind(s string) string { return "FdAlg" case "algconn": return "FdAlgConn" + case "nfc_raw": + return "FdNfcRaw" + case "nfc_llcp": + return "FdNfcLlcp" default: failf("bad fd type %v", s) return "" |
