1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# Copyright 2018 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/socket.h>
include <linux/net.h>
include <uapi/linux/rose.h>
resource sock_rose[sock]
syz_init_net_socket$rose(domain const[AF_ROSE], type const[SOCK_SEQPACKET], proto const[0]) sock_rose
bind$rose(fd sock_rose, addr ptr[in, sockaddr_rose_any], addrlen len[addr])
connect$rose(fd sock_rose, addr ptr[in, sockaddr_rose_any], addrlen len[addr])
accept4$rose(fd sock_rose, peer ptr[out, sockaddr_rose_any, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_rose
sendto$rose(fd sock_rose, buf ptr[in, array[int8]], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_rose_any, opt], addrlen len[addr])
recvfrom$rose(fd sock_rose, buf ptr[out, array[int8]], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_rose_any, opt], addrlen len[addr])
setsockopt$rose(fd sock_rose, level const[SOL_ROSE], opt flags[rose_sockopts], arg ptr[in, int32], arglen len[arg])
getsockopt$rose(fd sock_rose, level const[SOL_ROSE], opt flags[rose_sockopts], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]])
rose_sockopts = ROSE_DEFER, ROSE_T1, ROSE_T2, ROSE_T3, ROSE_IDLE, ROSE_QBITINCL, ROSE_HOLDBACK
ioctl$sock_rose_SIOCADDRT(fd sock_rose, cmd const[SIOCADDRT], arg ptr[in, rose_route_struct])
ioctl$sock_rose_SIOCDELRT(fd sock_rose, cmd const[SIOCDELRT], arg ptr[in, rose_route_struct])
ioctl$sock_rose_SIOCRSCLRRT(fd sock_rose, cmd const[SIOCRSCLRRT])
ioctl$SIOCRSGCAUSE(fd sock_rose, cmd const[SIOCRSGCAUSE], arg ptr[out, int16])
ioctl$SIOCRSSCAUSE(fd sock_rose, cmd const[SIOCRSSCAUSE], arg ptr[in, int16])
ioctl$SIOCRSSL2CALL(fd sock_rose, cmd const[SIOCRSSL2CALL], arg ptr[in, ax25_address])
ioctl$SIOCRSGL2CALL(fd sock_rose, cmd const[SIOCRSGL2CALL], arg ptr[out, ax25_address])
ioctl$SIOCRSACCEPT(fd sock_rose, cmd const[SIOCRSACCEPT])
sockaddr_rose_any [
short sockaddr_rose
full full_sockaddr_rose
] [varlen]
sockaddr_rose {
srose_family const[AF_ROSE, int16]
srose_addr rose_address
srose_call ax25_address
srose_ndigis const[1, int32]
srose_digi ax25_address
}
full_sockaddr_rose {
srose_family const[AF_ROSE, int16]
srose_addr rose_address
srose_call ax25_address
srose_ndigis int32[0:ROSE_MAX_DIGIS]
srose_digis array[ax25_address, ROSE_MAX_DIGIS]
}
rose_address [
remote rose_address_remote
dev rose_address_dev
] [size[5]]
# Just some address without special meaning.
rose_address_remote {
b0 const[0xcc, int8]
b1 const[0xcc, int8]
b2 const[0xcc, int8]
b3 const[0xcc, int8]
b4 proc[0, 4, int8]
}
# This is what we assign to rose* devices in initialize_netdevices_init: bb:bb:bb:01:%02hx
rose_address_dev {
b0 const[0xbb, int8]
b1 const[0xbb, int8]
b2 const[0xbb, int8]
b3 const[0x1, int8]
b4 proc[0, 1, int8]
}
rose_route_struct {
address rose_address
mask int16
neighbour ax25_address
device ax25_devname
ndigis int8[0:AX25_MAX_DIGIS]
digipeaters array[ax25_address, AX25_MAX_DIGIS]
}
|