blob: ca9d930b2578bcb85dfd9275014ce99149c57eb8 [file] [log] [blame]
# 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]
}