# Copyright 2021 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 include include include include resource fd_bpf[fd] openat$bpf(fd const[AT_FDCWD], file ptr[in, string["/dev/bpf"]], flags flags[open_flags], mode const[0]) fd_bpf define BIOCGDLTLIST32 3221766777 define BIOCSRTIMEOUT32 2148024941 define BIOCGRTIMEOUT32 1074283118 define BIOCSETF32 2148024935 define BIOCSETFNR32 2148024962 define BIOCSETWF32 2148024955 ioctl$BIOCGBLEN(fd fd_bpf, cmd const[BIOCGBLEN], arg ptr[out, int32]) ioctl$BIOCSBLEN(fd fd_bpf, cmd const[BIOCSBLEN], arg ptr[inout, int32]) ioctl$BIOCGDLT(fd fd_bpf, cmd const[BIOCGDLT], arg ptr[out, int32]) ioctl$BIOCGDLTLIST(fd fd_bpf, cmd const[BIOCGDLTLIST], arg ptr[inout, bpf_dltlist]) ioctl$BIOCSDLT(fd fd_bpf, cmd const[BIOCSDLT], arg ptr[in, int32]) ioctl$BIOCPROMISC(fd fd_bpf, cmd const[BIOCPROMISC]) ioctl$BIOCFLUSH(fd fd_bpf, cmd const[BIOCFLUSH]) ioctl$BIOCGETIF(fd fd_bpf, cmd const[BIOCGETIF], arg ptr[out, ifreq]) ioctl$BIOCSETIF(fd fd_bpf, cmd const[BIOCSETIF], arg ptr[in, ifreq]) ioctl$BIOCSRTIMEOUT(fd fd_bpf, cmd const[BIOCSRTIMEOUT], arg ptr[in, timeval]) ioctl$BIOCGRTIMEOUT(fd fd_bpf, cmd const[BIOCGRTIMEOUT], arg ptr[out, timeval]) ioctl$BIOCGSTATS(fd fd_bpf, cmd const[BIOCGSTATS], arg ptr[out, bpf_stat]) ioctl$BIOCIMMEDIATE(fd fd_bpf, cmd const[BIOCIMMEDIATE], arg ptr[in, int32]) ioctl$BIOCSETF(fd fd_bpf, cmd const[BIOCSETF], arg ptr[in, bpf_program]) ioctl$BIOCSETFNR(fd fd_bpf, cmd const[BIOCSETFNR], arg ptr[in, bpf_program]) ioctl$BIOCSETWF(fd fd_bpf, cmd const[BIOCSETWF], arg ptr[in, bpf_program]) ioctl$BIOCVERSION(fd fd_bpf, cmd const[BIOCVERSION], arg ptr[out, bpf_version]) ioctl$BIOCGRSIG(fd fd_bpf, cmd const[BIOCGRSIG], arg ptr[out, int32]) ioctl$BIOCSRSIG(fd fd_bpf, cmd const[BIOCSRSIG], arg ptr[in, int32]) ioctl$BIOCSHDRCMPLT(fd fd_bpf, cmd const[BIOCSHDRCMPLT], arg ptr[in, int32]) ioctl$BIOCGHDRCMPLT(fd fd_bpf, cmd const[BIOCGHDRCMPLT], arg ptr[out, int32]) ioctl$BIOCSDIRECTION(fd fd_bpf, cmd const[BIOCSDIRECTION], arg ptr[in, flags[direction_flags, int32]]) ioctl$BIOCGDIRECTION(fd fd_bpf, cmd const[BIOCGDIRECTION], arg ptr[out, int32]) ioctl$BIOCSTSTAMP(fd fd_bpf, cmd const[BIOCSTSTAMP], arg ptr[in, int32]) ioctl$BIOCGTSTAMP(fd fd_bpf, cmd const[BIOCGTSTAMP], arg ptr[out, int32]) ioctl$BIOCFEEDBACK(fd fd_bpf, cmd const[BIOCFEEDBACK], arg ptr[in, int32]) ioctl$BIOCLOCK(fd fd_bpf, cmd const[BIOCLOCK]) ioctl$BIOCGETBUFMODE(fd fd_bpf, cmd const[BIOCGETBUFMODE], arg ptr[out, int32]) ioctl$BIOCSETBUFMODE(fd fd_bpf, cmd const[BIOCSETBUFMODE], arg ptr[in, flags[bufmode_flags, int32]]) ioctl$BIOCSETZBUF(fd fd_bpf, cmd const[BIOCSETZBUF], arg ptr[in, bpf_zbuf]) ioctl$BIOCGETZMAX(fd fd_bpf, cmd const[BIOCGETZMAX], arg ptr[out, int32]) ioctl$BIOCROTZBUF(fd fd_bpf, cmd const[BIOCROTZBUF], arg ptr[out, bpf_zbuf]) ioctl$BIOCGDLTLIST32(fd fd_bpf, cmd const[BIOCGDLTLIST32], arg ptr[inout, bpf_dltlist32]) ioctl$BIOCSRTIMEOUT32(fd fd_bpf, cmd const[BIOCSRTIMEOUT32], arg ptr[in, timeval32]) ioctl$BIOCGRTIMEOUT32(fd fd_bpf, cmd const[BIOCGRTIMEOUT32], arg ptr[out, timeval32]) ioctl$BIOCSETF32(fd fd_bpf, cmd const[BIOCSETF32], arg ptr[in, bpf_program32]) ioctl$BIOCSETFNR32(fd fd_bpf, cmd const[BIOCSETFNR32], arg ptr[in, bpf_program32]) ioctl$BIOCSETWF32(fd fd_bpf, cmd const[BIOCSETWF32], arg ptr[in, bpf_program32]) bpf_dltlist32 { bfl_len int32 bfl_list int32 } bpf_dltlist { bfl_len len[bfl_list, int32] bfl_list ptr[in, array[int32]] } bpf_stat { bs_recv int32 bs_drop int32 } bpf_program32 { bf_len int32 bf_insns int32 } bpf_program { bf_len len[bf_insns, int32] bf_insns ptr[in, array[bpf_insn]] } define BPF_MAJOR_VERSION 1 define BPF_MINOR_VERSION 1 bpf_version { bv_major const[BPF_MAJOR_VERSION, int16] bv_minor const[BPF_MINOR_VERSION, int16] } bpf_insn { code int16 jt int8 jf int8 k int32 } bpf_zbuf { bz_bufa ptr[in, array[int8]] bz_bufb ptr[in, array[int8]] bz_buflen len[bz_bufa, int32] } define IFNAMSIZ 16 ifreq { ifr_name const[IFNAMSIZ, int8] ifr_ifru ifr_ifru } ifreq_buffer { length len[buffer, int32] buffer ptr[in, array[int8]] } ifr_ifru [ ifru_addr sockaddr ifru_dstaddr sockaddr ifru_broadaddr sockaddr ifru_buffer ifreq_buffer ifru_flags array[int16, 2] ifru_index int16 ifru_jid int32 ifru_metric int32 ifru_mtu int32 ifru_phys int32 ifru_media int32 ifru_data ptr[in, array[int8]] ifru_cap array[int32, 2] ifru_fib int32 ifru_vlan_pcp int8 ] sockaddr { sa_len int8 sa_family flags[address_family, int8] sa_data array[int8, 14] } timeval32 { tv_sec int32 tv_used int32 } address_family = AF_UNIX, AF_INET, AF_IMPLINK, AF_PUP, AF_CHAOS, AF_NETBIOS, AF_ISO, AF_OSI, AF_ECMA, AF_DATAKIT, AF_CCITT, AF_SNA, AF_DECnet, AF_DLI, AF_LAT, AF_HYLINK, AF_APPLETALK, AF_ROUTE, AF_LINK, pseudo_AF_XTP, AF_COIP, AF_CNT, pseudo_AF_RTIP, AF_IPX, AF_SIP, pseudo_AF_PIP, AF_ISDN, pseudo_AF_KEY, AF_INET6, AF_NATM, AF_ATM, pseudo_AF_HDRCMPLT, AF_NETGRAPH, AF_SLOW, AF_SCLUSTER, AF_ARP, AF_BLUETOOTH direction_flags = BPF_D_IN, BPF_D_INOUT, BPF_D_OUT bufmode_flags = BPF_BUFMODE_BUFFER, BPF_BUFMODE_ZBUF