aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/socket_netrom.txt
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-12-24 16:52:56 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-24 18:56:06 +0100
commitdd61e58d94240df628a568c5609b1441746f4a54 (patch)
treee3af3214314c85e0cd614f642d391bdbf9d707ce /sys/linux/socket_netrom.txt
parentdd2986b43bc0024340006833d6a7f05ec94c061c (diff)
sys/linux: extend AX25/ROSE/NETROM descriptions
Diffstat (limited to 'sys/linux/socket_netrom.txt')
-rwxr-xr-xsys/linux/socket_netrom.txt70
1 files changed, 39 insertions, 31 deletions
diff --git a/sys/linux/socket_netrom.txt b/sys/linux/socket_netrom.txt
index 39897460c..84e687bb1 100755
--- a/sys/linux/socket_netrom.txt
+++ b/sys/linux/socket_netrom.txt
@@ -2,21 +2,21 @@
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <linux/net.h>
-include <linux/netrom.h>
+include <uapi/linux/netrom.h>
+include <uapi/linux/ax25.h>
include <asm/ioctls.h>
resource sock_netrom[sock]
-socket$netrom(domain const[AF_NETROM], type const[SOCK_SEQPACKET], proto const[0]) sock_netrom
-bind$netrom(fd sock_netrom, addr ptr[in, sockaddr_netrom], addrlen len[addr])
-connect$netrom(fd sock_netrom, addr ptr[in, sockaddr_netrom], addrlen len[addr])
-accept$netrom(fd sock_netrom, peer ptr[out, sockaddr_netrom, opt], peerlen ptr[inout, len[peer, int32]]) sock_netrom
-accept4$netrom(fd sock_netrom, peer ptr[out, sockaddr_netrom, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_netrom
-listen$netrom(fd sock_netrom, backlog int32)
-sendmsg$netrom(fd sock_netrom, msg ptr[in, msghdr_netrom], f flags[send_flags])
-recvmsg$netrom(fd sock_netrom, msg ptr[inout, msghdr_netrom], f flags[recv_flags])
-getsockname$netrom(fd sock_netrom, addr ptr[out, sockaddr_netrom], addrlen ptr[inout, len[addr, int32]])
-getpeername$netrom(fd sock_netrom, peer ptr[out, sockaddr_netrom], peerlen ptr[inout, len[peer, int32]])
+syz_init_net_socket$netrom(domain const[AF_NETROM], type const[SOCK_SEQPACKET], proto const[0]) sock_netrom
+bind$netrom(fd sock_netrom, addr ptr[in, full_sockaddr_ax25], addrlen len[addr])
+connect$netrom(fd sock_netrom, addr ptr[in, full_sockaddr_ax25], addrlen len[addr])
+accept$netrom(fd sock_netrom, peer ptr[out, full_sockaddr_ax25, opt], peerlen ptr[inout, len[peer, int32]]) sock_netrom
+accept4$netrom(fd sock_netrom, peer ptr[out, full_sockaddr_ax25, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_netrom
+sendto$netrom(fd sock_netrom, buf ptr[in, array[int8]], len len[buf], f flags[send_flags], addr ptr[in, full_sockaddr_ax25, opt], addrlen len[addr])
+recvfrom$netrom(fd sock_netrom, buf ptr[out, array[int8]], len len[buf], f flags[recv_flags], addr ptr[in, full_sockaddr_ax25, opt], addrlen len[addr])
+getsockname$netrom(fd sock_netrom, addr ptr[out, full_sockaddr_ax25], addrlen ptr[inout, len[addr, int32]])
+getpeername$netrom(fd sock_netrom, peer ptr[out, full_sockaddr_ax25], peerlen ptr[inout, len[peer, int32]])
setsockopt$netrom_NETROM_T1(fd sock_netrom, level const[SOL_NETROM], opt const[NETROM_T1], arg ptr[in, int32], arglen len[arg])
setsockopt$netrom_NETROM_T2(fd sock_netrom, level const[SOL_NETROM], opt const[NETROM_T2], arg ptr[in, int32], arglen len[arg])
@@ -30,24 +30,32 @@ getsockopt$netrom_NETROM_N2(fd sock_netrom, level const[SOL_NETROM], opt const[N
getsockopt$netrom_NETROM_T4(fd sock_netrom, level const[SOL_NETROM], opt const[NETROM_T4], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]])
getsockopt$netrom_NETROM_IDLE(fd sock_netrom, level const[SOL_NETROM], opt const[NETROM_IDLE], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]])
-# TODO: make these more generic
-ioctl$sock_netrom_TIOCOUTQ(fd sock_netrom, cmd const[TIOCOUTQ], arg ptr[out, int32])
-ioctl$sock_netrom_TIOCINQ(fd sock_netrom, cmd const[TIOCINQ], arg ptr[out, int32])
-ioctl$sock_netrom_SIOCGSTAMP(fd sock_netrom, cmd const[SIOCGSTAMP], arg ptr[out, int32])
-ioctl$sock_netrom_SIOCGSTAMPNS(fd sock_netrom, cmd const[SIOCGSTAMPNS], arg ptr[out, int32])
-ioctl$sock_netrom_SIOCADDRT(fd sock_netrom, cmd const[SIOCADDRT], arg ptr[out, int32])
-
-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 bytesize[ctrl, intptr]
- f flags[send_flags, int32]
+ioctl$sock_netrom_SIOCADDRT(fd sock_netrom, cmd const[SIOCADDRT], arg ptr[in, nr_route_struct])
+ioctl$sock_netrom_SIOCDELRT(fd sock_netrom, cmd const[SIOCDELRT], arg ptr[in, nr_route_struct])
+ioctl$SIOCNRDECOBS(fd sock_netrom, cmd const[SIOCNRDECOBS])
+
+# This is what we assign to nr* devices in initialize_netdevices_init: bb:bb:bb:bb:bb:00:%02hx
+address_netrom_dev {
+ b0 const[0xbb, int8]
+ b1 const[0xbb, int8]
+ b2 const[0xbb, int8]
+ b3 const[0xbb, int8]
+ b4 const[0xbb, int8]
+ b5 const[0x0, int8]
+ b6 proc[0, 1, int8]
}
+
+nr_route_struct {
+ type flags[nr_route_type, int32]
+ callsign ax25_address
+ device ax25_devname
+ quality int32
+ mnemonic string[nr_route_mnemonics, 7]
+ neighbour ax25_address
+ obs_count int32
+ ndigis int32[0:AX25_MAX_DIGIS]
+ digipeaters array[ax25_address, AX25_MAX_DIGIS]
+}
+
+nr_route_type = NETROM_NEIGH, NETROM_NODE
+nr_route_mnemonics = "syz0", "syz1"