aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorBaozeng Ding <sploving1@gmail.com>2016-06-10 21:57:19 +0800
committerBaozeng Ding <sploving1@gmail.com>2016-06-13 09:28:38 +0800
commit1dbfdcf75749205d52b1aaacf59b2e66b3edaf63 (patch)
tree01262826604e0296f040aa9c9e598fd9f1bebcf5 /sys
parent09a6b9531f64f3808e18a2801f0525808afee6f3 (diff)
sys: support kcm and netrom
Diffstat (limited to 'sys')
-rw-r--r--sys/decl.go5
-rwxr-xr-xsys/kcm.txt29
-rwxr-xr-xsys/netrom.txt62
3 files changed, 95 insertions, 1 deletions
diff --git a/sys/decl.go b/sys/decl.go
index 0705f0629..8115a1d6c 100644
--- a/sys/decl.go
+++ b/sys/decl.go
@@ -114,6 +114,8 @@ const (
FdInputEvent
FdTun
FdRandom
+ FdKcm
+ FdNetRom
IPCMsq
IPCSem
@@ -143,7 +145,8 @@ func ResourceSubkinds(kind ResourceKind) []ResourceSubkind {
FdDRI, FdFuse, FdKdbus, FdBpfMap, FdBpfProg, FdPerf, FdUserFault,
FdAlg, FdAlgConn, FdNfcRaw, FdNfcLlcp, FdBtHci, FdBtSco, FdBtL2cap,
FdBtRfcomm, FdBtHidp, FdBtCmtp, FdBtBnep, FdUnix, FdSctp, FdNetlink, FdKvm, FdKvmVm,
- FdKvmCpu, FdSndSeq, FdSndTimer, FdSndControl, FdInputEvent, FdTun, FdRandom}
+ FdKvmCpu, FdSndSeq, FdSndTimer, FdSndControl, FdInputEvent, FdTun, FdRandom, FdKcm,
+ FdNetRom}
case ResIPC:
return []ResourceSubkind{IPCMsq, IPCSem, IPCShm}
case ResIOCtx, ResKey, ResInotifyDesc, ResPid, ResUid, ResGid, ResTimerid, ResIocbPtr, ResDrmCtx:
diff --git a/sys/kcm.txt b/sys/kcm.txt
new file mode 100755
index 000000000..c4e603d77
--- /dev/null
+++ b/sys/kcm.txt
@@ -0,0 +1,29 @@
+# Copyright 2016 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+include <linux/kcm.h>
+
+socket$kcm(domain const[AF_KCM], type flags[kcm_socket_type], proto const[KCMPROTO_CONNECTED]) fd[kcm]
+setsockopt$KCM_RECV_DISABLE(fd fd[kcm], level const[SOL_KCM], opt const[KCM_RECV_DISABLE], val ptr[in, int32], len len[val])
+getsockopt$KCM_RECV_DISABLE(fd fd[kcm], level const[SOL_KCM], opt const[KCM_RECV_DISABLE], val ptr[out, int32], len len[val])
+sendmsg$kcm(fd fd[kcm], msg ptr[in, send_msghdr], f flags[send_flags])
+recvmsg$kcm(fd fd[kcm], msg ptr[in, recv_msghdr], f flags[recv_flags])
+
+ioctl$SIOCKCMATTACH(fd fd[kcm], cmd const[SIOCKCMATTACH], arg ptr[in, kcm_attach])
+ioctl$SIOCKCMUNATTACH(fd fd[kcm], cmd const[SIOCKCMUNATTACH], arg ptr[in, kcm_unattach])
+ioctl$SIOCKCMCLONE(fd fd[kcm], cmd const[SIOCKCMCLONE], arg ptr[inout, kcm_clone])
+
+kcm_socket_type = SOCK_DGRAM, SOCK_SEQPACKET
+
+kcm_attach {
+ fd fd[sock]
+ bpf_fd int32
+}
+
+kcm_unattach {
+ fd fd[sock]
+}
+
+kcm_clone {
+ fd fd[sock]
+}
diff --git a/sys/netrom.txt b/sys/netrom.txt
new file mode 100755
index 000000000..630a6dbbb
--- /dev/null
+++ b/sys/netrom.txt
@@ -0,0 +1,62 @@
+# Copyright 2016 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+include <linux/netrom.h>
+
+socket$netrom(domain const[AF_NETROM], type const[SOCK_SEQPACKET], proto const[0]) fd[netrom]
+bind$netrom(fd fd[netrom], addr ptr[in, sockaddr_netrom], addrlen len[addr])
+connect$netrom(fd fd[netrom], addr ptr[in, sockaddr_netrom], addrlen len[addr])
+accept$netrom(fd fd[netrom], peer ptr[out, sockaddr_netrom, opt], peerlen ptr[inout, len[peer, int32]]) fd[netrom]
+listen$netrom(fd fd[netrom], backlog int32)
+sendmsg$netrom(fd fd[netrom], msg ptr[in, msghdr_netrom], f flags[send_flags])
+recvmsg$netrom(fd fd[netrom], msg ptr[in, msghdr_netrom], f flags[recv_flags])
+getsockname$netrom(fd fd[netrom], addr ptr[out, sockaddr_netrom], addrlen ptr[inout, len[addr, int32]])
+getpeername$netrom(fd fd[netrom], peer ptr[out, sockaddr_netrom], peerlen ptr[inout, len[peer, int32]])
+
+setsockopt$NETROM_T1(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T1], arg ptr[in, int32], arglen len[arg])
+setsockopt$NETROM_T2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T2], arg ptr[in, int32], arglen len[arg])
+setsockopt$NETROM_N2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_N2], arg ptr[in, int32], arglen len[arg])
+setsockopt$NETROM_T4(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T4], arg ptr[in, int32], arglen len[arg])
+setsockopt$NETROM_IDLE(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_IDLE], arg ptr[in, int32], arglen len[arg])
+
+getsockopt$NETROM_T1(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T1], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]])
+getsockopt$NETROM_T2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T2], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]])
+getsockopt$NETROM_N2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_N2], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]])
+getsockopt$NETROM_T4(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T4], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]])
+getsockopt$NETROM_IDLE(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_IDLE], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]])
+
+ioctl$NETROM_TIOCOUTQ(fd fd[netrom], cmd const[TIOCOUTQ], arg ptr[out, int32])
+ioctl$NETROM_TIOCINQ(fd fd[netrom], cmd const[TIOCINQ], arg ptr[out, int32])
+ioctl$NETROM_SIOCGSTAMP(fd fd[netrom], cmd const[SIOCGSTAMP], arg ptr[out, int32])
+ioctl$NETROM_SIOCGSTAMPNS(fd fd[netrom], cmd const[SIOCGSTAMPNS], arg ptr[out, int32])
+ioctl$NETROM_SIOCADDRT(fd fd[netrom], cmd const[SIOCADDRT], arg ptr[out, int32])
+
+ax25_address {
+ call array[int8, 7]
+}
+
+sockaddr_ax25 {
+ family const[AF_NETROM, int16]
+ call ax25_address
+ ndigis int32
+}
+
+full_sockaddr_ax25 {
+ ax25 sockaddr_ax25
+ dig array[ax25_address, AX25_MAX_DIGIS]
+}
+
+sockaddr_netrom [
+ ax25 sockaddr_ax25
+ full full_sockaddr_ax25
+] [varlen]
+
+msghdr_netrom {
+ addr ptr[in, sockaddr_netrom]
+ addrlen len[addr, int32]
+ vec ptr[in, array[iovec_in]]
+ vlen len[vec, intptr]
+ ctrl ptr[in, array[cmsghdr], opt]
+ ctrllen len[ctrl, intptr]
+ f flags[send_flags, int32]
+}