# 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 include include 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] }