diff options
author | Elliott Hughes <enh@google.com> | 2017-11-16 21:11:04 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-11-16 21:11:04 +0000 |
commit | 10c524dc7533628f28dbb9dd14de406475675312 (patch) | |
tree | cfddf13024e3917e17a9debc8b7391c9fe1559ed | |
parent | 8d944ebe543a96248ec4f6be2cd84ad3df418ae7 (diff) | |
parent | f174ca62c552149d51472717a480e2a571885b9a (diff) | |
download | strace-10c524dc7533628f28dbb9dd14de406475675312.tar.gz |
Merge "Update strace to 4.20." am: 18120556c1
am: f174ca62c5
Change-Id: Ieb202f299496500af91274b8fcbc0680d688ab87
335 files changed, 13152 insertions, 1044 deletions
@@ -15,37 +15,51 @@ strace-devel@lists.sourceforge.net mailing list. Aaron Ucko <ucko@vax1.rockhurst.edu> Abhishek Tiwari <erabhishektiwarics@gmail.com> Adrien Kunysz <adrien@kunysz.be> + Alexey Brodkin <Alexey.Brodkin@synopsys.com> Alexey Neyman <stilor@att.net> Ali Polatel <alip@exherbo.org> + Anatoly Pugachev <matorola@gmail.com> Anchit Jain <anchitjain1234@gmail.com> Andi Kleen <ak@linux.intel.com> Andre McCurdy <armccurdy@gmail.com> Andreas Schwab <schwab@linux-m68k.org> + Andrew Guertin <lists@dolphinling.net> + Angelo Castello <angelo.castello@st.com> Anton Blanchard <anton@samba.org> Arkadiusz Miskiewicz <misiek@pld.org.pl> + Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com> Aurelien Jacobs <aurel@gnuage.org> Bai Weidong <baiwd@cn.fujitsu.com> Bart Van Assche <bart.vanassche@sandisk.com> + Baruch Siach <baruch@tkos.co.il> Ben Noordhuis <info@bnoordhuis.nl> Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Bo Kullmar <bk@kullmar.se> + Bryan Matsuo <bryan.matsuo@gmail.com> + Bryce Gibson <bryce@gibson-consulting.com.au> Cai Fei <caifei@cn.fujitsu.com> Carlos O'Donell <carlos@systemhalted.org> - Carmelo AMOROSO <carmelo.amoroso@st.com> + Carmelo Amoroso <carmelo.amoroso@st.com> + Cheolung Lee <chpie@grayhash.com> Chris Dearman <chris.dearman@imgtec.com> Chris Metcalf <cmetcalf@tilera.com> Chris Zankel <chris@zankel.net> + Christian Neukirchen <chneukirchen@gmail.com> Christian Svensson <blue@cmd.nu> + Christopher Covington <cov@codeaurora.org> D.J. Barrow <djbarrow@de.ibm.com> Damien Profeta <damien.profeta@amadeus.com> - Damir Shayhutdinov <damir@altlinux.ru> + Damir Shayhutdinov <damir@altlinux.org> Daniel P. Berrange <berrange@redhat.com> David Daney <ddaney@caviumnetworks.com> David Mosberger-Tang <davidm@hpl.hp.com> + David Robins <dbrobins@i4031.net> David S. Miller <davem@caip.rutgers.edu> David Wilder <wilder@us.ibm.com> David Woodhouse <dwmw2@redhat.com> Denys Vlasenko <vda.linux@googlemail.com> + Dima Kogan <dima@secretsauce.net> + Dima Krasner <dima@dimakrasner.com> Dmitry V. Levin <ldv@altlinux.org> Douglas Mencken <dougmencken@gmail.com> Dr. David Alan Gilbert <dgilbert@redhat.com> @@ -63,6 +77,7 @@ strace-devel@lists.sourceforge.net mailing list. Felix Janda <felix.janda@posteo.de> Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp> Florian Lohoff <flo@rfc822.org> + Fr. Br. George <george@altlinux.org> Frederik Schüler <fs@debian.org> Gabor Gombas <gombasg@sztaki.hu> Gabriel Laskar <gabriel@lse.epita.fr> @@ -73,6 +88,7 @@ strace-devel@lists.sourceforge.net mailing list. Grant Edwards <grant.b.edwards@gmail.com> Greg Banks <gbanks@pocketpenguins.com> H.J. Lu <hongjiu.lu@intel.com> + Harald van Dijk <truedfx@gentoo.org> Heiko Carstens <heiko.carstens@de.ibm.com> Helge Deller <deller@gmx.de> Henrik Storner <storner@osiris.ping.dk> @@ -89,12 +105,17 @@ strace-devel@lists.sourceforge.net mailing list. Jeff Mahoney <jeffm@suse.com> Jian Zhen <zhenjl@gmail.com> JingPiao Chen <chenjingpiao@gmail.com> + Jiri Slaby <jirislaby@gmail.com> + Joakim Bech <joakim.bech@linaro.org> Joe Ilacqua <spike@world.std.com> + Joe Korty <joe.korty@ccur.com> Johannes Stezenbach <js@sig21.net> John Hughes <john@Calva.COM> John Spencer <maillist-strace@barfooze.de> - Ju"rgen Fluk <louis@marco.de> - Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de> + Josef T. Burger <bolo@cs.wisc.edu> + Joshua Neal <tinara@netpipeline.net> + Jürgen Fluk <louis@marco.de> + Jürgen Weigert <jnweiger@immd4.informatik.uni-erlangen.de> Katerina Koukiou <k.koukiou@googlemail.com> Keith Owens <kaos.ocs@gmail.com> Keith Thompson <kst@alsys.com> @@ -103,13 +124,15 @@ strace-devel@lists.sourceforge.net mailing list. Kyle McMartin <kyle@mcmartin.ca> Lai JiangShan <laijs@cn.fujitsu.com> Lazar Trsic <Lazar.Trsic@imgtec.com> + Lennart Sorensen <lsorense@csclub.uwaterloo.ca> Leonard N. Zubkoff <lnz@dandelion.com> + Li Er <phoooyb@gmail.com> Linus Torvalds <Linus.Torvalds@cs.helsinki.fi> Lubomir Rintel <lkundrak@v3.sk> Luca Clementi <luca.clementi@gmail.com> Lupe Christoph <lupe@alanya.isar.muc.de> Maarten ter Huurne <maarten@treewalker.org> - Mark Hills <Mark.Hills@framestore.com> + Mark Hills <mark.hills@framestore.com> Mark Wielaard <mjw@redhat.com> Marty Leisner <leisner@sdsp.mc.xerox.com> Masatake YAMATO <yamato@redhat.com> @@ -118,27 +141,32 @@ strace-devel@lists.sourceforge.net mailing list. Max Filippov <jcmvbkbc@gmail.com> Maxim Shchetynin <maxim@de.ibm.com> Maxin B. John <maxin.john@enea.com> + Md Haris Iqbal <haris.phnx@gmail.com> + Michael A Fetterman <mafetter@nvidia.com> Michael E Chastain <mec@duracef.shout.net> Michael Holzheu <holzheu@de.ibm.com> Michael Shigorin <mike@altlinux.org> Michail Litvak <mci@owl.openwall.com> Michal Ludvig <mludvig@suse.cz> + Michal Simek <monstr@monstr.eu> Mike Frysinger <vapier@gentoo.org> Mike Stroyan <mike.stroyan@hp.com> Mikulas Patocka <mpatocka@redhat.com> Miroslav Lichvar <mlichvar@redhat.com> Muttley Meen <muttley.meen@gmail.com> - Nahim El Atmani <naam@lse.epita.fr> + Nahim El Atmani <nahim+dev@naam.me> Namhyung Kim <namhyung.kim@lge.com> Nate Eldredge <nate@cartsys.com> Nate Sammons <nate@users.sourceforge.net> Neil Campbell <lists@thebatcave.org.uk> Nikolay Marchuk <marchuk.nikolay.a@gmail.com> + Orion Poplawski <orion@cora.nwra.com> Paolo Bonzini <pbonzini@redhat.com> - Patrik Jakobsson <patrik.jakobsson@linux.intel.com> + Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Paul Mundt <lethal@linux-sh.org> Pavel Machek <pavel@ucw.cz> Peter Jones <pjones@redhat.com> + Peter Zotov <whitequark@whitequark.org> Philippe De Muyter <phdm@macqel.be> Philippe Ombredanne <pombredanne@nexb.com> Pádraig Brady <P@draigBrady.com> @@ -151,7 +179,9 @@ strace-devel@lists.sourceforge.net mailing list. Richard Henderson <richard@twiddle.tamu.edu> Richard Hirst <rhirst@linuxcare.com> Richard W.M. Jones <rjones@redhat.com> + Rick Jones <rick.jones2@hp.com> Rishi Bhatt <bhatt.rishi062@gmail.com> + Robin Hack <hack.robin@gmail.com> Roland Borde <bo@uebemc.siemens.de> Roland McGrath <roland@redhat.com> Romain Naour <romain.naour@smile.fr> @@ -162,13 +192,15 @@ strace-devel@lists.sourceforge.net mailing list. Sebastian Pipping <sebastian@pipping.org> Seraphime Kirkovski <kirkseraph@gmail.com> Sergei Trofimovich <slyfox@gentoo.org> + Sergey Bolshakov <sbolshakov@altlinux.org> Simon Murray <simon@transitive.com> Solar Designer <solar@openwall.com> Srinivasa Ds <srinivasa@in.ibm.com> Stanislav Brabec <sbrabec@suse.cz> Stefan Sørensen <stefan.sorensen@spectralink.com> Steve Bennett <steveb@workware.net.au> - Steve McIntyre <steve.mcintyre@linaro.org> + Steve McIntyre <steve@einval.com> + Steven Honeyman <stevenhoneyman@gmail.com> Szabolcs Nagy <nsz@port70.net> Thanh Ma <tma@encore.com> Thiemo Seufer <ths@networkno.de> @@ -184,10 +216,12 @@ strace-devel@lists.sourceforge.net mailing list. Victor Krapivensky <krapivenskiy.va@phystech.edu> Vineet Gupta <Vineet.Gupta1@synopsys.com> Wang Chao <wang.chao@cn.fujitsu.com> + Weichuan Yan <wchyan@marvell.com> Wichert Akkerman <wichert@deephackmode.org> - William Manley <william.manley@youview.com> + William Manley <will@williammanley.net> Xiaoning Ding <dingxn@gmail.com> Yang Zhiguo <yzgcsu@cn.fujitsu.com> + Yun-Chih Chen <b03902074@ntu.edu.tw> Zach Brown <zach.brown@oracle.com> Zev Weiss <zev@bewilderbeest.net> Zhang Le <zhilg@users.sourceforge.net> @@ -1,3 +1,786 @@ +2017-11-13 Dmitry V. Levin <ldv@altlinux.org> + + Prepare for 4.20 release. + * NEWS: Update for 4.20 release. + + CREDITS.in: remove entries listed by maint/gen-contributors-list.sh. + +2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> + + Makefile.am: use gen-contributors-list.sh for CREDITS. + * Makefile.am ($(srcdir)/CREDITS): Employ maint/gen-contributors-list.sh + for the contributor list generation. + +2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> + + maint: make gen-contributors-list.sh suitable for generation of CREDITS. + Implement various features in order to make it suitable for the + generation of the CREDITS file: + - add an option for including contributor e-mail; + - add an option to read additional list of contributors from stdin; + - add shorthand for referring to the initial commit of the branch; + - document all of the above in a help message. + + * maint/gen-contributors-list.sh (print_help): New function. + (script): Rename to SCRIPT. + (SCRIPT_NORM_EMAILS, MATCH_OUT, OUT_EMAILS, OUT_NO_EMAILS, read_stdin, + include_email): New variables. + Add parsing of options, rewrite input processing. + +2017-11-13 Dmitry V. Levin <ldv@altlinux.org> + + .mailmap: add more entries to avoid duplication in CREDITS. + + .mailmap: sort entries. + +2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> + + .mailmap: more deduplication. + Of course there are no two persons in the whole world that share + the same name. + +2017-11-13 Dmitry V. Levin <ldv@altlinux.org> + + CREDITS.in: use UTF-8 consistently. + In particular, do not use " symbols in names. + +2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> + + CREDITS.in: add Jiri Slaby as a contributor. + Unfortunately, he wasn't mentioned in the message of the commit + v4.19-68-g48cb633, so let's fix that omission. + + References: https://github.com/strace/strace/pull/16 + +2017-11-13 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> + + s390, s390x: update ioctl entries from linux 4.14. + * linux/s390/ioctls_arch0.h: Update from linux v4.14 using ioctls_gen.sh. + * linux/s390x/ioctls_arch0.h: Likewise. + + s390x: remove some of non-s390 KVM ioctls. + * linux/s390x/ioctls_arch0.h: Regenerate. + + maint: remove KVM_PPC_CONFIGURE_V3_MMU ioctl from non-powerpc arches. + * maint/ioctls_sym.sh (ppc_list): Update. + +2017-11-12 Dmitry V. Levin <ldv@altlinux.org> + + Update copyright headers. + Headers updated semi-automatically using + maint/update_copyright_years.sh script. + + * m4/mpers.m4: Update copyright years. + * tests/kcmp.c: Likewise. + * tests/membarrier.c: Likewise. + +2017-11-11 Dmitry V. Levin <ldv@altlinux.org> + + maint/update_copyright_years.sh: fix typo in help output. + * maint/update_copyright_years.sh (print_help): Fix typo, disable + here-document expansion. + +2017-11-10 Eugene Syromiatnikov <esyr@redhat.com> + + Move MIN, MAX, and CLAMP to macros.h. + We shouldn't have to include the whole defs.h to get them. + + * defs.h (MIN, MAX, CLAMP): Move ... + * macros.h: ... here. + +2017-11-10 Eugene Syromiatnikov <esyr@redhat.com> + + Update .mailmap. + * .mailmap (Eugene Syromyatnikov): Add work address. + +2017-11-07 Steve McIntyre <steve@einval.com> + + debian: update debhelper compat level to 10, replace -s with -a in some calls + + debian: update Standards-Version to 3.9.8. + +2017-11-06 Dmitry V. Levin <ldv@altlinux.org> + + mpers.m4: check for size of long and kernel_long_t. + The primary purpose of this new check is diagnostics. + + * m4/mpers.m4 (st_MPERS): Check for size of long and kernel_long_t. + +2017-11-06 Eugene Syromyatnikov <evgsyr@gmail.com> + + xlat/gen.sh: speedup xlat generation. + This commit implements the following changes: + - increases the number of concurrent jobs to twice the CPU count; + - creates a circular buffer, so instead of running multiple jobs + at once, the generator tries to keep about the same number of jobs + being run concurrently; + - runs gen_git and gen_make concurrently in order to squeeze in + one more bit of concurrency. + + With my deeply scientific measurements, this approach achieves + up to 15% speedup with dash and about 30-40% with bash as /bin/sh + on a 4-core machine. + + * xlat/gen.sh (main): Declare pids local variable, append pid of every + run job to it; increase the limit of jobs to ncpus * 2; when the limit + is reached, wait for the first pid in pids instead of resetting jobs + to zero and waiting for all the run jobs; put gen_git and gen_make + into background. + +2017-11-05 Dmitry V. Levin <ldv@altlinux.org> + + hppa: wire up statx syscall. + * linux/hppa/syscallent.h [349]: Add statx entry. + +2017-11-04 Dmitry V. Levin <ldv@altlinux.org> + + tests: check signal mask transparency. + Starting with commit v4.17-5-gf83b49b strace is expected + to forward the signal mask to tracees unchanged. + + * tests/check_sigblock.c: New file. + * tests/set_sigblock.c: Likewise. + * tests/sigblock.test: New test. + * tests/.gitignore: Add check_sigblock and set_sigblock. + * tests/Makefile.am (check_PROGRAMS): Likewise. + (MISC_TESTS): Add sigblock.test. + +2017-11-03 Dmitry V. Levin <ldv@altlinux.org> + + tests: check signal disposition transparency. + Starting with commit v4.17-8-ge97a66f strace is expected + to forward the signal disposition to tracees unchanged. + + * tests/check_sigign.c: New file. + * tests/list_sigaction_signum.c: Likewise. + * tests/set_sigign.c: Likewise. + * tests/sigign.test: New test. + * tests/.gitignore: Add check_sigign, list_sigaction_signum, + and set_sigign. + * tests/Makefile.am (check_PROGRAMS): Likewise. + (MISC_TESTS): Add sigign.test. + +2017-11-03 Eugene Syromyatnikov <evgsyr@gmail.com> + + tests: update futex test to accommodate the recent kernel change. + Kernel commit v4.14-rc1~162^2~8 refactored futex implementation and + introduced checks for invalid shift sizes. Accommodate this change + by allowing EINVAL in the corresponding futex checks. + + * tests/futex.c (CHECK_FUTEX_GENERIC): Reset errno before the syscall. + (main) <wake_ops>: Add err2 field, describe err/err2 fields. + Add EINVAL as a possible errno to the checks that contain invalid + shift values. + Update return value check so it checks that values are strictly + as expected. + + Closes: https://github.com/strace/strace/pull/16 + +2017-11-03 Eugene Syromyatnikov <evgsyr@gmail.com> + + tests: cleanup futex test. + * tests/futex.c (main) <wake_ops>: Remove unused errstr field + from the structure type definition. + +2017-11-02 Dmitry V. Levin <ldv@altlinux.org> + + seccomp: decode SECCOMP_GET_ACTION_AVAIL operation. + * defs.h (seccomp_ret_action): New xlat prototype. + * seccomp.c (decode_seccomp_set_mode_strict): Remove. + (SYS_FUNC(seccomp)): Decode SECCOMP_GET_ACTION_AVAIL operation. + * NEWS: Mention this. + * tests/seccomp_get_action_avail.c: New file. + * tests/gen_tests.in (seccomp_get_action_avail): New entry. + * tests/pure_executables.list: Add seccomp_get_action_avail. + * tests/.gitignore: Likewise. + +2017-11-01 Dmitry V. Levin <ldv@altlinux.org> + + Add SECCOMP_RET_KILL_PROCESS decoding support. + * bpf_seccomp_filter.c [!SECCOMP_RET_ACTION]: Remove. + [!SECCOMP_RET_ACTION_FULL] (SECCOMP_RET_ACTION_FULL): Define. + (print_seccomp_filter_k): Use SECCOMP_RET_ACTION_FULL + instead of SECCOMP_RET_ACTION. + * xlat/seccomp_ret_action.in: Add SECCOMP_RET_KILL_PROCESS introduced + by linux kernel commit v4.14-rc2~15^2~3. + +2017-11-01 Dmitry V. Levin <ldv@altlinux.org> + + Rename SECCOMP_RET_KILL to SECCOMP_RET_KILL_THREAD. + Follow linux kernel commit v4.14-rc2~15^2~4 and rename SECCOMP_RET_KILL + to SECCOMP_RET_KILL_THREAD. + + * xlat/seccomp_ret_action.in (SECCOMP_RET_KILL): Rename + to SECCOMP_RET_KILL_THREAD. + * tests/prctl-seccomp-filter-v.c (main): Update expected output. + * tests/seccomp-filter-v.c (main): Likewise. + +2017-11-01 Dmitry V. Levin <ldv@altlinux.org> + + Update SECCOMP_* constants. + * xlat/seccomp_filter_flags.in: Add SECCOMP_FILTER_FLAG_LOG introduced + by kernel commit v4.14-rc2~15^2~6. + * xlat/seccomp_ops.in: Add SECCOMP_GET_ACTION_AVAIL introduced + by kernel commit v4.14-rc2~15^2~9. + * xlat/seccomp_ret_action.in: Add SECCOMP_RET_LOG introduced + by kernel commit v4.14-rc2~15^2~5. + * NEWS: Mention this. + * tests/seccomp-filter.c (main): Update expected output. + * tests/seccomp-filter-v.c (main): Likewise. + + Provide fallback definitions for SECCOMP_RET_* constants. + * xlat/seccomp_ret_action.in: Add fallback definitions. + +2017-11-01 Dmitry V. Levin <ldv@altlinux.org> + + tests: robustify options-syntax.test against inquisitive musl. + Workaround musl >= 1.1.17 ability to use AT_EXECFN during + program_invocation_name initialization. + + * tests/options-syntax.test: Check for two valid variants + of "zeroargc strace" expected output. + +2017-11-01 Dmitry V. Levin <ldv@altlinux.org> + + Update MEMBARRIER_CMD_* constants. + * xlat/membarrier_cmds.in: Add MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED + introduced by kernel commit v4.14-rc6~26. + * tests/membarrier.c (main): Update expected output. + +2017-10-31 JingPiao Chen <chenjingpiao@gmail.com> + + tests: check decoding of NFNL_SUBSYS_NFT_COMPAT netlink message flags. + * tests/nfnetlink_nft_compat.c (test_nlmsg_flags): New function. + (main): Use it. + + tests: check decoding of NFNL_SUBSYS_NFTABLES netlink message flags. + * tests/nfnetlink_nftables.c (test_nlmsg_flags): New function. + (main): Use it. + + tests: check decoding of NFNL_SUBSYS_CTHELPER netlink message flags. + * tests/nfnetlink_cthelper.c (test_nlmsg_flags): New function. + (main): Use it. + + tests: check decoding of NFNL_SUBSYS_CTNETLINK_TIMEOUT netlink message flags + * tests/nfnetlink_cttimeout.c (test_nlmsg_flags): New function. + (main): Use it. + + tests: check decoding of NFNL_SUBSYS_ACCT netlink message flags. + * tests/nfnetlink_acct.c (test_nlmsg_flags): New function. + (main): Use it. + + tests: check decoding of NFNL_SUBSYS_CTNETLINK_EXP netlink message flags + * tests/nfnetlink_ctnetlink_exp.c (test_nlmsg_flags): New function. + (main): Use it. + + tests: check decoding of NFNL_SUBSYS_CTNETLINK netlink message flags. + * tests/nfnetlink_ctnetlink.c (test_nlmsg_flags): New function. + (main): Use it. + +2017-10-26 JingPiao Chen <chenjingpiao@gmail.com> + + netlink: decode NETLINK_NETFILTER netlink message flags. + * netlink.c (decode_nlmsg_flags_netfilter): New function. + (nlmsg_flags): Add NETLINK_NETFILTER. + * NEWS: Mention this. + + netlink: decode netlink message delete flags. + * netlink.c: Include "xlat/netlink_delete_flags.h". + (decode_nlmsg_flags_crypto, decode_nlmsg_flags_route, + decode_nlmsg_flags_xfrm): Decode delete flags. + * netlink.h (NLM_F_NONREC): New macro. + * xlat/netlink_delete_flags.in: New file. + * tests/netlink_crypto.c (test_nlmsg_flags): Check this. + * tests/netlink_route.c (test_nlmsg_flags): Likewise. + * tests/netlink_xfrm.c (test_nlmsg_flags): Likewise. + +2017-10-26 JingPiao Chen <chenjingpiao@gmail.com> + + netlink: refactor decode_nlmsg_flags. + Refactor decode_nlmsg_flags to make it family-specific, just like + decode_nlmsg_type and decode_payload. + + * netlink.c (decode_nlmsg_flags_crypto, decode_nlmsg_flags_route, + decode_nlmsg_flags_sock_diag, decode_nlmsg_flags_xfrm): New functions. + (nlmsg_flags_decoder_t): New typedef. + (nlmsg_flags): New array. + (decode_nlmsg_flags): Use it. + +2017-10-14 JingPiao Chen <chenjingpiao@gmail.com> + + Workaround historic linux/netfilter/xt_osf.h deficiencies. + When using linux kernel headers without commit v4.5-rc1~128^2~115^2~22 + ("netfilter: fix include files for compilation"), both <linux/ip.h> + and <linux/tcp.h> have to be included before <linux/netfilter/xt_osf.h>. + + * configure.ac (AC_CHECK_HEADERS): Include <linux/ip.h> + and <linux/tcp.h> when checking for linux/netfilter/xt_osf.h header. + * tests/nfnetlink_osf.c: Include <linux/ip.h> and <linux/tcp.h> + before <linux/netfilter/xt_osf.h>. + +2017-09-24 JingPiao Chen <chenjingpiao@gmail.com> + + tests: check decoding of NFNL_SUBSYS_NFT_COMPAT netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add + linux/netfilter/nf_tables_compat.h. + * tests/nfnetlink_nft_compat.c: New file. + * tests/gen_tests.in (nfnetlink_nft_compat): New entry. + * tests/pure_executables.list: Add nfnetlink_nft_compat. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_NFTABLES netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add linux/netfilter/nf_tables.h. + * tests/nfnetlink_nftables.c: New file. + * tests/gen_tests.in (nfnetlink_nftables): New entry. + * tests/pure_executables.list: Add nfnetlink_nftables. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_CTHELPER netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add + linux/netfilter/nfnetlink_cthelper.h. + * tests/nfnetlink_cthelper.c: New file. + * tests/gen_tests.in (nfnetlink_cthelper): New entry. + * tests/pure_executables.list: Add nfnetlink_cthelper. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_CTNETLINK_TIMEOUT netlink message types + * configure.ac (AC_CHECK_HEADERS): Add + linux/netfilter/nfnetlink_cttimeout.h. + * tests/nfnetlink_cttimeout.c: New file. + * tests/gen_tests.in (nfnetlink_cttimeout): New entry. + * tests/pure_executables.list: Add nfnetlink_cttimeout. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_ACCT netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add + linux/netfilter/nfnetlink_acct.h. + * tests/nfnetlink_acct.c: New file. + * tests/gen_tests.in (nfnetlink_acct): New entry. + * tests/pure_executables.list: Add nfnetlink_acct. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_IPSET netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add linux/netfilter/ipset/ip_set.h. + * tests/nfnetlink_ipset.c: New file. + * tests/gen_tests.in (nfnetlink_ipset): New entry. + * tests/pure_executables.list: Add nfnetlink_ipset. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_OSF netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add linux/netfilter/xt_osf.h. + * tests/nfnetlink_osf.c: New file. + * tests/gen_tests.in (nfnetlink_osf): New entry. + * tests/pure_executables.list: Add nfnetlink_osf. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_ULOG netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add + linux/netfilter/nfnetlink_log.h. + * tests/nfnetlink_ulog.c: New file. + * tests/gen_tests.in (nfnetlink_ulog): New entry. + * tests/pure_executables.list: Add nfnetlink_ulog. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_QUEUE netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add + linux/netfilter/nfnetlink_queue.h. + * tests/nfnetlink_queue.c: New file. + * tests/gen_tests.in (nfnetlink_queue): New entry. + * tests/pure_executables.list: Add nfnetlink_queue. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_CTNETLINK_EXP netlink message types + * tests/nfnetlink_ctnetlink_exp.c: New file. + * tests/gen_tests.in (nfnetlink_ctnetlink_exp): New entry. + * tests/pure_executables.list: Add nfnetlink_ctnetlink_exp. + * tests/.gitignore: Likewise. + + tests: check decoding of NFNL_SUBSYS_CTNETLINK netlink message types. + * configure.ac (AC_CHECK_HEADERS): Add + linux/netfilter/nfnetlink_conntrack.h. + * tests/nfnetlink_ctnetlink.c: New file. + * tests/gen_tests.in (nfnetlink_ctnetlink): New entry. + * tests/pure_executables.list: Add nfnetlink_ctnetlink. + * tests/.gitignore: Likewise. + + netlink: decode NETLINK_NETFILTER netlink message types. + * netlink.c: Include "xlat/nf_acct_msg_types.h", + "xlat/nf_cthelper_msg_types.h", "xlat/nf_ctnetlink_exp_msg_types.h", + "xlat/nf_ctnetlink_msg_types.h", "xlat/nf_cttimeout_msg_types.h", + "xlat/nf_ipset_msg_types.h", "xlat/nf_nft_compat_msg_types.h", + "xlat/nf_nftables_msg_types.h", "xlat/nf_osf_msg_types.h", + "xlat/nf_queue_msg_types.h", and "xlat/nf_ulog_msg_types.h". + (nf_nlmsg_types): New array. + (decode_nlmsg_type_netfilter): Use it. + * NEWS: Mention this. + * xlat/nf_acct_msg_types.in: New file. + * xlat/nf_cthelper_msg_types.in: Likewise. + * xlat/nf_ctnetlink_exp_msg_types.in: Likewise. + * xlat/nf_ctnetlink_msg_types.in: Likewise. + * xlat/nf_cttimeout_msg_types.in: Likewise. + * xlat/nf_ipset_msg_types.in: Likewise. + * xlat/nf_nft_compat_msg_types.in: Likewise. + * xlat/nf_nftables_msg_types.in: Likewise. + * xlat/nf_osf_msg_types.in: Likewise. + * xlat/nf_queue_msg_types.in: Likewise. + * xlat/nf_ulog_msg_types.in: Likewise. + * tests/netlink_netfilter.c (test_nlmsg_type): Update expected output. + +2017-09-20 Dmitry V. Levin <ldv@altlinux.org> + + ppc64: fix sigreturn parser for ppc personality. + * linux/powerpc/arch_sigreturn.c (arch_sigreturn) [POWERPC64]: Rewrite. + + ppc64: truncate syscall args for 32-bit personality tracees. + * linux/powerpc/get_syscall_args.c (get_syscall_args): Clear upper + 32 bits of syscall args for 32-bit personality tracees. + * NEWS: Mention this fix. + + ppc64: fix PRI__64 macro definition when compiled with -m32. + * kernel_types.h [SIZEOF_LONG != 4]: Check for __powerpc64__ instead + of POWERPC to handle -m32 case properly. + +2017-09-19 Dmitry V. Levin <ldv@altlinux.org> + + loop: decode LOOP_SET_BLOCK_SIZE. + * loop.c (loop_ioctl) <LOOP_SET_BLOCK_SIZE>: Handle LOOP_SET_BLOCK_SIZE. + * tests/ioctl_loop.c (main): Check it. + + Update ioctl entries from linux v4.14-rc1. + * linux/32/ioctls_inc_align16.h: Update from linux v4.14-rc1 + using ioctls_gen.sh. + * linux/32/ioctls_inc_align32.h: Likewise. + * linux/32/ioctls_inc_align64.h: Likewise. + * linux/64/ioctls_inc.h: Likewise. + * linux/x32/ioctls_inc0.h: Likewise. + * xlat/loop_cmds.in: Add LOOP_SET_BLOCK_SIZE introduced + by kernel commit v4.13-rc7-176-g89e4fde. + * NEWS: Mention this. + * tests/ioctl_loop.c (main): Update. + +2017-09-19 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> + + maint: generate ioctl entries without target architecture code execution + ioctls_sym.sh used to generate and invoke target architecture + executables that limited its applicability. + After this change, the generated code is just compiled to the target + architecture object files and all required information is obtained + from the dwarf sections. + This approach allows to generate ioctl entries for any target + architecture supported by compiler. + + * maint/ioctls_sym.awk: New file. + * maint/ioctls_sym.sh (LC_ALL): Define to C and export. + (uname_m): Make configurable. + (CFLAGS): Add -gdwarf-2. + (LDFLAGS): Remove. + Do not use print_ioctlent.c. + Change asm-generic/ioctl.h and asm/ioctl.h hook. + Dump and process dwarf sections of generated object files. + * maint/print_ioctlent.c: Remove. + +2017-09-18 Dmitry V. Levin <ldv@altlinux.org> + + Remove KVM_S390_* ioctls from non-s390 architectures. + * maint/ioctls_sym.sh <linux/kvm.h> (s390_list): New variable. + Use it to exclude KVM_S390_* ioctls on non-s390 architectures. + * linux/arm/ioctls_arch0.h: Regenerate. + * linux/i386/ioctls_arch0.h: Likewise. + * linux/powerpc/ioctls_arch0.h: Likewise. + * linux/s390/ioctls_arch0.h: Likewise. + * linux/x86_64/ioctls_arch0.h: Likewise. + +2017-09-17 Dmitry V. Levin <ldv@altlinux.org> + + Remove some of arch-specific KVM ioctls from non-matching architectures. + * maint/ioctls_sym.sh (arm_list, ppc_list, x86_list): Use bracket + expressions to generalize arch-specific regular expressions. + * linux/arm/ioctls_arch0.h: Regenerate. + * linux/i386/ioctls_arch0.h: Likewise. + * linux/powerpc/ioctls_arch0.h: Likewise. + * linux/s390/ioctls_arch0.h: Likewise. + * linux/x86_64/ioctls_arch0.h: Likewise. + +2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com> + + dm: add support for DM_DEV_ARM_POLL. + Added in Linux commit v4.13-rc1~137^2~14. + + * dm.c [!DM_LIST_VERSIONS] (DM_LIST_VERSIONS): Add leading zero. + [!DM_TARGET_MSG] (DM_TARGET_MSG): Likewise. + [!DM_DEV_SET_GEOMETRY_CMD] (DM_DEV_SET_GEOMETRY_CMD): Likewise. + [!DM_DEV_ARM_POLL] (DM_DEV_ARM_POLL): New macro. + (dm_ioctl_has_params, dm_ioctl): Handle DM_DEV_ARM_POLL. + * tests/ioctl_dm.c [!DM_DEV_ARM_POLL] (DM_DEV_ARM_POLL): New macro. + (main) <dummy_check_cmds>: Add DM_DEV_ARM_POLL. + +2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com> + + kcmp: add KCMP_EPOLL_TFD support. + * configure.ac (AC_CHECK_TYPES): Add check for struct kcmp_epoll_slot. + * kcmp.c (SYS_FUNC(kcmp)) <case KCMP_EPOLL_TFD>: Implement idx1/idx2 + argument parsing. + * tests/kcmp.c: Update test. + * xlat/kcmp_types.in (KCMP_EPOLL_TFD): New entry. + +2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com> + + tests: add kcmp-y test. + It is not very useful as of now, but it will allow tracking changes + in fd output once they are implemented. + + * tests/gen_tests.in (kcmp-y): New test. + * tests/kcmp-y.c: New file, wrapper for kcmp.c + * tests/kcmp.c: Add opening of some files for which info may be printed + in the future. + * tests/pure_executables.list: Add kcmp-y. + * tests/.gitignore: Likewise. + +2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com> + + kcmp: output fds using a separate function. + This is a preparation for the future introduction of cross-NS PID + derivation, which would enable us to print fd information for fds + related to all processes, not just traced ones. + + Note the change in output type for idx1/idx2 in KCMP_FILE command from + unsigned to int, it follows printfd output format. + + * kcmp.c (printpidfd): New function. + (PRINT_FIELD_PIDFD): New macro. + (SYS_FUNC(kcmp)) <case KCMP_FILE>: Use printpidfd for printing + idx1/idx2, as they are fds, after all. + +2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com> + + tests/kcmp: add more checks. + Let's check all kcmp commands that they indeed do not print idx1/idx2. + Also, check that upper bits of pid arguments are ignored. + + * tests/gen_tests.in (kcmp): Decrease -a argument's value from 27 to 22. + * tests/kcmp.c: Add checks for upper bits of pid1/pid2 and for all + kcmp types not tested before. + +2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com> + + tests/kcmp: use <linux/kcmp.h> if it is available. + I see it as a good idea to stick to system headers whenever possible + in order to also check for possible discrepancies between strace's + internal definitions and definitions present in the system headers. + + * configure.ac (AC_CHECK_HEADERS): Add linux/kcmp.h. + * tests/kcmp.h [HAVE_LINUX_KCMP_H]: Include <linux/kcmp.h>, + do not define KCMP_FILE and KCMP_SYSVSEM. + +2017-09-17 JingPiao Chen <chenjingpiao@gmail.com> + + tests: check decoding of MDBA_ROUTER_PORT netlink attribute. + * tests/nlattr_mdba_router_port.c: New file. + * tests/gen_tests.in (nlattr_mdba_router_port): New entry. + * tests/pure_executables.list: Add nlattr_mdba_router_port. + * tests/.gitignore: Likewise. + + tests: check decoding of MDBA_MDB_ENTRY_INFO netlink attributes. + * tests/nlattr_mdba_mdb_entry.c: New file. + * tests/gen_tests.in (nlattr_mdba_mdb_entry): New entry. + * tests/pure_executables.list: Add nlattr_mdba_mdb_entry. + * tests/.gitignore: Likewise. + +2017-09-17 JingPiao Chen <chenjingpiao@gmail.com> + + tests: extend TEST_NESTED_NLATTR_OBJECT macro. + Extend TEST_NESTED_NLATTR_OBJECT macro for multi-nested netlink + attributes, such as + + [MDBA_MDB] = { + [MDBA_MDB_ENTRY] = { + [MDBA_MDB_ENTRY_INFO] { + struct br_mdb_entry + [MDBA_MDB_EATTR attributes] + } + } + } + + * tests/test_nlattr.h (TEST_NESTED_NLATTR_OBJECT_EX_, + TEST_NESTED_NLATTR_OBJECT_EX): New macros. + (TEST_NESTED_NLATTR_OBJECT): Use TEST_NESTED_NLATTR_OBJECT_EX_. + +2017-09-17 JingPiao Chen <chenjingpiao@gmail.com> + + rtnl_mdb: decode br_port_msg netlink attributes. + * configure.ac (AC_CHECK_TYPES): Check for struct br_mdb_entry + in <linux/if_bridge.h>. + (AC_CHECK_MEMBERS): Check for flags and vid fields in struct br_mdb_entry. + * rtnl_mdb.c: Include "xlat/mdb_flags.h", "xlat/mdb_states.h", + "xlat/rtnl_mdba_mdb_attrs.h", "xlat/rtnl_mdba_mdb_eattr_attrs.h", + "xlat/rtnl_mdba_mdb_entry_attrs.h" ,"xlat/rtnl_mdba_router_attrs.h" + and "xlat/rtnl_mdba_router_pattr_attrs.h". + (decode_mdba_mdb_entry_info, decode_mdba_mdb_entry, + decode_mdba_mdb, decode_multicast_router_type, + decode_mdba_router_port, decode_mdba_router): New functions. + (mdba_mdb_eattr_nla_decoders, mdba_mdb_entry_nla_decoders, + mdba_mdb_nla_decoders, mdba_router_pattr_nla_decoders, + mdba_router_nla_decoders, br_port_msg_nla_decoders): New arrays. + (decode_br_port_msg): Use br_port_msg_nla_decoders. + * xlat/mdb_flags.in: New file. + * xlat/mdb_states.in: Likewise. + * xlat/multicast_router_types.in: Likewise. + * xlat/rtnl_mdba_mdb_attrs.in: Likewise. + * xlat/rtnl_mdba_mdb_eattr_attrs.in: Likewise. + * xlat/rtnl_mdba_mdb_entry_attrs.in: Likewise. + * xlat/rtnl_mdba_router_attrs.in: Likewise. + * xlat/rtnl_mdba_router_pattr_attrs.in: Likewise. + +2017-09-17 Dmitry V. Levin <ldv@altlinux.org> + + netlink: implement decoding of INET_DIAG_CLASS_ID attribute. + This is a new netlink attribute introduced by linux kernel commit + v4.14-rc1~130^2~207. + + * linux/inet_diag.h (INET_DIAG_CLASS_ID): New enum. + * netlink_inet_diag.c (inet_diag_msg_nla_decoders): Add + INET_DIAG_CLASS_ID. + * xlat/inet_diag_attrs.in: Add INET_DIAG_CLASS_ID. + * xlat/inet_diag_extended_flags.in: Add 1<<(INET_DIAG_CLASS_ID-1). + * tests/nlattr_inet_diag_msg.c (main): Check INET_DIAG_CLASS_ID + decoding. + +2017-09-17 Dmitry V. Levin <ldv@altlinux.org> + + Update MEMBARRIER_CMD_* constants. + * xlat/membarrier_cmds.in: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED + introduced by kernel commit v4.14-rc1~174^2^2^4. + * NEWS: Mention this. + * tests/membarrier.c (main): Update expected output. + + Update UFFD_FEATURE_* constants. + * xlat/memfd_create_flags.in: Remove UFFD_FEATURE_EVENT_EXIT removed + by kernel commit v4.11-rc2~15^2~18. + Add UFFD_FEATURE_SIGBUS and UFFD_FEATURE_THREAD_ID introduced by kernel + commits v4.14-rc1~126^2~28 and v4.14-rc1~126^2~23, repsectively. + * NEWS: Mention this. + + Update MFD_* constants. + * xlat/memfd_create_flags.in: Add MFD_HUGETLB introduced + by kernel commit v4.14-rc1~126^2~17. + * NEWS: Mention this. + * tests/memfd_create.c (main): Update expected output. + + Update ETH_P_* constants. + * xlat/ethernet_protocols.in: Add ETH_P_ERSPAN, ETH_P_NSH, ETH_P_IFE, + and ETH_P_MAP introduced by kernel commits v4.14-rc1~130^2~164, + v4.14-rc1~130^2~89^2~3, v4.14-rc1~130^2~90^2~2, and + v4.14-rc1~130^2~78^2~2, respectively. + * NEWS: Mention this. + + Update ARPHRD_* constants. + * xlat/arp_hardware_types.in: Add ARPHRD_RAWIP introduced + by kernel commit v4.14-rc1~130^2~78^2~1. + * NEWS: Mention this. + + Update BPF_* constants. + * xlat/bpf_attach_type.in: Add BPF_SK_SKB_STREAM_PARSER + and BPF_SK_SKB_STREAM_VERDICT introduced by kernel commit + v4.14-rc1~130^2~123^2~8. + * xlat/bpf_map_flags.in: Add BPF_F_NO_COMMON_LRU and BPF_F_NUMA_NODE + introduced by kernel commits v4.10-rc1~202^2~271^2~2 + and v4.14-rc1~130^2~196^2~1, respectively. + * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_DEVMAP + and BPF_MAP_TYPE_SOCKMAP introduced by kernel commits + v4.14-rc1~130^2~497^2~4 and v4.14-rc1~130^2~234^2~4, + respectively. + * xlat/bpf_op_jmp.in: Add BPF_JLT, BPF_JLE, BPF_JSLT, and BPF_JSLE + introduced by kernel commit v4.14-rc1~130^2~309^2~8. + * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_SK_SKB introduced + by kernel commit v4.14-rc1~130^2~234^2~6. + * NEWS: Mention this. + + Update SO_* constants. + * xlat/sockoptions.in: Add SO_ZEROCOPY introduced by kernel commit + v4.14-rc1~130^2~376^2~5. + * NEWS: Mention this. + + Update MADV_* constants. + * xlat/madvise_cmds.in: Add MADV_WIPEONFORK and MADV_KEEPONFORK + introduced by kernel commit v4.14-rc1~126^2. + * NEWS: Mention this. + +2017-09-08 Baruch Siach <baruch@tkos.co.il> + + error_prints: fix potential program_invocation_name type conflict. + uClibc-ng declares program_invocation_name as const. + This causes the build failure below: + + error_prints.c:40:14: error: conflicting types for ‘program_invocation_name’ + extern char *program_invocation_name; + ^~~~~~~~~~~~~~~~~~~~~~~ + In file included from error_prints.c:32:0: + .../output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/errno.h:54:20: note: previous declaration of ‘program_invocation_name’ was here + extern const char *program_invocation_name, *program_invocation_short_name; + ^~~~~~~~~~~~~~~~~~~~~~~ + + * error_prints.c (program_invocation_name): Declare only in case + of [!HAVE_PROGRAM_INVOCATION_NAME]. + +2017-09-07 JingPiao Chen <chenjingpiao@gmail.com> + + rtnl_tc_action: decode tcamsg netlink attributes. + * rtnl_tc_action.c (tcamsg_nla_decoders): New array. + (decode_tcamsg): Use it. + + tests: check decoding of TCA_STAB netlink attribute of tcmsg. + * tests/test_nlattr.h (TEST_NESTED_NLATTR_ARRAY): New macro. + * tests/nlattr_tca_stab.c: New file. + * tests/gen_tests.in (nlattr_tca_stab): New entry. + * tests/pure_executables.list: Add nlattr_tca_stab. + * tests/.gitignore: Likewise. + + tests: check decoding of TCA_STATS2 netlink attribute of tcmsg. + * tests/nlattr_tc_stats.c: New file. + * tests/gen_tests.in (nlattr_tc_stats): New entry. + * tests/pure_executables.list: Add nlattr_tc_stats. + * tests/.gitignore: Likewise. + + tests: check decoding of tcmsg netlink attributes. + * tests/nlattr_tcmsg.c: Include <stddef.h> and <linux/pkt_sched.h>. + (main): Check decoding of TCA_STATS and TCA_RATE. + + rtnl_tc: decode tcmsg netlink attributes. + * configure.ac (AC_CHECK_TYPES): Check for gnet_stats_basic, + gnet_stats_queue, gnet_stats_rate_est, + and gnet_stats_rate_est64 structures in <linux/gen_stats.h>. + And check for struct tc_sizespec in <linux/pkt_sched.h>. + * nlattr.h (tc_stats): New prototype. + * rtnl_tc.c: Include <linux/gen_stats.h>, <linux/pkt_sched.h>, + "xlat/rtnl_tca_stab_attrs.h" and "xlat/rtnl_tca_stats_attrs.h". + (decode_tc_stats, decode_tc_estimator, decode_gnet_stats_basic, + decode_gnet_stats_rate_est, decode_gnet_stats_queue, + decode_gnet_stats_rate_est64, decode_nla_tc_stats, + decode_tc_sizespec, print_stab_data, decode_tca_stab_data, + decode_tca_stab): New functions. + (tca_stats_nla_decoders, tca_stab_nla_decoders, + tcmsg_nla_decoders): New arrays. + (decode_tcmsg): Use tcmsg_nla_decoders. + * xlat/rtnl_tca_stab_attrs.in: New file. + * xlat/rtnl_tca_stats_attrs.in: Likewise. + +2017-09-07 Dmitry V. Levin <ldv@altlinux.org> + + Update TCP_* constants. + * xlat/socktcpoptions.in: Add TCP_ULP and TCP_MD5SIG_EXT. + * NEWS: Mention this. + + Update SOL_* constants. + * xlat/socketlayers.in: Add SOL_TLS. + * NEWS: Mention this. + +2017-09-06 Dmitry V. Levin <ldv@altlinux.org> + + Post-release administrivia. + * NEWS: Add a header line for the next release. + * debian/changelog.in: Add a changelog entry for 4.19-1. + * strace.spec.in: Likewise. + 2017-09-05 Dmitry V. Levin <ldv@altlinux.org> Prepare for 4.19 release. diff --git a/Makefile.am b/Makefile.am index 4aa9846c..3ea56a14 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1102,10 +1102,9 @@ $(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \ ( \ cd $(srcdir); \ sed '/^##/,$$d' CREDITS.in; \ - { sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in; \ - git log --pretty=format:'%aN %aE'; \ - } | LC_ALL=C sort -u \ - | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}'; \ + sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in \ + | maint/gen-contributors-list.sh - -e HEAD --initial \ + | sed 's/\t/ /g; s/^/\t/' \ ) > $@-t && mv $@-t $@ export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX diff --git a/Makefile.in b/Makefile.in index 4bf763a7..2f14f434 100644 --- a/Makefile.in +++ b/Makefile.in @@ -844,7 +844,8 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \ xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in \ xlat/loop_crypt_type_options.in xlat/loop_flags_options.in \ xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in \ - xlat/mbindflags.in xlat/mctl_sync.in xlat/membarrier_cmds.in \ + xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in \ + xlat/mdb_states.in xlat/membarrier_cmds.in \ xlat/memfd_create_flags.in xlat/mempolicyflags.in \ xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in \ xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in \ @@ -854,24 +855,31 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \ xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in \ xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in \ xlat/mtd_otp_options.in xlat/mtd_type_options.in \ - xlat/name_to_handle_at_flags.in \ + xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in \ xlat/neighbor_cache_entry_flags.in \ xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in \ - xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in \ - xlat/netlink_flags.in xlat/netlink_get_flags.in \ - xlat/netlink_new_flags.in xlat/netlink_protocols.in \ - xlat/netlink_socket_flags.in xlat/netlink_states.in \ - xlat/netlink_types.in xlat/nl_audit_types.in \ - xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in \ - xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in \ - xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in \ - xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in \ - xlat/notifyflags.in xlat/nt_descriptor_types.in \ - xlat/open_access_modes.in xlat/open_mode_flags.in \ - xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in \ - xlat/packet_diag_show.in xlat/packet_mreq_type.in \ - xlat/perf_attr_size.in xlat/perf_branch_sample_type.in \ - xlat/perf_event_open_flags.in xlat/perf_event_read_format.in \ + xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in \ + xlat/netlink_diag_show.in xlat/netlink_flags.in \ + xlat/netlink_get_flags.in xlat/netlink_new_flags.in \ + xlat/netlink_protocols.in xlat/netlink_socket_flags.in \ + xlat/netlink_states.in xlat/netlink_types.in \ + xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in \ + xlat/nf_ctnetlink_exp_msg_types.in \ + xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in \ + xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in \ + xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in \ + xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in \ + xlat/nl_audit_types.in xlat/nl_crypto_types.in \ + xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in \ + xlat/nl_route_types.in xlat/nl_selinux_types.in \ + xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in \ + xlat/nlmsgerr_attrs.in xlat/notifyflags.in \ + xlat/nt_descriptor_types.in xlat/open_access_modes.in \ + xlat/open_mode_flags.in xlat/packet_diag_attrs.in \ + xlat/packet_diag_info_flags.in xlat/packet_diag_show.in \ + xlat/packet_mreq_type.in xlat/perf_attr_size.in \ + xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in \ + xlat/perf_event_read_format.in \ xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in \ xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in \ xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in \ @@ -894,17 +902,22 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \ xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in \ xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in \ xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in \ - xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in \ - xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in \ - xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in \ - xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in \ - xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in \ - xlat/rwf_flags.in xlat/sa_handler_values.in \ - xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in \ - xlat/scsi_sg_commands.in xlat/secbits.in \ - xlat/seccomp_filter_flags.in xlat/seccomp_mode.in \ - xlat/seccomp_ops.in xlat/seccomp_ret_action.in \ - xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in \ + xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in \ + xlat/rtnl_mdba_mdb_entry_attrs.in \ + xlat/rtnl_mdba_router_attrs.in \ + xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in \ + xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in \ + xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in \ + xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in \ + xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in \ + xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in \ + xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in \ + xlat/sa_handler_values.in xlat/sched_flags.in \ + xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in \ + xlat/secbits.in xlat/seccomp_filter_flags.in \ + xlat/seccomp_mode.in xlat/seccomp_ops.in \ + xlat/seccomp_ret_action.in xlat/semctl_flags.in \ + xlat/semop_flags.in xlat/setns_types.in \ xlat/setsockipoptions.in xlat/setsockipv6options.in \ xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in \ xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in \ @@ -1022,7 +1035,8 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \ xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h \ xlat/loop_crypt_type_options.h xlat/loop_flags_options.h \ xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h \ - xlat/mbindflags.h xlat/mctl_sync.h xlat/membarrier_cmds.h \ + xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h \ + xlat/mdb_states.h xlat/membarrier_cmds.h \ xlat/memfd_create_flags.h xlat/mempolicyflags.h \ xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h \ xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h \ @@ -1032,18 +1046,25 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \ xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h \ xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h \ xlat/mtd_otp_options.h xlat/mtd_type_options.h \ - xlat/name_to_handle_at_flags.h \ + xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h \ xlat/neighbor_cache_entry_flags.h \ xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h \ - xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h \ - xlat/netlink_flags.h xlat/netlink_get_flags.h \ - xlat/netlink_new_flags.h xlat/netlink_protocols.h \ - xlat/netlink_socket_flags.h xlat/netlink_states.h \ - xlat/netlink_types.h xlat/nl_audit_types.h \ - xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h \ - xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h \ - xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h \ - xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h \ + xlat/netlink_delete_flags.h xlat/netlink_diag_attrs.h \ + xlat/netlink_diag_show.h xlat/netlink_flags.h \ + xlat/netlink_get_flags.h xlat/netlink_new_flags.h \ + xlat/netlink_protocols.h xlat/netlink_socket_flags.h \ + xlat/netlink_states.h xlat/netlink_types.h \ + xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h \ + xlat/nf_ctnetlink_exp_msg_types.h \ + xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h \ + xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h \ + xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h \ + xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h \ + xlat/nl_audit_types.h xlat/nl_crypto_types.h \ + xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h \ + xlat/nl_route_types.h xlat/nl_selinux_types.h \ + xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h \ + xlat/nlmsgerr_attrs.h xlat/notifyflags.h \ xlat/nt_descriptor_types.h xlat/open_access_modes.h \ xlat/open_mode_flags.h xlat/packet_diag_attrs.h \ xlat/packet_diag_info_flags.h xlat/packet_diag_show.h \ @@ -1071,14 +1092,18 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \ xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h \ xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h \ xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h \ - xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h \ - xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h \ - xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h \ - xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h \ - xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h \ - xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h \ - xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h \ - xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h \ + xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h \ + xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h \ + xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h \ + xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h \ + xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h \ + xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h \ + xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h \ + xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h \ + xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h \ + xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h \ + xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h \ + xlat/seccomp_filter_flags.h xlat/seccomp_mode.h \ xlat/seccomp_ops.h xlat/seccomp_ret_action.h \ xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h \ xlat/setsockipoptions.h xlat/setsockipv6options.h \ @@ -7066,6 +7091,10 @@ $(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/mdb_flags.h: $(top_srcdir)/xlat/mdb_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/mdb_states.h: $(top_srcdir)/xlat/mdb_states.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/membarrier_cmds.h: $(top_srcdir)/xlat/membarrier_cmds.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/memfd_create_flags.h: $(top_srcdir)/xlat/memfd_create_flags.in $(top_srcdir)/xlat/gen.sh @@ -7110,6 +7139,8 @@ $(top_srcdir)/xlat/mtd_otp_options.h: $(top_srcdir)/xlat/mtd_otp_options.in $(to $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/mtd_type_options.h: $(top_srcdir)/xlat/mtd_type_options.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/multicast_router_types.h: $(top_srcdir)/xlat/multicast_router_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/name_to_handle_at_flags.h: $(top_srcdir)/xlat/name_to_handle_at_flags.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/neighbor_cache_entry_flags.h: $(top_srcdir)/xlat/neighbor_cache_entry_flags.in $(top_srcdir)/xlat/gen.sh @@ -7118,6 +7149,8 @@ $(top_srcdir)/xlat/neighbor_cache_entry_states.h: $(top_srcdir)/xlat/neighbor_ca $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_ack_flags.h: $(top_srcdir)/xlat/netlink_ack_flags.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/netlink_delete_flags.h: $(top_srcdir)/xlat/netlink_delete_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_diag_attrs.h: $(top_srcdir)/xlat/netlink_diag_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_diag_show.h: $(top_srcdir)/xlat/netlink_diag_show.in $(top_srcdir)/xlat/gen.sh @@ -7136,6 +7169,28 @@ $(top_srcdir)/xlat/netlink_states.h: $(top_srcdir)/xlat/netlink_states.in $(top_ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_types.h: $(top_srcdir)/xlat/netlink_types.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_acct_msg_types.h: $(top_srcdir)/xlat/nf_acct_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_cthelper_msg_types.h: $(top_srcdir)/xlat/nf_cthelper_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ctnetlink_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_cttimeout_msg_types.h: $(top_srcdir)/xlat/nf_cttimeout_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ipset_msg_types.h: $(top_srcdir)/xlat/nf_ipset_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_nft_compat_msg_types.h: $(top_srcdir)/xlat/nf_nft_compat_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_nftables_msg_types.h: $(top_srcdir)/xlat/nf_nftables_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_osf_msg_types.h: $(top_srcdir)/xlat/nf_osf_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_queue_msg_types.h: $(top_srcdir)/xlat/nf_queue_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ulog_msg_types.h: $(top_srcdir)/xlat/nf_ulog_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/nl_audit_types.h: $(top_srcdir)/xlat/nl_audit_types.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/nl_crypto_types.h: $(top_srcdir)/xlat/nl_crypto_types.in $(top_srcdir)/xlat/gen.sh @@ -7276,6 +7331,16 @@ $(top_srcdir)/xlat/rtnl_link_attrs.h: $(top_srcdir)/xlat/rtnl_link_attrs.in $(to $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdb_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_router_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_neigh_attrs.h: $(top_srcdir)/xlat/rtnl_neigh_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_neightbl_attrs.h: $(top_srcdir)/xlat/rtnl_neightbl_attrs.in $(top_srcdir)/xlat/gen.sh @@ -7296,6 +7361,10 @@ $(top_srcdir)/xlat/rtnl_tc_action_attrs.h: $(top_srcdir)/xlat/rtnl_tc_action_att $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_tc_attrs.h: $(top_srcdir)/xlat/rtnl_tc_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_tca_stab_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stab_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_tca_stats_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stats_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rwf_flags.h: $(top_srcdir)/xlat/rwf_flags.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/sa_handler_values.h: $(top_srcdir)/xlat/sa_handler_values.in $(top_srcdir)/xlat/gen.sh @@ -7707,10 +7776,9 @@ clean-local: @MAINTAINER_MODE_TRUE@ ( \ @MAINTAINER_MODE_TRUE@ cd $(srcdir); \ @MAINTAINER_MODE_TRUE@ sed '/^##/,$$d' CREDITS.in; \ -@MAINTAINER_MODE_TRUE@ { sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in; \ -@MAINTAINER_MODE_TRUE@ git log --pretty=format:'%aN %aE'; \ -@MAINTAINER_MODE_TRUE@ } | LC_ALL=C sort -u \ -@MAINTAINER_MODE_TRUE@ | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}'; \ +@MAINTAINER_MODE_TRUE@ sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in \ +@MAINTAINER_MODE_TRUE@ | maint/gen-contributors-list.sh - -e HEAD --initial \ +@MAINTAINER_MODE_TRUE@ | sed 's/\t/ /g; s/^/\t/' \ @MAINTAINER_MODE_TRUE@ ) > $@-t && mv $@-t $@ @MAINTAINER_MODE_TRUE@export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX @@ -1,3 +1,19 @@ +Noteworthy changes in release 4.20 (2017-11-13) +=============================================== + +* Improvements + * Implemented decoding of NETLINK_NETFILTER netlink message types and flags. + * Implemented decoding of SECCOMP_GET_ACTION_AVAIL operation of seccomp + syscall. + * Updated lists of ARPHRD_*, BPF_*, ETH_P_*, LOOP_*, MADV_*, + MEMBARRIER_CMD_*, MFD_*, SECCOMP_*, SO_*, SOL_*, TCP_*, and UFFD_FEATURE_* + constants. + * Added decoding of statx syscall on hppa. + * Updated lists of ioctl commands from Linux 4.14. + +* Bug fixes + * Fixed powerpc personality support on powerpc64. + Noteworthy changes in release 4.19 (2017-09-05) =============================================== diff --git a/bpf_seccomp_filter.c b/bpf_seccomp_filter.c index 9852f493..a11b57ea 100644 --- a/bpf_seccomp_filter.c +++ b/bpf_seccomp_filter.c @@ -35,8 +35,8 @@ #ifdef HAVE_LINUX_SECCOMP_H # include <linux/seccomp.h> #endif -#ifndef SECCOMP_RET_ACTION -# define SECCOMP_RET_ACTION 0x7fff0000U +#ifndef SECCOMP_RET_ACTION_FULL +# define SECCOMP_RET_ACTION_FULL 0xffff0000U #endif #include "xlat/seccomp_ret_action.h" @@ -44,7 +44,7 @@ static bool print_seccomp_filter_k(const struct bpf_filter_block *const fp) { if (BPF_CLASS(fp->code) == BPF_RET) { - unsigned int action = SECCOMP_RET_ACTION & fp->k; + unsigned int action = SECCOMP_RET_ACTION_FULL & fp->k; unsigned int data = fp->k & ~action; printxval(seccomp_ret_action, action, "SECCOMP_RET_???"); @@ -1,9 +1,6 @@ /* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ -/* Define for the AArch64 architecture. */ -/* #undef AARCH64 */ - /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ @@ -745,6 +742,9 @@ /* Define to 1 if you have the <linux/ip_vs.h> header file. */ #define HAVE_LINUX_IP_VS_H 1 +/* Define to 1 if you have the <linux/kcmp.h> header file. */ +#define HAVE_LINUX_KCMP_H 1 + /* Define to 1 if you have the <linux/mmtimer.h> header file. */ #define HAVE_LINUX_MMTIMER_H 1 @@ -765,6 +765,10 @@ file. */ #define HAVE_LINUX_NETFILTER_BRIDGE_EBTABLES_H 1 +/* Define to 1 if you have the <linux/netfilter/ipset/ip_set.h> header file. + */ +#define HAVE_LINUX_NETFILTER_IPSET_IP_SET_H 1 + /* Define to 1 if you have the <linux/netfilter_ipv4/ip_tables.h> header file. */ #define HAVE_LINUX_NETFILTER_IPV4_IP_TABLES_H 1 @@ -773,9 +777,43 @@ file. */ #define HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H 1 +/* Define to 1 if you have the <linux/netfilter/nfnetlink_acct.h> header file. + */ +#define HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H 1 + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_conntrack.h> header + file. */ +#define HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H 1 + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_cthelper.h> header + file. */ +#define HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H 1 + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_cttimeout.h> header + file. */ +#define HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H 1 + /* Define to 1 if you have the <linux/netfilter/nfnetlink.h> header file. */ #define HAVE_LINUX_NETFILTER_NFNETLINK_H 1 +/* Define to 1 if you have the <linux/netfilter/nfnetlink_log.h> header file. + */ +#define HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H 1 + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_queue.h> header + file. */ +#define HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H 1 + +/* Define to 1 if you have the <linux/netfilter/nf_tables_compat.h> header + file. */ +#define HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H 1 + +/* Define to 1 if you have the <linux/netfilter/nf_tables.h> header file. */ +#define HAVE_LINUX_NETFILTER_NF_TABLES_H 1 + +/* Define to 1 if you have the <linux/netfilter/xt_osf.h> header file. */ +#define HAVE_LINUX_NETFILTER_XT_OSF_H 1 + /* Define to 1 if you have the <linux/nsfs.h> header file. */ #define HAVE_LINUX_NSFS_H 1 @@ -922,6 +960,15 @@ /* Define to 1 if the system has the type `struct blk_user_trace_setup'. */ #define HAVE_STRUCT_BLK_USER_TRACE_SETUP 1 +/* Define to 1 if the system has the type `struct br_mdb_entry'. */ +#define HAVE_STRUCT_BR_MDB_ENTRY 1 + +/* Define to 1 if `flags' is a member of `struct br_mdb_entry'. */ +#define HAVE_STRUCT_BR_MDB_ENTRY_FLAGS 1 + +/* Define to 1 if `vid' is a member of `struct br_mdb_entry'. */ +#define HAVE_STRUCT_BR_MDB_ENTRY_VID 1 + /* Define to 1 if the system has the type `struct br_port_msg'. */ #define HAVE_STRUCT_BR_PORT_MSG 1 @@ -968,6 +1015,18 @@ /* Define to 1 if the system has the type `struct flock64'. */ #define HAVE_STRUCT_FLOCK64 1 +/* Define to 1 if the system has the type `struct gnet_stats_basic'. */ +#define HAVE_STRUCT_GNET_STATS_BASIC 1 + +/* Define to 1 if the system has the type `struct gnet_stats_queue'. */ +#define HAVE_STRUCT_GNET_STATS_QUEUE 1 + +/* Define to 1 if the system has the type `struct gnet_stats_rate_est'. */ +#define HAVE_STRUCT_GNET_STATS_RATE_EST 1 + +/* Define to 1 if the system has the type `struct gnet_stats_rate_est64'. */ +#define HAVE_STRUCT_GNET_STATS_RATE_EST64 1 + /* Define to 1 if the system has the type `struct ia64_fpreg'. */ /* #undef HAVE_STRUCT_IA64_FPREG */ @@ -983,6 +1042,9 @@ /* Define to 1 if `resolution' is a member of `struct input_absinfo'. */ #define HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION 1 +/* Define to 1 if the system has the type `struct kcmp_epoll_slot'. */ +/* #undef HAVE_STRUCT_KCMP_EPOLL_SLOT */ + /* Define to 1 if the system has the type `struct keyctl_kdf_params'. */ #define HAVE_STRUCT_KEYCTL_KDF_PARAMS 1 @@ -1134,6 +1196,9 @@ /* Define to 1 if `st_mtime_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1 +/* Define to 1 if the system has the type `struct tc_sizespec'. */ +#define HAVE_STRUCT_TC_SIZESPEC 1 + /* Define to 1 if `tai' is a member of `struct timex'. */ #define HAVE_STRUCT_TIMEX_TAI 1 @@ -1254,6 +1319,12 @@ /* Define for _ABIO32. */ /* #undef LINUX_MIPSO32 */ +/* The size of `kernel_long_t', as computed by sizeof. */ +/* #undef M32_SIZEOF_KERNEL_LONG_T */ + +/* The size of `long', as computed by sizeof. */ +/* #undef M32_SIZEOF_LONG */ + /* Define for the m68k architecture. */ /* #undef M68K */ @@ -1269,6 +1340,12 @@ /* Define for the MIPS architecture. */ /* #undef MIPS */ +/* The size of `kernel_long_t', as computed by sizeof. */ +/* #undef MX32_SIZEOF_KERNEL_LONG_T */ + +/* The size of `long', as computed by sizeof. */ +/* #undef MX32_SIZEOF_LONG */ + /* Define for the Nios-II architecture. */ /* #undef NIOS2 */ @@ -1285,7 +1362,7 @@ #define PACKAGE_NAME "strace" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "strace 4.19" +#define PACKAGE_STRING "strace 4.20" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "strace" @@ -1294,7 +1371,7 @@ #define PACKAGE_URL "https://strace.io" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.19" +#define PACKAGE_VERSION "4.20" /* Define for the PowerPC architecture. */ /* #undef POWERPC */ @@ -1366,7 +1443,7 @@ /* Version number of package */ -#define VERSION "4.19" +#define VERSION "4.20" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ diff --git a/config.h.in b/config.h.in index c0185a20..77a73357 100644 --- a/config.h.in +++ b/config.h.in @@ -744,6 +744,9 @@ /* Define to 1 if you have the <linux/ip_vs.h> header file. */ #undef HAVE_LINUX_IP_VS_H +/* Define to 1 if you have the <linux/kcmp.h> header file. */ +#undef HAVE_LINUX_KCMP_H + /* Define to 1 if you have the <linux/mmtimer.h> header file. */ #undef HAVE_LINUX_MMTIMER_H @@ -764,6 +767,10 @@ file. */ #undef HAVE_LINUX_NETFILTER_BRIDGE_EBTABLES_H +/* Define to 1 if you have the <linux/netfilter/ipset/ip_set.h> header file. + */ +#undef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H + /* Define to 1 if you have the <linux/netfilter_ipv4/ip_tables.h> header file. */ #undef HAVE_LINUX_NETFILTER_IPV4_IP_TABLES_H @@ -772,9 +779,43 @@ file. */ #undef HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H +/* Define to 1 if you have the <linux/netfilter/nfnetlink_acct.h> header file. + */ +#undef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_conntrack.h> header + file. */ +#undef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_cthelper.h> header + file. */ +#undef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_cttimeout.h> header + file. */ +#undef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H + /* Define to 1 if you have the <linux/netfilter/nfnetlink.h> header file. */ #undef HAVE_LINUX_NETFILTER_NFNETLINK_H +/* Define to 1 if you have the <linux/netfilter/nfnetlink_log.h> header file. + */ +#undef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H + +/* Define to 1 if you have the <linux/netfilter/nfnetlink_queue.h> header + file. */ +#undef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H + +/* Define to 1 if you have the <linux/netfilter/nf_tables_compat.h> header + file. */ +#undef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H + +/* Define to 1 if you have the <linux/netfilter/nf_tables.h> header file. */ +#undef HAVE_LINUX_NETFILTER_NF_TABLES_H + +/* Define to 1 if you have the <linux/netfilter/xt_osf.h> header file. */ +#undef HAVE_LINUX_NETFILTER_XT_OSF_H + /* Define to 1 if you have the <linux/nsfs.h> header file. */ #undef HAVE_LINUX_NSFS_H @@ -921,6 +962,15 @@ /* Define to 1 if the system has the type `struct blk_user_trace_setup'. */ #undef HAVE_STRUCT_BLK_USER_TRACE_SETUP +/* Define to 1 if the system has the type `struct br_mdb_entry'. */ +#undef HAVE_STRUCT_BR_MDB_ENTRY + +/* Define to 1 if `flags' is a member of `struct br_mdb_entry'. */ +#undef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + +/* Define to 1 if `vid' is a member of `struct br_mdb_entry'. */ +#undef HAVE_STRUCT_BR_MDB_ENTRY_VID + /* Define to 1 if the system has the type `struct br_port_msg'. */ #undef HAVE_STRUCT_BR_PORT_MSG @@ -967,6 +1017,18 @@ /* Define to 1 if the system has the type `struct flock64'. */ #undef HAVE_STRUCT_FLOCK64 +/* Define to 1 if the system has the type `struct gnet_stats_basic'. */ +#undef HAVE_STRUCT_GNET_STATS_BASIC + +/* Define to 1 if the system has the type `struct gnet_stats_queue'. */ +#undef HAVE_STRUCT_GNET_STATS_QUEUE + +/* Define to 1 if the system has the type `struct gnet_stats_rate_est'. */ +#undef HAVE_STRUCT_GNET_STATS_RATE_EST + +/* Define to 1 if the system has the type `struct gnet_stats_rate_est64'. */ +#undef HAVE_STRUCT_GNET_STATS_RATE_EST64 + /* Define to 1 if the system has the type `struct ia64_fpreg'. */ #undef HAVE_STRUCT_IA64_FPREG @@ -982,6 +1044,9 @@ /* Define to 1 if `resolution' is a member of `struct input_absinfo'. */ #undef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION +/* Define to 1 if the system has the type `struct kcmp_epoll_slot'. */ +#undef HAVE_STRUCT_KCMP_EPOLL_SLOT + /* Define to 1 if the system has the type `struct keyctl_kdf_params'. */ #undef HAVE_STRUCT_KEYCTL_KDF_PARAMS @@ -1133,6 +1198,9 @@ /* Define to 1 if `st_mtime_nsec' is a member of `struct stat'. */ #undef HAVE_STRUCT_STAT_ST_MTIME_NSEC +/* Define to 1 if the system has the type `struct tc_sizespec'. */ +#undef HAVE_STRUCT_TC_SIZESPEC + /* Define to 1 if `tai' is a member of `struct timex'. */ #undef HAVE_STRUCT_TIMEX_TAI @@ -1253,6 +1321,12 @@ /* Define for _ABIO32. */ #undef LINUX_MIPSO32 +/* The size of `kernel_long_t', as computed by sizeof. */ +#undef M32_SIZEOF_KERNEL_LONG_T + +/* The size of `long', as computed by sizeof. */ +#undef M32_SIZEOF_LONG + /* Define for the m68k architecture. */ #undef M68K @@ -1268,6 +1342,12 @@ /* Define for the MIPS architecture. */ #undef MIPS +/* The size of `kernel_long_t', as computed by sizeof. */ +#undef MX32_SIZEOF_KERNEL_LONG_T + +/* The size of `long', as computed by sizeof. */ +#undef MX32_SIZEOF_LONG + /* Define for the Nios-II architecture. */ #undef NIOS2 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for strace 4.19. +# Generated by GNU Autoconf 2.69 for strace 4.20. # # Report bugs to <strace-devel@lists.sourceforge.net>. # @@ -582,8 +582,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='strace' PACKAGE_TARNAME='strace' -PACKAGE_VERSION='4.19' -PACKAGE_STRING='strace 4.19' +PACKAGE_VERSION='4.20' +PACKAGE_STRING='strace 4.20' PACKAGE_BUGREPORT='strace-devel@lists.sourceforge.net' PACKAGE_URL='https://strace.io' @@ -1348,7 +1348,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures strace 4.19 to adapt to many kinds of systems. +\`configure' configures strace 4.20 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1418,7 +1418,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of strace 4.19:";; + short | recursive ) echo "Configuration of strace 4.20:";; esac cat <<\_ACEOF @@ -1530,7 +1530,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -strace configure 4.19 +strace configure 4.20 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2270,7 +2270,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by strace $as_me 4.19, which was +It was created by strace $as_me 4.20, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3141,7 +3141,7 @@ fi # Define the identity of the package. PACKAGE='strace' - VERSION='4.19' + VERSION='4.20' cat >>confdefs.h <<_ACEOF @@ -9446,6 +9446,18 @@ _ACEOF fi +ac_fn_c_check_type "$LINENO" "struct kcmp_epoll_slot" "ac_cv_type_struct_kcmp_epoll_slot" "#include <linux/kcmp.h> +" +if test "x$ac_cv_type_struct_kcmp_epoll_slot" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_KCMP_EPOLL_SLOT 1 +_ACEOF + + +fi + + ac_fn_c_check_type "$LINENO" "struct keyctl_kdf_params" "ac_cv_type_struct_keyctl_kdf_params" "#include <linux/keyctl.h> " if test "x$ac_cv_type_struct_keyctl_kdf_params" = xyes; then : @@ -9726,7 +9738,7 @@ _ACEOF fi -for ac_header in asm/cachectl.h asm/sysmips.h bluetooth/bluetooth.h elf.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/nfnetlink.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/reg.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h +for ac_header in asm/cachectl.h asm/sysmips.h bluetooth/bluetooth.h elf.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/ipset/ip_set.h linux/netfilter/nf_tables.h linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h linux/netfilter/nfnetlink_acct.h linux/netfilter/nfnetlink_conntrack.h linux/netfilter/nfnetlink_cthelper.h linux/netfilter/nfnetlink_cttimeout.h linux/netfilter/nfnetlink_log.h linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/reg.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -9783,6 +9795,21 @@ fi done +for ac_header in linux/netfilter/xt_osf.h +do : + ac_fn_c_check_header_compile "$LINENO" "linux/netfilter/xt_osf.h" "ac_cv_header_linux_netfilter_xt_osf_h" "#include <linux/ip.h> +#include <linux/tcp.h> +" +if test "x$ac_cv_header_linux_netfilter_xt_osf_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_NETFILTER_XT_OSF_H 1 +_ACEOF + +fi + +done + + for ac_header in linux/netfilter_arp/arp_tables.h linux/netfilter_bridge/ebtables.h linux/netfilter_ipv4/ip_tables.h linux/netfilter_ipv6/ip6_tables.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -10048,6 +10075,16 @@ fi done +ac_fn_c_check_type "$LINENO" "struct br_mdb_entry" "ac_cv_type_struct_br_mdb_entry" "#include <linux/if_bridge.h> +" +if test "x$ac_cv_type_struct_br_mdb_entry" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_BR_MDB_ENTRY 1 +_ACEOF + + +fi ac_fn_c_check_type "$LINENO" "struct br_port_msg" "ac_cv_type_struct_br_port_msg" "#include <linux/if_bridge.h> " if test "x$ac_cv_type_struct_br_port_msg" = xyes; then : @@ -10059,6 +10096,28 @@ _ACEOF fi +ac_fn_c_check_member "$LINENO" "struct br_mdb_entry" "flags" "ac_cv_member_struct_br_mdb_entry_flags" "#include <linux/if_bridge.h> +" +if test "x$ac_cv_member_struct_br_mdb_entry_flags" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_BR_MDB_ENTRY_FLAGS 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct br_mdb_entry" "vid" "ac_cv_member_struct_br_mdb_entry_vid" "#include <linux/if_bridge.h> +" +if test "x$ac_cv_member_struct_br_mdb_entry_vid" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_BR_MDB_ENTRY_VID 1 +_ACEOF + + +fi + + ac_fn_c_check_type "$LINENO" "struct dcbmsg" "ac_cv_type_struct_dcbmsg" "#include <linux/dcbnl.h> " if test "x$ac_cv_type_struct_dcbmsg" = xyes; then : @@ -10201,6 +10260,60 @@ _ACEOF fi +ac_fn_c_check_type "$LINENO" "struct gnet_stats_basic" "ac_cv_type_struct_gnet_stats_basic" "#include <linux/gen_stats.h> +" +if test "x$ac_cv_type_struct_gnet_stats_basic" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_GNET_STATS_BASIC 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct gnet_stats_queue" "ac_cv_type_struct_gnet_stats_queue" "#include <linux/gen_stats.h> +" +if test "x$ac_cv_type_struct_gnet_stats_queue" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_GNET_STATS_QUEUE 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct gnet_stats_rate_est" "ac_cv_type_struct_gnet_stats_rate_est" "#include <linux/gen_stats.h> +" +if test "x$ac_cv_type_struct_gnet_stats_rate_est" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_GNET_STATS_RATE_EST 1 +_ACEOF + + +fi +ac_fn_c_check_type "$LINENO" "struct gnet_stats_rate_est64" "ac_cv_type_struct_gnet_stats_rate_est64" "#include <linux/gen_stats.h> +" +if test "x$ac_cv_type_struct_gnet_stats_rate_est64" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_GNET_STATS_RATE_EST64 1 +_ACEOF + + +fi + + +ac_fn_c_check_type "$LINENO" "struct tc_sizespec" "ac_cv_type_struct_tc_sizespec" "#include <linux/pkt_sched.h> +" +if test "x$ac_cv_type_struct_tc_sizespec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TC_SIZESPEC 1 +_ACEOF + + +fi + + ac_fn_c_check_type "$LINENO" "struct fib_rule_uid_range" "ac_cv_type_struct_fib_rule_uid_range" "#include <linux/fib_rules.h> " if test "x$ac_cv_type_struct_fib_rule_uid_range" = xyes; then : @@ -13214,6 +13327,153 @@ fi + + if test $st_cv_m32_runtime = yes; then + + + + + + + +if test -n "${ac_cv_sizeof_long+set}"; then : + saved_ac_cv_sizeof_long="${ac_cv_sizeof_long}"; unset ac_cv_sizeof_long +fi +if test -n "${ac_cv_m32_sizeof_long+set}"; then : + ac_cv_sizeof_long="${ac_cv_m32_sizeof_long}" +fi + + + + + + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if ${ac_cv_sizeof_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define M32_SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + + + + + + + +if test -n "${ac_cv_sizeof_long+set}"; then : + ac_cv_m32_sizeof_long="${ac_cv_sizeof_long}" +fi +if test -n "${saved_ac_cv_sizeof_long+set}"; then : + ac_cv_sizeof_long="${saved_ac_cv_sizeof_long}"; unset saved_ac_cv_sizeof_long +fi + + + + + + + + + + + + + + + +if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then : + saved_ac_cv_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}"; unset ac_cv_sizeof_kernel_long_t +fi +if test -n "${ac_cv_m32_sizeof_kernel_long_t+set}"; then : + ac_cv_sizeof_kernel_long_t="${ac_cv_m32_sizeof_kernel_long_t}" +fi + + + + + + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of kernel_long_t" >&5 +$as_echo_n "checking size of kernel_long_t... " >&6; } +if ${ac_cv_sizeof_kernel_long_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (kernel_long_t))" "ac_cv_sizeof_kernel_long_t" "#include \"$srcdir/kernel_types.h\" +"; then : + +else + if test "$ac_cv_type_kernel_long_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (kernel_long_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_kernel_long_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_kernel_long_t" >&5 +$as_echo "$ac_cv_sizeof_kernel_long_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define M32_SIZEOF_KERNEL_LONG_T $ac_cv_sizeof_kernel_long_t +_ACEOF + + + + + + + + +if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then : + ac_cv_m32_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}" +fi +if test -n "${saved_ac_cv_sizeof_kernel_long_t+set}"; then : + ac_cv_sizeof_kernel_long_t="${saved_ac_cv_sizeof_kernel_long_t}"; unset saved_ac_cv_sizeof_kernel_long_t +fi + + + + + + + + fi fi fi CFLAGS="$saved_CFLAGS" @@ -13542,6 +13802,153 @@ fi + + if test $st_cv_mx32_runtime = yes; then + + + + + + + +if test -n "${ac_cv_sizeof_long+set}"; then : + saved_ac_cv_sizeof_long="${ac_cv_sizeof_long}"; unset ac_cv_sizeof_long +fi +if test -n "${ac_cv_mx32_sizeof_long+set}"; then : + ac_cv_sizeof_long="${ac_cv_mx32_sizeof_long}" +fi + + + + + + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if ${ac_cv_sizeof_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define MX32_SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + + + + + + + +if test -n "${ac_cv_sizeof_long+set}"; then : + ac_cv_mx32_sizeof_long="${ac_cv_sizeof_long}" +fi +if test -n "${saved_ac_cv_sizeof_long+set}"; then : + ac_cv_sizeof_long="${saved_ac_cv_sizeof_long}"; unset saved_ac_cv_sizeof_long +fi + + + + + + + + + + + + + + + +if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then : + saved_ac_cv_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}"; unset ac_cv_sizeof_kernel_long_t +fi +if test -n "${ac_cv_mx32_sizeof_kernel_long_t+set}"; then : + ac_cv_sizeof_kernel_long_t="${ac_cv_mx32_sizeof_kernel_long_t}" +fi + + + + + + + # The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of kernel_long_t" >&5 +$as_echo_n "checking size of kernel_long_t... " >&6; } +if ${ac_cv_sizeof_kernel_long_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (kernel_long_t))" "ac_cv_sizeof_kernel_long_t" "#include \"$srcdir/kernel_types.h\" +"; then : + +else + if test "$ac_cv_type_kernel_long_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (kernel_long_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_kernel_long_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_kernel_long_t" >&5 +$as_echo "$ac_cv_sizeof_kernel_long_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define MX32_SIZEOF_KERNEL_LONG_T $ac_cv_sizeof_kernel_long_t +_ACEOF + + + + + + + + +if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then : + ac_cv_mx32_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}" +fi +if test -n "${saved_ac_cv_sizeof_kernel_long_t+set}"; then : + ac_cv_sizeof_kernel_long_t="${saved_ac_cv_sizeof_kernel_long_t}"; unset saved_ac_cv_sizeof_kernel_long_t +fi + + + + + + + + fi fi fi CFLAGS="$saved_CFLAGS" @@ -14561,7 +14968,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by strace $as_me 4.19, which was +This file was extended by strace $as_me 4.20, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14628,7 +15035,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -strace config.status 4.19 +strace config.status 4.20 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index d064285f..29285dbf 100644 --- a/configure.ac +++ b/configure.ac @@ -334,6 +334,10 @@ AC_CHECK_TYPES(m4_normalize([ ]),,, [#include <linux/cryptouser.h>]) AC_CHECK_TYPES(m4_normalize([ + struct kcmp_epoll_slot +]),,, [#include <linux/kcmp.h>]) + +AC_CHECK_TYPES(m4_normalize([ struct keyctl_kdf_params ]),,, [#include <linux/keyctl.h>]) @@ -390,10 +394,20 @@ AC_CHECK_HEADERS(m4_normalize([ linux/if_link.h linux/ip_vs.h linux/ipc.h + linux/kcmp.h linux/mmtimer.h linux/msg.h linux/neighbour.h + linux/netfilter/ipset/ip_set.h + linux/netfilter/nf_tables.h + linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h + linux/netfilter/nfnetlink_acct.h + linux/netfilter/nfnetlink_conntrack.h + linux/netfilter/nfnetlink_cthelper.h + linux/netfilter/nfnetlink_cttimeout.h + linux/netfilter/nfnetlink_log.h + linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h @@ -428,6 +442,9 @@ AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>]) AC_CHECK_HEADERS([linux/mqueue.h],,, [#include <linux/types.h>]) +AC_CHECK_HEADERS([linux/netfilter/xt_osf.h],,, [#include <linux/ip.h> +#include <linux/tcp.h>]) + AC_CHECK_HEADERS(m4_normalize([ linux/netfilter_arp/arp_tables.h linux/netfilter_bridge/ebtables.h @@ -448,7 +465,15 @@ AC_CHECK_HEADERS([linux/bpf.h], [ st_CHECK_UNION_BPF_ATTR([prog_flags]) ]) -AC_CHECK_TYPES([struct br_port_msg],,, [#include <linux/if_bridge.h>]) +AC_CHECK_TYPES(m4_normalize([ + struct br_mdb_entry, + struct br_port_msg +]),,, [#include <linux/if_bridge.h>]) +AC_CHECK_MEMBERS(m4_normalize([ + struct br_mdb_entry.flags, + struct br_mdb_entry.vid +]),,, [#include <linux/if_bridge.h>]) + AC_CHECK_TYPES([struct dcbmsg],,, [#include <linux/dcbnl.h>]) AC_CHECK_TYPES([struct ifaddrlblmsg],,, [#include <linux/if_addrlabel.h>]) AC_CHECK_TYPES([struct netconfmsg],,, [#include <linux/netconf.h>]) @@ -474,6 +499,15 @@ AC_CHECK_MEMBERS(m4_normalize([ struct rtnl_link_stats64.rx_nohandler ]),,, [#include <linux/if_link.h>]) +AC_CHECK_TYPES(m4_normalize([ + struct gnet_stats_basic, + struct gnet_stats_queue, + struct gnet_stats_rate_est, + struct gnet_stats_rate_est64 +]),,, [#include <linux/gen_stats.h>]) + +AC_CHECK_TYPES([struct tc_sizespec],,, [#include <linux/pkt_sched.h>]) + AC_CHECK_TYPES([struct fib_rule_uid_range],,, [#include <linux/fib_rules.h>]) AC_CHECK_TYPES([struct statfs], [ diff --git a/debian/changelog b/debian/changelog index f7b03e98..25790441 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,14 @@ -strace (4.19-1) experimental; urgency=low +strace (4.20-1) experimental; urgency=low - * strace 4.19 snapshot. + * strace 4.20 snapshot. - -- Strace <strace-devel@lists.sourceforge.net> Tue, 05 Sep 2017 12:15:20 +0000 + -- Strace <strace-devel@lists.sourceforge.net> Mon, 13 Nov 2017 21:49:34 +0000 + +strace (4.19-1) unstable; urgency=medium + + * New upstream version. + + -- Dmitry V. Levin <ldv@altlinux.org> Wed, 05 Sep 2017 12:13:14 +0000 strace (4.18-1) unstable; urgency=medium diff --git a/debian/changelog.in b/debian/changelog.in index a29097a1..16f34d86 100644 --- a/debian/changelog.in +++ b/debian/changelog.in @@ -4,6 +4,12 @@ strace (@PACKAGE_VERSION@-1) experimental; urgency=low -- Strace <@PACKAGE_BUGREPORT@> @DEB_CHANGELOGTIME@ +strace (4.19-1) unstable; urgency=medium + + * New upstream version. + + -- Dmitry V. Levin <ldv@altlinux.org> Wed, 05 Sep 2017 12:13:14 +0000 + strace (4.18-1) unstable; urgency=medium * New upstream version. diff --git a/debian/compat b/debian/compat index 7f8f011e..f599e28b 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -7 +10 diff --git a/debian/control b/debian/control index 2a7963f9..92cdc204 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Maintainer: Steve McIntyre <93sam@debian.org> Section: utils Priority: optional Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc sparc64 x32], debhelper (>= 7.0.0), gawk -Standards-Version: 3.9.6 +Standards-Version: 3.9.8 Homepage: https://strace.io Vcs-Git: https://anonscm.debian.org/git/collab-maint/strace.git Vcs-Browser: https://anonscm.debian.org/git/collab-maint/strace.git diff --git a/debian/rules b/debian/rules index 4b556a73..d03cd5ce 100755 --- a/debian/rules +++ b/debian/rules @@ -76,20 +76,20 @@ binary-arch: build test -f build64-stamp && ( mv build64/strace build64/strace64 ; \ cp strace.1 strace64.1 ) || true - dh_testdir -s - dh_testroot -s - dh_installdirs -s - dh_installdocs -s - dh_installman -s - dh_installexamples -s - dh_installchangelogs -s - dh_install -s - dh_link -s - dh_strip -s - dh_compress -s - dh_fixperms -s - dh_installdeb -s - dh_shlibdeps -s - dh_gencontrol -s - dh_md5sums -s - dh_builddeb -s + dh_testdir -a + dh_testroot -a + dh_installdirs -a + dh_installdocs -a + dh_installman -a + dh_installexamples -a + dh_installchangelogs -a + dh_install -a + dh_link -a + dh_strip -a + dh_compress -a + dh_fixperms -a + dh_installdeb -a + dh_shlibdeps -a + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a @@ -75,15 +75,6 @@ const char *strerror(int); extern char *stpcpy(char *dst, const char *src); #endif -/* macros */ -#ifndef MAX -# define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif -#ifndef MIN -# define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif -#define CLAMP(val, min, max) MIN(MAX(min, val), max) - /* Glibc has an efficient macro for sigemptyset * (it just does one or two assignments of 0 to internal vector of longs). */ @@ -295,6 +286,7 @@ extern const struct xlat resource_flags[]; extern const struct xlat routing_scopes[]; extern const struct xlat routing_table_ids[]; extern const struct xlat routing_types[]; +extern const struct xlat seccomp_ret_action[]; extern const struct xlat setns_types[]; extern const struct xlat sg_io_info[]; extern const struct xlat socketlayers[]; @@ -44,13 +44,16 @@ /* Definitions for command which have been added later */ # ifndef DM_LIST_VERSIONS -# define DM_LIST_VERSIONS _IOWR(DM_IOCTL, 0xd, struct dm_ioctl) +# define DM_LIST_VERSIONS _IOWR(DM_IOCTL, 0x0d, struct dm_ioctl) # endif # ifndef DM_TARGET_MSG -# define DM_TARGET_MSG _IOWR(DM_IOCTL, 0xe, struct dm_ioctl) +# define DM_TARGET_MSG _IOWR(DM_IOCTL, 0x0e, struct dm_ioctl) # endif # ifndef DM_DEV_SET_GEOMETRY -# define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, 0xf, struct dm_ioctl) +# define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, 0x0f, struct dm_ioctl) +# endif +# ifndef DM_DEV_ARM_POLL +# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl) # endif @@ -429,6 +432,7 @@ dm_ioctl_has_params(const unsigned int code) case DM_DEV_SUSPEND: case DM_DEV_STATUS: case DM_TABLE_CLEAR: + case DM_DEV_ARM_POLL: return false; } @@ -576,6 +580,7 @@ dm_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t ar case DM_LIST_VERSIONS: case DM_TARGET_MSG: case DM_DEV_SET_GEOMETRY: + case DM_DEV_ARM_POLL: return dm_known_ioctl(tcp, code, arg); default: return RVAL_DECODED; diff --git a/error_prints.c b/error_prints.c index 8519b924..710e99b0 100644 --- a/error_prints.c +++ b/error_prints.c @@ -37,7 +37,9 @@ #include "error_prints.h" +#ifndef HAVE_PROGRAM_INVOCATION_NAME extern char *program_invocation_name; +#endif static void verror_msg(int err_no, const char *fmt, va_list p) diff --git a/ioctlent0.h b/ioctlent0.h index a3c1a4e2..13c21656 100644 --- a/ioctlent0.h +++ b/ioctlent0.h @@ -324,6 +324,7 @@ { "LOOP_CHANGE_FD", 0x00004c06 }, { "LOOP_SET_CAPACITY", 0x00004c07 }, { "LOOP_SET_DIRECT_IO", 0x00004c08 }, +{ "LOOP_SET_BLOCK_SIZE", 0x00004c09 }, { "LOOP_CTL_ADD", 0x00004c80 }, { "LOOP_CTL_REMOVE", 0x00004c81 }, { "LOOP_CTL_GET_FREE", 0x00004c82 }, @@ -1079,7 +1080,6 @@ { "NCP_IOC_GETDENTRYTTL", 0x40046e0c }, { "SISFB_SET_AUTOMAXIMIZE_OLD", 0x40046efa }, { "UBI_IOCRMVOL", 0x40046f01 }, -{ "DMX_SET_SOURCE", 0x40046f31 }, { "UBI_IOCDET", 0x40046f41 }, { "PPSETMODE", 0x40047080 }, { "PPDATADIR", 0x40047090 }, @@ -1243,6 +1243,7 @@ { "DRM_IOCTL_RADEON_GEM_WAIT_IDLE", 0x40086464 }, { "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", 0x4008646e }, { "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f }, +{ "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", 0x40086478 }, { "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 }, { "FS_IOC_SETFLAGS", 0x40086602 }, { "HPET_IRQFREQ", 0x40086806 }, @@ -1259,7 +1260,6 @@ { "MATROXFB_SET_OUTPUT_MODE", 0x40086efa }, { "AUDIO_SET_MIXER", 0x40086f0e }, { "VIDEO_SET_SPU", 0x40086f32 }, -{ "CA_SET_PID", 0x40086f87 }, { "PHN_SET_REG", 0x40087001 }, { "PHN_SET_REGS", 0x40087003 }, { "PHN_SETREG", 0x40087006 }, @@ -1573,6 +1573,7 @@ { "SNDRV_TIMER_IOCTL_GPARAMS", 0x40485404 }, { "BC_TRANSACTION_SG", 0x40486311 }, { "BC_REPLY_SG", 0x40486312 }, +{ "DRM_IOCTL_I915_PERF_ADD_CONFIG", 0x40486477 }, { "BTRFS_IOC_SEND", 0x40489426 }, { "GSMIOC_SETCONF", 0x404c4701 }, { "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a }, @@ -1923,7 +1924,6 @@ { "MATROXFB_GET_AVAILABLE_OUTPUTS", 0x80086ef9 }, { "MATROXFB_GET_ALL_OUTPUTS", 0x80086efb }, { "AUDIO_GET_PTS", 0x80086f13 }, -{ "DMX_GET_CAPS", 0x80086f30 }, { "VIDEO_GET_PTS", 0x80086f39 }, { "VIDEO_GET_FRAME_COUNT", 0x80086f3a }, { "CA_GET_DESCR_INFO", 0x80086f83 }, @@ -2283,6 +2283,7 @@ { "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 }, { "MBXFB_IOCX_REG", 0xc00cf405 }, { "BLKREPORTZONE", 0xc0101282 }, +{ "RDMA_VERBS_IOCTL", 0xc0101b01 }, { "STP_POLICY_ID_SET", 0xc0102500 }, { "CAPI_GET_VERSION", 0xc0104307 }, { "CAPI_MANUFACTURER_CMD", 0xc0104320 }, @@ -2292,6 +2293,7 @@ { "SNDRV_EMU10K1_IOCTL_TRAM_PEEK", 0xc0104822 }, { "SNDRV_EMUX_IOCTL_LOAD_PATCH", 0xc0104881 }, { "SNDRV_EMUX_IOCTL_MISC_MODE", 0xc0104884 }, +{ "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", 0xc0104b11 }, { "MEMWRITEOOB", 0xc0104d03 }, { "MEMREADOOB", 0xc0104d04 }, { "MEMGETREGIONINFO", 0xc0104d08 }, @@ -2348,6 +2350,7 @@ { "DRM_IOCTL_TEGRA_GET_SYNCPT_BASE", 0xc0106449 }, { "DRM_IOCTL_VC4_GET_TILING", 0xc0106449 }, { "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a }, +{ "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a }, { "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b }, { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d }, { "DRM_IOCTL_R128_INDIRECT", 0xc010644f }, @@ -2370,6 +2373,8 @@ { "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd }, { "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", 0xc01064c1 }, { "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 }, +{ "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 }, +{ "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 }, { "MGSL_IOCWAITGPIO", 0xc0106d12 }, { "NCP_IOC_GETPRIVATEDATA", 0xc0106e0a }, { "DMX_GET_STC", 0xc0106f32 }, @@ -2412,6 +2417,7 @@ { "USBDEVFS_BULK", 0xc0185502 }, { "PACKET_CTRL_CMD", 0xc0185801 }, { "FITRIM", 0xc0185879 }, +{ "BINDER_GET_NODE_DEBUG_INFO", 0xc018620b }, { "DRM_IOCTL_MAP_BUFS", 0xc0186419 }, { "DRM_IOCTL_WAIT_VBLANK", 0xc018643a }, { "DRM_IOCTL_AMDGPU_BO_LIST", 0xc0186443 }, @@ -2503,6 +2509,7 @@ { "DRM_IOCTL_MODE_CREATE_DUMB", 0xc02064b2 }, { "DRM_IOCTL_MODE_GETPLANE", 0xc02064b6 }, { "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", 0xc02064b9 }, +{ "DRM_IOCTL_SYNCOBJ_WAIT", 0xc02064c3 }, { "FS_IOC_FIEMAP", 0xc020660b }, { "GENWQE_PIN_MEM", 0xc020a528 }, { "GENWQE_UNPIN_MEM", 0xc020a529 }, @@ -2516,6 +2523,7 @@ { "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 }, { "FW_CDEV_IOC_GET_INFO", 0xc0282300 }, { "AMDKFD_IOC_GET_CLOCK_COUNTERS", 0xc0284b05 }, +{ "AMDKFD_IOC_GET_TILE_CONFIG", 0xc0284b12 }, { "VIDIOC_G_EDID", 0xc0285628 }, { "VIDIOC_SUBDEV_G_EDID", 0xc0285628 }, { "VIDIOC_SUBDEV_S_EDID", 0xc0285629 }, diff --git a/ioctlent1.h b/ioctlent1.h index 436aa375..f5301b8c 100644 --- a/ioctlent1.h +++ b/ioctlent1.h @@ -324,6 +324,7 @@ { "LOOP_CHANGE_FD", 0x00004c06 }, { "LOOP_SET_CAPACITY", 0x00004c07 }, { "LOOP_SET_DIRECT_IO", 0x00004c08 }, +{ "LOOP_SET_BLOCK_SIZE", 0x00004c09 }, { "LOOP_CTL_ADD", 0x00004c80 }, { "LOOP_CTL_REMOVE", 0x00004c81 }, { "LOOP_CTL_GET_FREE", 0x00004c82 }, @@ -865,7 +866,6 @@ { "KVM_CREATE_VM", 0x0000ae01 }, { "KVM_CHECK_EXTENSION", 0x0000ae03 }, { "KVM_GET_VCPU_MMAP_SIZE", 0x0000ae04 }, -{ "KVM_S390_ENABLE_SIE", 0x0000ae06 }, { "KVM_CREATE_VCPU", 0x0000ae41 }, { "KVM_SET_NR_MMU_PAGES", 0x0000ae44 }, { "KVM_GET_NR_MMU_PAGES", 0x0000ae45 }, @@ -875,7 +875,6 @@ { "KVM_REINJECT_CONTROL", 0x0000ae71 }, { "KVM_SET_BOOT_CPU_ID", 0x0000ae78 }, { "KVM_RUN", 0x0000ae80 }, -{ "KVM_S390_INITIAL_RESET", 0x0000ae97 }, { "KVM_NMI", 0x0000ae9a }, { "KVM_SET_TSC_KHZ", 0x0000aea2 }, { "KVM_GET_TSC_KHZ", 0x0000aea3 }, @@ -1070,7 +1069,6 @@ { "VIDIOC_S_PRIORITY", 0x40045644 }, { "IVTV_IOC_PASSTHROUGH_MODE", 0x400456c1 }, { "VIDIOC_AM437X_CCDC_CFG", 0x400456c1 }, -{ "VPFE_CMD_S_CCDC_RAW_PARAMS", 0x400456c1 }, { "SNDRV_RAWMIDI_IOCTL_DROP", 0x40045730 }, { "SNDRV_RAWMIDI_IOCTL_DRAIN", 0x40045731 }, { "CEC_S_MODE", 0x40046109 }, @@ -1131,7 +1129,6 @@ { "MATROXFB_SET_OUTPUT_MODE", 0x40046efa }, { "SISFB_SET_AUTOMAXIMIZE_OLD", 0x40046efa }, { "UBI_IOCRMVOL", 0x40046f01 }, -{ "DMX_SET_SOURCE", 0x40046f31 }, { "UBI_IOCDET", 0x40046f41 }, { "PHN_SET_REG", 0x40047001 }, { "PHN_SET_REGS", 0x40047003 }, @@ -1216,10 +1213,8 @@ { "BTRFS_IOC_CLONE", 0x40049409 }, { "FICLONE", 0x40049409 }, { "BTRFS_IOC_BALANCE_CTL", 0x40049421 }, -{ "KVM_S390_VCPU_FAULT", 0x4004ae52 }, { "KVM_INTERRUPT", 0x4004ae86 }, { "KVM_SET_SIGNAL_MASK", 0x4004ae8b }, -{ "KVM_S390_STORE_STATUS", 0x4004ae95 }, { "KVM_SET_MP_STATE", 0x4004ae99 }, { "VHOST_SET_LOG_FD", 0x4004af07 }, { "VHOST_SCSI_GET_ABI_VERSION", 0x4004af42 }, @@ -1312,6 +1307,7 @@ { "DRM_IOCTL_RADEON_GEM_WAIT_IDLE", 0x40086464 }, { "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", 0x4008646e }, { "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f }, +{ "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", 0x40086478 }, { "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 }, { "MTIOCTOP", 0x40086d01 }, { "RIO_ENABLE_DOORBELL_RANGE", 0x40086d09 }, @@ -1326,7 +1322,6 @@ { "VIDEO_SET_SPU", 0x40086f32 }, { "VIDEO_SET_SPU_PALETTE", 0x40086f33 }, { "FE_SET_PROPERTY", 0x40086f52 }, -{ "CA_SET_PID", 0x40086f87 }, { "PHN_SETREG", 0x40087006 }, { "PPSETTIME", 0x40087096 }, { "PPPIOCSACTIVE", 0x40087446 }, @@ -1343,7 +1338,6 @@ { "KVM_ASSIGN_SET_MSIX_NR", 0x4008ae73 }, { "KVM_SET_VAPIC_ADDR", 0x4008ae93 }, { "KVM_SET_GUEST_DEBUG", 0x4008ae9b }, -{ "KVM_X86_SETUP_MCE", 0x4008ae9c }, { "VHOST_SET_FEATURES", 0x4008af00 }, { "VHOST_SET_MEM_TABLE", 0x4008af03 }, { "VHOST_SET_LOG_BASE", 0x4008af04 }, @@ -1475,8 +1469,6 @@ { "KVM_REGISTER_COALESCED_MMIO", 0x4010ae67 }, { "KVM_UNREGISTER_COALESCED_MMIO", 0x4010ae68 }, { "KVM_ASSIGN_SET_MSIX_ENTRY", 0x4010ae74 }, -{ "KVM_S390_INTERRUPT", 0x4010ae94 }, -{ "KVM_S390_SET_INITIAL_PSW", 0x4010ae96 }, { "KVM_DIRTY_TLB", 0x4010aeaa }, { "KVM_ARM_SET_DEVICE_ADDR", 0x4010aeab }, { "KVM_GET_ONE_REG", 0x4010aeab }, @@ -1525,8 +1517,6 @@ { "IOC_PR_PREEMPT_ABORT", 0x401870cc }, { "BTRFS_IOC_QGROUP_ASSIGN", 0x40189429 }, { "KVM_SET_MEMORY_REGION", 0x4018ae40 }, -{ "KVM_S390_UCAS_MAP", 0x4018ae50 }, -{ "KVM_S390_UCAS_UNMAP", 0x4018ae51 }, { "KVM_SET_DEVICE_ATTR", 0x4018aee1 }, { "KVM_GET_DEVICE_ATTR", 0x4018aee2 }, { "KVM_HAS_DEVICE_ATTR", 0x4018aee3 }, @@ -1559,9 +1549,6 @@ { "KVM_IRQFD", 0x4020ae76 }, { "KVM_SIGNAL_MSI", 0x4020aea5 }, { "KVM_ARM_VCPU_INIT", 0x4020aeae }, -{ "KVM_S390_SET_IRQ_STATE", 0x4020aeb5 }, -{ "KVM_S390_GET_IRQ_STATE", 0x4020aeb6 }, -{ "KVM_S390_SET_CMMA_BITS", 0x4020aeb9 }, { "SNDRV_COMPRESS_SET_METADATA", 0x40244314 }, { "NVM_DEV_REMOVE", 0x40244c23 }, { "NVM_DEV_FACTORY", 0x40244c25 }, @@ -1624,9 +1611,6 @@ { "KVM_CREATE_PIT2", 0x4040ae77 }, { "KVM_IOEVENTFD", 0x4040ae79 }, { "KVM_ASSIGN_SET_INTX_MASK", 0x4040aea4 }, -{ "KVM_S390_MEM_OP", 0x4040aeb1 }, -{ "KVM_S390_GET_SKEYS", 0x4040aeb2 }, -{ "KVM_S390_SET_SKEYS", 0x4040aeb3 }, { "CXL_IOCTL_START_WORK", 0x4040ca00 }, { "CXL_IOCTL_DOWNLOAD_IMAGE", 0x4040ca0a }, { "CXL_IOCTL_VALIDATE_IMAGE", 0x4040ca0b }, @@ -1639,8 +1623,8 @@ { "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 }, { "BC_TRANSACTION_SG", 0x40486311 }, { "BC_REPLY_SG", 0x40486312 }, +{ "DRM_IOCTL_I915_PERF_ADD_CONFIG", 0x40486477 }, { "BTRFS_IOC_SEND", 0x40489426 }, -{ "KVM_S390_IRQ", 0x4048aeb4 }, { "GSMIOC_SETCONF", 0x404c4701 }, { "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a }, { "SNDRV_HWDEP_IOCTL_DSP_LOAD", 0x40504803 }, @@ -1665,7 +1649,6 @@ { "NVM_DEV_CREATE", 0x40804c22 }, { "UBI_IOCVOLCRBLK", 0x40804f07 }, { "V4L2_DEVICE_NOTIFY_EVENT", 0x40807602 }, -{ "KVM_PPC_GET_PVINFO", 0x4080aea1 }, { "SNDRV_COMPRESS_SET_PARAMS", 0x40844312 }, { "SNDRV_SEQ_IOCTL_DELETE_QUEUE", 0x408c5333 }, { "VIDIOC_S_JPEGCOMP", 0x408c563e }, @@ -2013,7 +1996,6 @@ { "NCP_IOC_SETPRIVATEDATA", 0x80086e0a }, { "NILFS_IOCTL_SYNC", 0x80086e8a }, { "AUDIO_GET_PTS", 0x80086f13 }, -{ "DMX_GET_CAPS", 0x80086f30 }, { "VIDEO_GET_PTS", 0x80086f39 }, { "VIDEO_GET_FRAME_COUNT", 0x80086f3a }, { "FE_GET_PROPERTY", 0x80086f53 }, @@ -2026,7 +2008,6 @@ { "BTRFS_IOC_START_SYNC", 0x80089418 }, { "BTRFS_IOC_SUBVOL_GETFLAGS", 0x80089419 }, { "TEE_IOC_CANCEL", 0x8008a404 }, -{ "KVM_X86_GET_MCE_CAP_SUPPORTED", 0x8008ae9d }, { "VHOST_GET_FEATURES", 0x8008af00 }, { "FUNCTIONFS_ENDPOINT_DESC", 0x80096782 }, { "DMX_GET_PES_PIDS", 0x800a6f2f }, @@ -2078,8 +2059,6 @@ { "GENWQE_READ_REG16", 0x8010a522 }, { "UFFDIO_UNREGISTER", 0x8010aa01 }, { "UFFDIO_WAKE", 0x8010aa02 }, -{ "KVM_PPC_RESIZE_HPT_PREPARE", 0x8010aead }, -{ "KVM_PPC_RESIZE_HPT_COMMIT", 0x8010aeae }, { "FDGETMAXERRS", 0x8014020e }, { "GET_DISK_INFO", 0x80140912 }, { "SNDRV_COMPRESS_TSTAMP", 0x80144320 }, @@ -2200,7 +2179,6 @@ { "KVM_SET_IRQCHIP", 0x8208ae63 }, { "VFAT_IOCTL_READDIR_BOTH", 0x82187201 }, { "VFAT_IOCTL_READDIR_SHORT", 0x82187202 }, -{ "KVM_PPC_GET_SMMU_INFO", 0x8250aea6 }, { "SNDRV_HDSP_IOCTL_GET_PEAK_RMS", 0x83b04840 }, { "JSIOCGBTNMAP", 0x84006a34 }, { "BTRFS_IOC_FS_INFO", 0x8400941f }, @@ -2292,7 +2270,6 @@ { "PPPIOCNEWUNIT", 0xc004743e }, { "MEYEIOC_SYNC", 0xc00476c3 }, { "AUTOFS_IOC_SETTIMEOUT", 0xc0049364 }, -{ "KVM_PPC_ALLOCATE_HTAB", 0xc004aea7 }, { "NET_ADD_IF", 0xc0066f34 }, { "NET_GET_IF", 0xc0066f36 }, { "CAPI_MANUFACTURER_CMD", 0xc0084320 }, @@ -2387,6 +2364,7 @@ { "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 }, { "MBXFB_IOCX_REG", 0xc00cf405 }, { "BLKREPORTZONE", 0xc0101282 }, +{ "RDMA_VERBS_IOCTL", 0xc0101b01 }, { "STP_POLICY_ID_SET", 0xc0102500 }, { "CAPI_GET_VERSION", 0xc0104307 }, { "GIGASET_VERSION", 0xc0104703 }, @@ -2394,6 +2372,7 @@ { "HIDIOCGCOLLECTIONINFO", 0xc0104811 }, { "SNDRV_EMUX_IOCTL_LOAD_PATCH", 0xc0104881 }, { "SNDRV_EMUX_IOCTL_MISC_MODE", 0xc0104884 }, +{ "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", 0xc0104b11 }, { "MEMGETREGIONINFO", 0xc0104d08 }, { "SNDRV_SEQ_IOCTL_RUNNING_MODE", 0xc0105303 }, { "USBDEVFS_CONTROL", 0xc0105500 }, @@ -2445,6 +2424,7 @@ { "DRM_IOCTL_TEGRA_GET_SYNCPT_BASE", 0xc0106449 }, { "DRM_IOCTL_VC4_GET_TILING", 0xc0106449 }, { "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a }, +{ "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a }, { "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b }, { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d }, { "DRM_IOCTL_VIA_WAIT_IRQ", 0xc010644d }, @@ -2467,6 +2447,8 @@ { "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd }, { "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", 0xc01064c1 }, { "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 }, +{ "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 }, +{ "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 }, { "MGSL_IOCWAITGPIO", 0xc0106d12 }, { "DMX_GET_STC", 0xc0106f32 }, { "SCIF_ACCEPTREQ", 0xc0107304 }, @@ -2511,6 +2493,7 @@ { "VIDIOC_OMAP3ISP_STAT_REQ", 0xc01856c6 }, { "PACKET_CTRL_CMD", 0xc0185801 }, { "FITRIM", 0xc0185879 }, +{ "BINDER_GET_NODE_DEBUG_INFO", 0xc018620b }, { "DRM_IOCTL_GET_MAP", 0xc0186404 }, { "DRM_IOCTL_GET_CLIENT", 0xc0186405 }, { "DRM_IOCTL_ADD_MAP", 0xc0186415 }, @@ -2600,12 +2583,12 @@ { "DRM_IOCTL_MODE_CREATE_DUMB", 0xc02064b2 }, { "DRM_IOCTL_MODE_GETPLANE", 0xc02064b6 }, { "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", 0xc02064b9 }, +{ "DRM_IOCTL_SYNCOBJ_WAIT", 0xc02064c3 }, { "FS_IOC_FIEMAP", 0xc020660b }, { "GENWQE_PIN_MEM", 0xc020a528 }, { "GENWQE_UNPIN_MEM", 0xc020a529 }, { "UFFDIO_REGISTER", 0xc020aa00 }, { "UFFDIO_ZEROPAGE", 0xc020aa04 }, -{ "KVM_S390_GET_CMMA_BITS", 0xc020aeb8 }, { "SNDCTL_MIDI_MPUCMD", 0xc0216d02 }, { "SNDRV_COMPRESS_GET_METADATA", 0xc0244315 }, { "VIDIOC_G_EDID", 0xc0245628 }, @@ -2621,6 +2604,7 @@ { "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 }, { "FW_CDEV_IOC_GET_INFO", 0xc0282300 }, { "AMDKFD_IOC_GET_CLOCK_COUNTERS", 0xc0284b05 }, +{ "AMDKFD_IOC_GET_TILE_CONFIG", 0xc0284b12 }, { "VIDIOC_ENCODER_CMD", 0xc028564d }, { "VIDIOC_TRY_ENCODER_CMD", 0xc028564e }, { "SWITCHTEC_IOCTL_EVENT_CTL", 0xc0285743 }, diff --git a/ioctlent2.h b/ioctlent2.h index 9065d163..4fb7d074 100644 --- a/ioctlent2.h +++ b/ioctlent2.h @@ -324,6 +324,7 @@ { "LOOP_CHANGE_FD", 0x00004c06 }, { "LOOP_SET_CAPACITY", 0x00004c07 }, { "LOOP_SET_DIRECT_IO", 0x00004c08 }, +{ "LOOP_SET_BLOCK_SIZE", 0x00004c09 }, { "LOOP_CTL_ADD", 0x00004c80 }, { "LOOP_CTL_REMOVE", 0x00004c81 }, { "LOOP_CTL_GET_FREE", 0x00004c82 }, @@ -865,7 +866,6 @@ { "KVM_CREATE_VM", 0x0000ae01 }, { "KVM_CHECK_EXTENSION", 0x0000ae03 }, { "KVM_GET_VCPU_MMAP_SIZE", 0x0000ae04 }, -{ "KVM_S390_ENABLE_SIE", 0x0000ae06 }, { "KVM_CREATE_VCPU", 0x0000ae41 }, { "KVM_SET_NR_MMU_PAGES", 0x0000ae44 }, { "KVM_GET_NR_MMU_PAGES", 0x0000ae45 }, @@ -875,7 +875,6 @@ { "KVM_REINJECT_CONTROL", 0x0000ae71 }, { "KVM_SET_BOOT_CPU_ID", 0x0000ae78 }, { "KVM_RUN", 0x0000ae80 }, -{ "KVM_S390_INITIAL_RESET", 0x0000ae97 }, { "KVM_NMI", 0x0000ae9a }, { "KVM_SET_TSC_KHZ", 0x0000aea2 }, { "KVM_GET_TSC_KHZ", 0x0000aea3 }, @@ -1128,7 +1127,6 @@ { "MATROXFB_SET_OUTPUT_MODE", 0x40046efa }, { "SISFB_SET_AUTOMAXIMIZE_OLD", 0x40046efa }, { "UBI_IOCRMVOL", 0x40046f01 }, -{ "DMX_SET_SOURCE", 0x40046f31 }, { "UBI_IOCDET", 0x40046f41 }, { "PHN_SET_REG", 0x40047001 }, { "PHN_SET_REGS", 0x40047003 }, @@ -1307,6 +1305,7 @@ { "DRM_IOCTL_RADEON_GEM_WAIT_IDLE", 0x40086464 }, { "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", 0x4008646e }, { "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f }, +{ "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", 0x40086478 }, { "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 }, { "MTIOCTOP", 0x40086d01 }, { "RIO_ENABLE_DOORBELL_RANGE", 0x40086d09 }, @@ -1321,7 +1320,6 @@ { "VIDEO_SET_SPU", 0x40086f32 }, { "VIDEO_SET_SPU_PALETTE", 0x40086f33 }, { "FE_SET_PROPERTY", 0x40086f52 }, -{ "CA_SET_PID", 0x40086f87 }, { "PHN_SETREG", 0x40087006 }, { "PPPIOCSACTIVE", 0x40087446 }, { "PPPIOCSPASS", 0x40087447 }, @@ -1332,7 +1330,6 @@ { "BTRFS_IOC_WAIT_SYNC", 0x40089416 }, { "BTRFS_IOC_SUBVOL_SETFLAGS", 0x4008941a }, { "KVM_SET_IDENTITY_MAP_ADDR", 0x4008ae48 }, -{ "KVM_S390_VCPU_FAULT", 0x4008ae52 }, { "KVM_IRQ_LINE", 0x4008ae61 }, { "KVM_SET_GSI_ROUTING", 0x4008ae6a }, { "KVM_ASSIGN_SET_MSIX_NR", 0x4008ae73 }, @@ -1340,7 +1337,6 @@ { "KVM_SET_CPUID", 0x4008ae8a }, { "KVM_SET_CPUID2", 0x4008ae90 }, { "KVM_SET_VAPIC_ADDR", 0x4008ae93 }, -{ "KVM_S390_STORE_STATUS", 0x4008ae95 }, { "KVM_X86_SETUP_MCE", 0x4008ae9c }, { "VHOST_SET_FEATURES", 0x4008af00 }, { "VHOST_SET_MEM_TABLE", 0x4008af03 }, @@ -1482,10 +1478,7 @@ { "KVM_REGISTER_COALESCED_MMIO", 0x4010ae67 }, { "KVM_UNREGISTER_COALESCED_MMIO", 0x4010ae68 }, { "KVM_ASSIGN_SET_MSIX_ENTRY", 0x4010ae74 }, -{ "KVM_S390_INTERRUPT", 0x4010ae94 }, -{ "KVM_S390_SET_INITIAL_PSW", 0x4010ae96 }, { "KVM_DIRTY_TLB", 0x4010aeaa }, -{ "KVM_ARM_SET_DEVICE_ADDR", 0x4010aeab }, { "KVM_GET_ONE_REG", 0x4010aeab }, { "KVM_SET_ONE_REG", 0x4010aeac }, { "ASPEED_LPC_CTRL_IOCTL_MAP", 0x4010b201 }, @@ -1532,8 +1525,6 @@ { "IOC_PR_PREEMPT_ABORT", 0x401870cc }, { "BTRFS_IOC_QGROUP_ASSIGN", 0x40189429 }, { "KVM_SET_MEMORY_REGION", 0x4018ae40 }, -{ "KVM_S390_UCAS_MAP", 0x4018ae50 }, -{ "KVM_S390_UCAS_UNMAP", 0x4018ae51 }, { "KVM_SET_DEVICE_ATTR", 0x4018aee1 }, { "KVM_GET_DEVICE_ATTR", 0x4018aee2 }, { "KVM_HAS_DEVICE_ATTR", 0x4018aee3 }, @@ -1566,9 +1557,6 @@ { "KVM_SET_USER_MEMORY_REGION", 0x4020ae46 }, { "KVM_IRQFD", 0x4020ae76 }, { "KVM_SIGNAL_MSI", 0x4020aea5 }, -{ "KVM_S390_SET_IRQ_STATE", 0x4020aeb5 }, -{ "KVM_S390_GET_IRQ_STATE", 0x4020aeb6 }, -{ "KVM_S390_SET_CMMA_BITS", 0x4020aeb9 }, { "SNDRV_COMPRESS_SET_METADATA", 0x40244314 }, { "NVM_DEV_REMOVE", 0x40244c23 }, { "NVM_DEV_FACTORY", 0x40244c25 }, @@ -1634,9 +1622,6 @@ { "KVM_X86_SET_MCE", 0x4040ae9e }, { "KVM_SET_VCPU_EVENTS", 0x4040aea0 }, { "KVM_ASSIGN_SET_INTX_MASK", 0x4040aea4 }, -{ "KVM_S390_MEM_OP", 0x4040aeb1 }, -{ "KVM_S390_GET_SKEYS", 0x4040aeb2 }, -{ "KVM_S390_SET_SKEYS", 0x4040aeb3 }, { "CXL_IOCTL_START_WORK", 0x4040ca00 }, { "CXL_IOCTL_DOWNLOAD_IMAGE", 0x4040ca0a }, { "CXL_IOCTL_VALIDATE_IMAGE", 0x4040ca0b }, @@ -1649,9 +1634,9 @@ { "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 }, { "BC_TRANSACTION_SG", 0x40486311 }, { "BC_REPLY_SG", 0x40486312 }, +{ "DRM_IOCTL_I915_PERF_ADD_CONFIG", 0x40486477 }, { "BTRFS_IOC_SEND", 0x40489426 }, { "KVM_SET_GUEST_DEBUG", 0x4048ae9b }, -{ "KVM_S390_IRQ", 0x4048aeb4 }, { "GSMIOC_SETCONF", 0x404c4701 }, { "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a }, { "SNDRV_HWDEP_IOCTL_DSP_LOAD", 0x40504803 }, @@ -1676,7 +1661,6 @@ { "NILFS_IOCTL_CLEAN_SEGMENTS", 0x40786e88 }, { "NVM_DEV_CREATE", 0x40804c22 }, { "UBI_IOCVOLCRBLK", 0x40804f07 }, -{ "KVM_PPC_GET_PVINFO", 0x4080aea1 }, { "KVM_SET_DEBUGREGS", 0x4080aea2 }, { "SNDRV_COMPRESS_SET_PARAMS", 0x40844312 }, { "V4L2_DEVICE_NOTIFY_EVENT", 0x40887602 }, @@ -2032,7 +2016,6 @@ { "NCP_IOC_SETPRIVATEDATA", 0x80086e0a }, { "NILFS_IOCTL_SYNC", 0x80086e8a }, { "AUDIO_GET_PTS", 0x80086f13 }, -{ "DMX_GET_CAPS", 0x80086f30 }, { "VIDEO_GET_PTS", 0x80086f39 }, { "VIDEO_GET_FRAME_COUNT", 0x80086f3a }, { "FE_GET_PROPERTY", 0x80086f53 }, @@ -2096,8 +2079,6 @@ { "GENWQE_READ_REG16", 0x8010a522 }, { "UFFDIO_UNREGISTER", 0x8010aa01 }, { "UFFDIO_WAKE", 0x8010aa02 }, -{ "KVM_PPC_RESIZE_HPT_PREPARE", 0x8010aead }, -{ "KVM_PPC_RESIZE_HPT_COMMIT", 0x8010aeae }, { "FDGETMAXERRS", 0x8014020e }, { "GET_DISK_INFO", 0x80140912 }, { "SNDRV_COMPRESS_TSTAMP", 0x80144320 }, @@ -2225,7 +2206,6 @@ { "KVM_SET_IRQCHIP", 0x8208ae63 }, { "VFAT_IOCTL_READDIR_BOTH", 0x82307201 }, { "VFAT_IOCTL_READDIR_SHORT", 0x82307202 }, -{ "KVM_PPC_GET_SMMU_INFO", 0x8250aea6 }, { "SNDRV_HDSP_IOCTL_GET_PEAK_RMS", 0x83b04840 }, { "JSIOCGBTNMAP", 0x84006a34 }, { "BTRFS_IOC_FS_INFO", 0x8400941f }, @@ -2320,7 +2300,6 @@ { "MEYEIOC_SYNC", 0xc00476c3 }, { "AUTOFS_IOC_SETTIMEOUT", 0xc0049364 }, { "KVM_GET_MSR_INDEX_LIST", 0xc004ae02 }, -{ "KVM_PPC_ALLOCATE_HTAB", 0xc004aea7 }, { "NET_ADD_IF", 0xc0066f34 }, { "NET_GET_IF", 0xc0066f36 }, { "CAPI_MANUFACTURER_CMD", 0xc0084320 }, @@ -2419,6 +2398,7 @@ { "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 }, { "MBXFB_IOCX_REG", 0xc00cf405 }, { "BLKREPORTZONE", 0xc0101282 }, +{ "RDMA_VERBS_IOCTL", 0xc0101b01 }, { "STP_POLICY_ID_SET", 0xc0102500 }, { "CAPI_GET_VERSION", 0xc0104307 }, { "GIGASET_VERSION", 0xc0104703 }, @@ -2426,6 +2406,7 @@ { "HIDIOCGCOLLECTIONINFO", 0xc0104811 }, { "SNDRV_EMUX_IOCTL_LOAD_PATCH", 0xc0104881 }, { "SNDRV_EMUX_IOCTL_MISC_MODE", 0xc0104884 }, +{ "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", 0xc0104b11 }, { "MEMGETREGIONINFO", 0xc0104d08 }, { "SNDRV_SEQ_IOCTL_RUNNING_MODE", 0xc0105303 }, { "USBDEVFS_CONTROL", 0xc0105500 }, @@ -2477,6 +2458,7 @@ { "DRM_IOCTL_TEGRA_GET_SYNCPT_BASE", 0xc0106449 }, { "DRM_IOCTL_VC4_GET_TILING", 0xc0106449 }, { "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a }, +{ "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a }, { "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b }, { "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d }, { "DRM_IOCTL_VIA_WAIT_IRQ", 0xc010644d }, @@ -2499,6 +2481,8 @@ { "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd }, { "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", 0xc01064c1 }, { "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 }, +{ "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 }, +{ "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 }, { "MGSL_IOCWAITGPIO", 0xc0106d12 }, { "DMX_GET_STC", 0xc0106f32 }, { "SCIF_ACCEPTREQ", 0xc0107304 }, @@ -2544,6 +2528,7 @@ { "VIDIOC_TRY_EXT_CTRLS", 0xc0185649 }, { "PACKET_CTRL_CMD", 0xc0185801 }, { "FITRIM", 0xc0185879 }, +{ "BINDER_GET_NODE_DEBUG_INFO", 0xc018620b }, { "DRM_IOCTL_GET_MAP", 0xc0186404 }, { "DRM_IOCTL_GET_CLIENT", 0xc0186405 }, { "DRM_IOCTL_ADD_MAP", 0xc0186415 }, @@ -2636,12 +2621,12 @@ { "DRM_IOCTL_MODE_CREATE_DUMB", 0xc02064b2 }, { "DRM_IOCTL_MODE_GETPLANE", 0xc02064b6 }, { "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", 0xc02064b9 }, +{ "DRM_IOCTL_SYNCOBJ_WAIT", 0xc02064c3 }, { "FS_IOC_FIEMAP", 0xc020660b }, { "GENWQE_PIN_MEM", 0xc020a528 }, { "GENWQE_UNPIN_MEM", 0xc020a529 }, { "UFFDIO_REGISTER", 0xc020aa00 }, { "UFFDIO_ZEROPAGE", 0xc020aa04 }, -{ "KVM_S390_GET_CMMA_BITS", 0xc020aeb8 }, { "SNDCTL_MIDI_MPUCMD", 0xc0216d02 }, { "SNDRV_COMPRESS_GET_METADATA", 0xc0244315 }, { "VIDIOC_G_EDID", 0xc0245628 }, @@ -2656,6 +2641,7 @@ { "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 }, { "FW_CDEV_IOC_GET_INFO", 0xc0282300 }, { "AMDKFD_IOC_GET_CLOCK_COUNTERS", 0xc0284b05 }, +{ "AMDKFD_IOC_GET_TILE_CONFIG", 0xc0284b12 }, { "VIDIOC_ENCODER_CMD", 0xc028564d }, { "VIDIOC_TRY_ENCODER_CMD", 0xc028564e }, { "SWITCHTEC_IOCTL_EVENT_CTL", 0xc0285743 }, @@ -27,8 +27,31 @@ */ #include "defs.h" +#include "print_fields.h" #include "xlat/kcmp_types.h" +struct strace_kcmp_epoll_slot { + uint32_t efd; + uint32_t tfd; + uint32_t toff; +}; + +static void +printpidfd(struct tcb *tcp, pid_t pid, int fd) +{ + /* + * XXX We want to use printfd here, but we should figure out which + * process in strace's PID NS is referred to first. + */ + tprintf("%d", fd); +} + +#define PRINT_FIELD_PIDFD(prefix_, where_, field_, tcp_, pid_) \ + do { \ + STRACE_PRINTF("%s%s=", (prefix_), #field_); \ + printpidfd((tcp_), (pid_), (where_).field_); \ + } while (0) + SYS_FUNC(kcmp) { pid_t pid1 = tcp->u_arg[0]; @@ -42,8 +65,31 @@ SYS_FUNC(kcmp) switch (type) { case KCMP_FILE: - tprintf(", %u, %u", (unsigned) idx1, (unsigned) idx2); + tprints(", "); + printpidfd(tcp, pid1, idx1); + tprints(", "); + printpidfd(tcp, pid1, idx2); + break; + + case KCMP_EPOLL_TFD: { + struct strace_kcmp_epoll_slot slot; + + tprints(", "); + printpidfd(tcp, pid1, idx1); + tprints(", "); + + if (umove_or_printaddr(tcp, idx2, &slot)) + break; + + PRINT_FIELD_PIDFD("{", slot, efd, tcp, pid2); + PRINT_FIELD_PIDFD(", ", slot, tfd, tcp, pid2); + PRINT_FIELD_U(", ", slot, toff); + tprints("}"); + + break; + } + case KCMP_FILES: case KCMP_FS: case KCMP_IO: diff --git a/kernel_types.h b/kernel_types.h index 3651014f..79ac171c 100644 --- a/kernel_types.h +++ b/kernel_types.h @@ -76,7 +76,7 @@ typedef struct { */ #if SIZEOF_LONG == 4 # define PRI__64 "ll" -#elif defined ALPHA || defined IA64 || defined POWERPC \ +#elif defined ALPHA || defined IA64 || defined __powerpc64__ \ || (defined MIPS && !defined __ANDROID__) # define PRI__64 "l" #else diff --git a/linux/32/ioctls_inc_align16.h b/linux/32/ioctls_inc_align16.h index 2cef342d..175f85fb 100644 --- a/linux/32/ioctls_inc_align16.h +++ b/linux/32/ioctls_inc_align16.h @@ -183,6 +183,9 @@ { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 }, { "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 }, { "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 }, { "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x14 }, @@ -271,7 +274,9 @@ { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 }, @@ -406,6 +411,7 @@ { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 }, +{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 }, @@ -467,6 +473,7 @@ { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c }, { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 }, { "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 }, +{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 }, { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 }, @@ -784,16 +791,13 @@ { "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 }, { "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c }, { "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 }, -{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 }, { "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 }, -{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 }, { "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a }, { "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 }, { "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 }, { "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 }, { "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3a }, { "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x12 }, -{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 }, { "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 }, { "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 }, { "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0a }, @@ -1327,10 +1331,12 @@ { "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 }, { "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 }, @@ -1367,6 +1373,7 @@ { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 }, { "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 }, { "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 }, +{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 }, { "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 }, { "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 }, { "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 }, @@ -2492,6 +2499,7 @@ { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 }, +{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 }, diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h index 6b32df2d..165912a9 100644 --- a/linux/32/ioctls_inc_align32.h +++ b/linux/32/ioctls_inc_align32.h @@ -183,6 +183,9 @@ { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 }, { "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 }, { "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 }, { "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x14 }, @@ -271,7 +274,9 @@ { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 }, @@ -406,6 +411,7 @@ { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 }, +{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 }, @@ -467,6 +473,7 @@ { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c }, { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 }, { "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 }, +{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 }, { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 }, @@ -784,16 +791,13 @@ { "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 }, { "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c }, { "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 }, -{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 }, { "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 }, -{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 }, { "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a }, { "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 }, { "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 }, { "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 }, { "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c }, { "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 }, -{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 }, { "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 }, { "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 }, { "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c }, @@ -1327,10 +1331,12 @@ { "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 }, { "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 }, @@ -1367,6 +1373,7 @@ { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 }, { "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 }, { "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 }, +{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 }, { "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 }, { "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 }, { "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 }, @@ -2492,6 +2499,7 @@ { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 }, +{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 }, diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h index 35a0ca9e..25de6bad 100644 --- a/linux/32/ioctls_inc_align64.h +++ b/linux/32/ioctls_inc_align64.h @@ -183,6 +183,9 @@ { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 }, { "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 }, { "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 }, { "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 }, @@ -271,7 +274,9 @@ { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 }, @@ -406,6 +411,7 @@ { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 }, +{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 }, @@ -467,6 +473,7 @@ { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c }, { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 }, { "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 }, +{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 }, { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 }, @@ -784,16 +791,13 @@ { "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 }, { "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c }, { "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 }, -{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 }, { "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 }, -{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 }, { "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a }, { "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 }, { "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 }, { "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 }, { "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c }, { "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 }, -{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 }, { "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 }, { "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 }, { "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c }, @@ -1327,10 +1331,12 @@ { "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 }, { "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 }, @@ -1367,6 +1373,7 @@ { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 }, { "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 }, { "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 }, +{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 }, { "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 }, { "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 }, { "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 }, @@ -2393,7 +2400,6 @@ { "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 }, { "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 }, { "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 }, -{ "media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", _IOC_WRITE, 0x56c1, 0x04 }, { "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 }, { "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 }, { "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 }, @@ -2493,6 +2499,7 @@ { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 }, +{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 }, diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h index 517caa0f..691b6eae 100644 --- a/linux/64/ioctls_inc.h +++ b/linux/64/ioctls_inc.h @@ -183,6 +183,9 @@ { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 }, { "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 }, { "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 }, { "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 }, @@ -271,7 +274,9 @@ { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 }, @@ -406,6 +411,7 @@ { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 }, +{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 }, @@ -467,6 +473,7 @@ { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c }, { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 }, { "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 }, +{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 }, { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 }, @@ -784,16 +791,13 @@ { "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 }, { "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c }, { "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 }, -{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 }, { "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 }, -{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 }, { "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a }, { "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 }, { "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 }, { "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 }, { "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c }, { "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 }, -{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 }, { "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 }, { "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 }, { "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c }, @@ -1327,10 +1331,12 @@ { "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 }, { "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 }, @@ -1367,6 +1373,7 @@ { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 }, { "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 }, { "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 }, +{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 }, { "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 }, { "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 }, { "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 }, @@ -2492,6 +2499,7 @@ { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 }, +{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 }, diff --git a/linux/arm/ioctls_arch0.h b/linux/arm/ioctls_arch0.h index ae3fb69e..f80398eb 100644 --- a/linux/arm/ioctls_arch0.h +++ b/linux/arm/ioctls_arch0.h @@ -41,30 +41,9 @@ { "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 }, { "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 }, { "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 }, -{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 }, -{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 }, -{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 }, { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 }, { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 }, { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 }, -{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 }, -{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 }, -{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 }, -{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 }, -{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 }, -{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 }, -{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 }, -{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 }, -{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 }, -{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 }, -{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 }, -{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x04 }, { "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 }, { "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 }, { "linux/kvm.h", "KVM_SET_DEVICE_ATTR", _IOC_WRITE, 0xaee1, 0x18 }, @@ -89,5 +68,3 @@ { "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 }, { "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 }, { "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 }, -{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 }, -{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 }, diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h index aa25918b..89253380 100644 --- a/linux/hppa/syscallent.h +++ b/linux/hppa/syscallent.h @@ -352,3 +352,4 @@ [346] = { 6, TD, SEN(copy_file_range), "copy_file_range" }, [347] = { 6, TD, SEN(preadv2), "preadv2" }, [348] = { 6, TD, SEN(pwritev2), "pwritev2" }, +[349] = { 5, TD|TF|TSTA, SEN(statx), "statx" }, diff --git a/linux/i386/ioctls_arch0.h b/linux/i386/ioctls_arch0.h index fcdee53e..697e2505 100644 --- a/linux/i386/ioctls_arch0.h +++ b/linux/i386/ioctls_arch0.h @@ -14,7 +14,6 @@ { "asm/mtrr.h", "MTRRIOC_KILL_PAGE_ENTRY", _IOC_WRITE, 0x4d09, 0x0c }, { "asm/mtrr.h", "MTRRIOC_SET_ENTRY", _IOC_WRITE, 0x4d01, 0x0c }, { "asm/mtrr.h", "MTRRIOC_SET_PAGE_ENTRY", _IOC_WRITE, 0x4d06, 0x0c }, -{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 }, { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 }, @@ -65,30 +64,9 @@ { "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 }, { "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 }, { "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 }, -{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 }, -{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 }, -{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 }, { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 }, { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 }, { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 }, -{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 }, -{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 }, -{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 }, -{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 }, -{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 }, -{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 }, -{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 }, -{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 }, -{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 }, -{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 }, -{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 }, -{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x04 }, { "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 }, { "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 }, { "linux/kvm.h", "KVM_SET_CPUID", _IOC_WRITE, 0xae8a, 0x08 }, diff --git a/linux/inet_diag.h b/linux/inet_diag.h index ec6356c2..d2eec2ce 100644 --- a/linux/inet_diag.h +++ b/linux/inet_diag.h @@ -106,6 +106,7 @@ enum { INET_DIAG_PAD, INET_DIAG_MARK, INET_DIAG_BBRINFO, + INET_DIAG_CLASS_ID, }; /* INET_DIAG_MEM */ diff --git a/linux/powerpc/arch_sigreturn.c b/linux/powerpc/arch_sigreturn.c index 4f68648d..5a5ca3ae 100644 --- a/linux/powerpc/arch_sigreturn.c +++ b/linux/powerpc/arch_sigreturn.c @@ -1,27 +1,32 @@ static void arch_sigreturn(struct tcb *tcp) { - unsigned long addr = ppc_regs.gpr[1]; - struct sigcontext sc; - /* Skip dummy stack frame. */ + const unsigned long addr = ppc_regs.gpr[1] + 64; + #ifdef POWERPC64 - if (current_personality == 0) - addr += 128; - else + /* The only sigreturn on ppc64 is compat_sys_sigreturn. */ + typedef struct { + unsigned int _unused[4]; + int signal; + unsigned int handler; + unsigned int oldmask; + /* all the rest is irrelevant */ + } sigreturn_context; +#else + typedef struct sigcontext sigreturn_context; #endif - addr += 64; + + sigreturn_context sc; if (umove(tcp, addr, &sc) < 0) { tprintf("{mask=%#lx}", addr); } else { - unsigned long mask[NSIG_BYTES / sizeof(long)]; -#ifdef POWERPC64 - mask[0] = sc.oldmask | (sc._unused[3] << 32); -#else - mask[0] = sc.oldmask; - mask[1] = sc._unused[3]; -#endif + const unsigned int mask[NSIG_BYTES / sizeof(int)] = { + sc.oldmask, + sc._unused[3] + }; + tprintsigmask_addr("{mask=", mask); tprints("}"); } diff --git a/linux/powerpc/get_syscall_args.c b/linux/powerpc/get_syscall_args.c index 66bcae31..b54377ef 100644 --- a/linux/powerpc/get_syscall_args.c +++ b/linux/powerpc/get_syscall_args.c @@ -2,11 +2,26 @@ static int get_syscall_args(struct tcb *tcp) { - tcp->u_arg[0] = ppc_regs.orig_gpr3; - tcp->u_arg[1] = ppc_regs.gpr[4]; - tcp->u_arg[2] = ppc_regs.gpr[5]; - tcp->u_arg[3] = ppc_regs.gpr[6]; - tcp->u_arg[4] = ppc_regs.gpr[7]; - tcp->u_arg[5] = ppc_regs.gpr[8]; + if (current_personality != 0) { + /* + * Zero-extend from 32 bits. + * Use truncate_klong_to_current_wordsize(tcp->u_arg[N]) + * in syscall handlers + * if you need to use *sign-extended* parameter. + */ + tcp->u_arg[0] = (uint32_t) ppc_regs.orig_gpr3; + tcp->u_arg[1] = (uint32_t) ppc_regs.gpr[4]; + tcp->u_arg[2] = (uint32_t) ppc_regs.gpr[5]; + tcp->u_arg[3] = (uint32_t) ppc_regs.gpr[6]; + tcp->u_arg[4] = (uint32_t) ppc_regs.gpr[7]; + tcp->u_arg[5] = (uint32_t) ppc_regs.gpr[8]; + } else { + tcp->u_arg[0] = ppc_regs.orig_gpr3; + tcp->u_arg[1] = ppc_regs.gpr[4]; + tcp->u_arg[2] = ppc_regs.gpr[5]; + tcp->u_arg[3] = ppc_regs.gpr[6]; + tcp->u_arg[4] = ppc_regs.gpr[7]; + tcp->u_arg[5] = ppc_regs.gpr[8]; + } return 1; } diff --git a/linux/powerpc/ioctls_arch0.h b/linux/powerpc/ioctls_arch0.h index 2516661f..e922ec0e 100644 --- a/linux/powerpc/ioctls_arch0.h +++ b/linux/powerpc/ioctls_arch0.h @@ -88,7 +88,6 @@ { "asm/ps3fb.h", "PS3FB_IOCTL_SCREENINFO", _IOC_READ, 0x7203, 0x04 }, { "asm/ps3fb.h", "PS3FB_IOCTL_SETMODE", _IOC_WRITE, 0x7201, 0x04 }, { "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 }, -{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 }, { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 }, @@ -141,22 +140,6 @@ { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 }, { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 }, { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 }, -{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 }, -{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 }, -{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 }, -{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 }, -{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 }, -{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 }, -{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 }, -{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 }, -{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 }, -{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 }, -{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 }, -{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x04 }, { "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 }, { "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 }, { "linux/kvm.h", "KVM_SET_DEVICE_ATTR", _IOC_WRITE, 0xaee1, 0x18 }, @@ -181,5 +164,3 @@ { "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 }, { "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 }, { "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 }, -{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 }, -{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 }, diff --git a/linux/s390/ioctls_arch0.h b/linux/s390/ioctls_arch0.h index f21ae987..66b26ae4 100644 --- a/linux/s390/ioctls_arch0.h +++ b/linux/s390/ioctls_arch0.h @@ -50,6 +50,9 @@ { "asm/tape390.h", "TAPE390_DISPLAY", _IOC_WRITE, 0x6401, 0x11 }, { "asm/tape390.h", "TAPE390_KEKL_QUERY", _IOC_READ, 0x6405, 0x86 }, { "asm/tape390.h", "TAPE390_KEKL_SET", _IOC_WRITE, 0x6404, 0x86 }, +{ "asm/vmcp.h", "VMCP_GETCODE", _IOC_READ, 0x1001, 0x04 }, +{ "asm/vmcp.h", "VMCP_GETSIZE", _IOC_READ, 0x1003, 0x04 }, +{ "asm/vmcp.h", "VMCP_SETBUF", _IOC_WRITE, 0x1002, 0x04 }, { "asm/zcrypt.h", "ICARSACRT", _IOC_READ|_IOC_WRITE, 0x7a06, 0x00 }, { "asm/zcrypt.h", "ICARSAMODEXPO", _IOC_READ|_IOC_WRITE, 0x7a05, 0x00 }, { "asm/zcrypt.h", "Z90STAT_CEX2ACOUNT", _IOC_READ, 0x7a4e, 0x04 }, @@ -69,7 +72,6 @@ { "asm/zcrypt.h", "ZDEVICESTATUS", _IOC_READ|_IOC_WRITE, 0x7a4f, 0x00 }, { "asm/zcrypt.h", "ZSECSENDCPRB", _IOC_READ|_IOC_WRITE, 0x7a81, 0x00 }, { "asm/zcrypt.h", "ZSENDEP11CPRB", _IOC_READ|_IOC_WRITE, 0x7a04, 0x00 }, -{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 }, { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 }, @@ -108,11 +110,6 @@ { "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 }, { "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 }, { "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 }, -{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 }, -{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 }, -{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 }, { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 }, { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 }, { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 }, @@ -156,5 +153,3 @@ { "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 }, { "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 }, { "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 }, -{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 }, -{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 }, diff --git a/linux/s390x/ioctls_arch0.h b/linux/s390x/ioctls_arch0.h index 7004c72e..c544f00d 100644 --- a/linux/s390x/ioctls_arch0.h +++ b/linux/s390x/ioctls_arch0.h @@ -50,6 +50,9 @@ { "asm/tape390.h", "TAPE390_DISPLAY", _IOC_WRITE, 0x6401, 0x11 }, { "asm/tape390.h", "TAPE390_KEKL_QUERY", _IOC_READ, 0x6405, 0x86 }, { "asm/tape390.h", "TAPE390_KEKL_SET", _IOC_WRITE, 0x6404, 0x86 }, +{ "asm/vmcp.h", "VMCP_GETCODE", _IOC_READ, 0x1001, 0x04 }, +{ "asm/vmcp.h", "VMCP_GETSIZE", _IOC_READ, 0x1003, 0x04 }, +{ "asm/vmcp.h", "VMCP_SETBUF", _IOC_WRITE, 0x1002, 0x04 }, { "asm/zcrypt.h", "ICARSACRT", _IOC_READ|_IOC_WRITE, 0x7a06, 0x00 }, { "asm/zcrypt.h", "ICARSAMODEXPO", _IOC_READ|_IOC_WRITE, 0x7a05, 0x00 }, { "asm/zcrypt.h", "Z90STAT_CEX2ACOUNT", _IOC_READ, 0x7a4e, 0x04 }, @@ -69,7 +72,6 @@ { "asm/zcrypt.h", "ZDEVICESTATUS", _IOC_READ|_IOC_WRITE, 0x7a4f, 0x00 }, { "asm/zcrypt.h", "ZSECSENDCPRB", _IOC_READ|_IOC_WRITE, 0x7a81, 0x00 }, { "asm/zcrypt.h", "ZSENDEP11CPRB", _IOC_READ|_IOC_WRITE, 0x7a04, 0x00 }, -{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 }, { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 }, @@ -108,11 +110,6 @@ { "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 }, { "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 }, { "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 }, -{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 }, -{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 }, -{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 }, { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 }, { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 }, { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 }, @@ -156,5 +153,3 @@ { "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 }, { "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 }, { "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 }, -{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 }, -{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 }, diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h index 70a857df..9d4041bf 100644 --- a/linux/x32/ioctls_inc0.h +++ b/linux/x32/ioctls_inc0.h @@ -183,6 +183,9 @@ { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 }, { "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 }, +{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 }, { "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 }, { "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 }, { "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 }, @@ -271,7 +274,9 @@ { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c }, { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 }, +{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 }, { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 }, @@ -406,6 +411,7 @@ { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 }, +{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 }, { "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 }, @@ -467,6 +473,7 @@ { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c }, { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 }, { "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 }, +{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 }, { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 }, { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 }, @@ -784,16 +791,13 @@ { "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 }, { "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c }, { "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 }, -{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 }, { "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 }, -{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 }, { "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a }, { "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 }, { "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 }, { "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 }, { "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c }, { "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 }, -{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 }, { "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 }, { "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 }, { "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c }, @@ -1327,10 +1331,12 @@ { "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 }, +{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 }, { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 }, { "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 }, @@ -1367,6 +1373,7 @@ { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 }, { "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 }, { "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 }, +{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 }, { "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 }, { "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 }, { "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 }, @@ -2492,6 +2499,7 @@ { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 }, { "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 }, +{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 }, { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 }, diff --git a/linux/x86_64/ioctls_arch0.h b/linux/x86_64/ioctls_arch0.h index 4b8bbd1e..3e5c7cb2 100644 --- a/linux/x86_64/ioctls_arch0.h +++ b/linux/x86_64/ioctls_arch0.h @@ -14,7 +14,6 @@ { "asm/mtrr.h", "MTRRIOC_KILL_PAGE_ENTRY", _IOC_WRITE, 0x4d09, 0x10 }, { "asm/mtrr.h", "MTRRIOC_SET_ENTRY", _IOC_WRITE, 0x4d01, 0x10 }, { "asm/mtrr.h", "MTRRIOC_SET_PAGE_ENTRY", _IOC_WRITE, 0x4d06, 0x10 }, -{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 }, { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 }, { "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 }, @@ -65,30 +64,9 @@ { "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 }, { "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 }, { "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 }, -{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 }, -{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 }, -{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 }, -{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 }, { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 }, { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 }, { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 }, -{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 }, -{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 }, -{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 }, -{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 }, -{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 }, -{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 }, -{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 }, -{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 }, -{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 }, -{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 }, -{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x08 }, -{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 }, -{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 }, -{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x08 }, { "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 }, { "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 }, { "linux/kvm.h", "KVM_SET_CPUID", _IOC_WRITE, 0xae8a, 0x08 }, @@ -189,6 +189,7 @@ MPERS_PRINTER_DECL(int, loop_ioctl, break; case LOOP_SET_DIRECT_IO: + case LOOP_SET_BLOCK_SIZE: tprintf(", %" PRI_klu, arg); break; diff --git a/m4/mpers.m4 b/m4/mpers.m4 index 277a3841..12446826 100644 --- a/m4/mpers.m4 +++ b/m4/mpers.m4 @@ -1,6 +1,6 @@ #!/usr/bin/m4 # -# Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org> +# Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org> # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com> # All rights reserved. # @@ -126,6 +126,23 @@ case "$arch" in [Define to 1 if you have CFLAG mpers support]) st_MPERS_STRUCT_STAT([]) st_MPERS_STRUCT_STAT([64]) + + if test $st_cv_runtime = yes; then + pushdef([SIZEOF_LONG], + MPERS_NAME[_SIZEOF_LONG]) + st_MPERS_LOAD_AC_CV([sizeof_long]) + AC_CHECK_SIZEOF([long]) + st_MPERS_SAVE_AC_CV([sizeof_long]) + popdef([SIZEOF_LONG]) + + pushdef([SIZEOF_KERNEL_LONG_T], + MPERS_NAME[_SIZEOF_KERNEL_LONG_T]) + st_MPERS_LOAD_AC_CV([sizeof_kernel_long_t]) + AC_CHECK_SIZEOF([kernel_long_t],, + [#include "$srcdir/kernel_types.h"]) + st_MPERS_SAVE_AC_CV([sizeof_kernel_long_t]) + popdef([SIZEOF_KERNEL_LONG_T]) + fi fi fi CFLAGS="$saved_CFLAGS" @@ -35,6 +35,14 @@ #define STRINGIFY(...) #__VA_ARGS__ #define STRINGIFY_VAL(...) STRINGIFY(__VA_ARGS__) +#ifndef MAX +# define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef MIN +# define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#define CLAMP(val, min, max) MIN(MAX(min, val), max) + #ifndef offsetofend # define offsetofend(type_, member_) \ (offsetof(type_, member_) + sizeof(((type_ *)0)->member_)) @@ -34,11 +34,23 @@ #include <linux/rtnetlink.h> #include <linux/xfrm.h> #include "xlat/netlink_ack_flags.h" +#include "xlat/netlink_delete_flags.h" #include "xlat/netlink_flags.h" #include "xlat/netlink_get_flags.h" #include "xlat/netlink_new_flags.h" #include "xlat/netlink_protocols.h" #include "xlat/netlink_types.h" +#include "xlat/nf_acct_msg_types.h" +#include "xlat/nf_cthelper_msg_types.h" +#include "xlat/nf_ctnetlink_exp_msg_types.h" +#include "xlat/nf_ctnetlink_msg_types.h" +#include "xlat/nf_cttimeout_msg_types.h" +#include "xlat/nf_ipset_msg_types.h" +#include "xlat/nf_nft_compat_msg_types.h" +#include "xlat/nf_nftables_msg_types.h" +#include "xlat/nf_osf_msg_types.h" +#include "xlat/nf_queue_msg_types.h" +#include "xlat/nf_ulog_msg_types.h" #include "xlat/nl_audit_types.h" #include "xlat/nl_crypto_types.h" #include "xlat/nl_netfilter_msg_types.h" @@ -110,6 +122,38 @@ decode_nlmsg_type_generic(const struct xlat *const xlat, printxval(genl_families_xlat(), type, dflt); } +static const struct { + const struct xlat *const xlat; + const char *const dflt; +} nf_nlmsg_types[] = { + [NFNL_SUBSYS_CTNETLINK] = { + nf_ctnetlink_msg_types, + "IPCTNL_MSG_CT_???" + }, + [NFNL_SUBSYS_CTNETLINK_EXP] = { + nf_ctnetlink_exp_msg_types, + "IPCTNL_MSG_EXP_???" + }, + [NFNL_SUBSYS_QUEUE] = { nf_queue_msg_types, "NFQNL_MSG_???" }, + [NFNL_SUBSYS_ULOG] = { nf_ulog_msg_types, "NFULNL_MSG_???" }, + [NFNL_SUBSYS_OSF] = { nf_osf_msg_types, "OSF_MSG_???" }, + [NFNL_SUBSYS_IPSET] = { nf_ipset_msg_types, "IPSET_CMD_???" }, + [NFNL_SUBSYS_ACCT] = { nf_acct_msg_types, "NFNL_MSG_ACCT_???" }, + [NFNL_SUBSYS_CTNETLINK_TIMEOUT] = { + nf_cttimeout_msg_types, + "IPCTNL_MSG_TIMEOUT_???" + }, + [NFNL_SUBSYS_CTHELPER] = { + nf_cthelper_msg_types, + "NFNL_MSG_CTHELPER_???" + }, + [NFNL_SUBSYS_NFTABLES] = { nf_nftables_msg_types, "NFT_MSG_???" }, + [NFNL_SUBSYS_NFT_COMPAT] = { + nf_nft_compat_msg_types, + "NFNL_MSG_COMPAT_???" + } +}; + static void decode_nlmsg_type_netfilter(const struct xlat *const xlat, const uint16_t type, @@ -131,11 +175,12 @@ decode_nlmsg_type_netfilter(const struct xlat *const xlat, printxval(xlat, subsys_id, dflt); - /* - * The type is subsystem specific, - * print it in numeric format for now. - */ - tprintf("<<8|%#x", msg_type); + tprints("<<8|"); + if (subsys_id < ARRAY_SIZE(nf_nlmsg_types)) + printxval(nf_nlmsg_types[subsys_id].xlat, + msg_type, nf_nlmsg_types[subsys_id].dflt); + else + tprintf("%#x", msg_type); } typedef void (*nlmsg_types_decoder_t)(const struct xlat *, @@ -192,67 +237,199 @@ decode_nlmsg_type(const uint16_t type, const unsigned int family) decoder(xlat, type, dflt); } -static void -decode_nlmsg_flags(const uint16_t flags, const uint16_t type, const int family) +static const struct xlat * +decode_nlmsg_flags_crypto(const uint16_t type) { - const struct xlat *table = NULL; - - if (type < NLMSG_MIN_TYPE) { - if (type == NLMSG_ERROR) - table = netlink_ack_flags; - goto end; + switch (type) { + case CRYPTO_MSG_NEWALG: + return netlink_new_flags; + case CRYPTO_MSG_DELALG: + case CRYPTO_MSG_DELRNG: + return netlink_delete_flags; + case CRYPTO_MSG_GETALG: + return netlink_get_flags; } - switch (family) { - case NETLINK_CRYPTO: - switch (type) { - case CRYPTO_MSG_NEWALG: - table = netlink_new_flags; - break; - case CRYPTO_MSG_GETALG: - table = netlink_get_flags; - break; + return NULL; +} + +static const struct xlat * +decode_nlmsg_flags_netfilter(const uint16_t type) +{ + const uint8_t subsys_id = (uint8_t) (type >> 8); + const uint8_t msg_type = (uint8_t) type; + + switch (subsys_id) { + case NFNL_SUBSYS_CTNETLINK: + switch (msg_type) { + case IPCTNL_MSG_CT_NEW: + return netlink_new_flags; + case IPCTNL_MSG_CT_GET: + case IPCTNL_MSG_CT_GET_CTRZERO: + case IPCTNL_MSG_CT_GET_STATS_CPU: + case IPCTNL_MSG_CT_GET_STATS: + case IPCTNL_MSG_CT_GET_DYING: + case IPCTNL_MSG_CT_GET_UNCONFIRMED: + return netlink_get_flags; + case IPCTNL_MSG_CT_DELETE: + return netlink_delete_flags; } break; - case NETLINK_SOCK_DIAG: - table = netlink_get_flags; + case NFNL_SUBSYS_CTNETLINK_EXP: + switch (msg_type) { + case IPCTNL_MSG_EXP_NEW: + return netlink_new_flags; + case IPCTNL_MSG_EXP_GET: + case IPCTNL_MSG_EXP_GET_STATS_CPU: + return netlink_get_flags; + case IPCTNL_MSG_EXP_DELETE: + return netlink_delete_flags; + } break; - case NETLINK_ROUTE: - if (type == RTM_DELACTION) { - table = netlink_get_flags; - break; + case NFNL_SUBSYS_ACCT: + switch (msg_type) { + case NFNL_MSG_ACCT_NEW: + return netlink_new_flags; + case NFNL_MSG_ACCT_GET: + case NFNL_MSG_ACCT_GET_CTRZERO: + return netlink_get_flags; + case NFNL_MSG_ACCT_DEL: + return netlink_delete_flags; } - switch (type & 3) { - case 0: - table = netlink_new_flags; - break; - case 2: - table = netlink_get_flags; - break; + break; + case NFNL_SUBSYS_CTNETLINK_TIMEOUT: + switch (msg_type) { + case IPCTNL_MSG_TIMEOUT_NEW: + return netlink_new_flags; + case IPCTNL_MSG_TIMEOUT_GET: + return netlink_get_flags; + case IPCTNL_MSG_TIMEOUT_DELETE: + return netlink_delete_flags; } break; - case NETLINK_XFRM: - switch (type) { - case XFRM_MSG_NEWSA: - case XFRM_MSG_NEWPOLICY: - case XFRM_MSG_NEWAE: - case XFRM_MSG_NEWSADINFO: - case XFRM_MSG_NEWSPDINFO: - table = netlink_new_flags; - break; - - case XFRM_MSG_GETSA: - case XFRM_MSG_GETPOLICY: - case XFRM_MSG_GETAE: - case XFRM_MSG_GETSADINFO: - case XFRM_MSG_GETSPDINFO: - table = netlink_get_flags; - break; + case NFNL_SUBSYS_CTHELPER: + switch (msg_type) { + case NFNL_MSG_CTHELPER_NEW: + return netlink_new_flags; + case NFNL_MSG_CTHELPER_GET: + return netlink_get_flags; + case NFNL_MSG_CTHELPER_DEL: + return netlink_delete_flags; } break; + case NFNL_SUBSYS_NFTABLES: + switch (msg_type) { + case NFT_MSG_NEWTABLE: + case NFT_MSG_NEWCHAIN: + case NFT_MSG_NEWRULE: + case NFT_MSG_NEWSET: + case NFT_MSG_NEWSETELEM: + case NFT_MSG_NEWGEN: + case NFT_MSG_NEWOBJ: + return netlink_new_flags; + case NFT_MSG_GETTABLE: + case NFT_MSG_GETCHAIN: + case NFT_MSG_GETRULE: + case NFT_MSG_GETSET: + case NFT_MSG_GETSETELEM: + case NFT_MSG_GETGEN: + case NFT_MSG_GETOBJ: + case NFT_MSG_GETOBJ_RESET: + return netlink_get_flags; + case NFT_MSG_DELTABLE: + case NFT_MSG_DELCHAIN: + case NFT_MSG_DELRULE: + case NFT_MSG_DELSET: + case NFT_MSG_DELSETELEM: + case NFT_MSG_DELOBJ: + return netlink_delete_flags; + } + break; + case NFNL_SUBSYS_NFT_COMPAT: + switch (msg_type) { + case NFNL_MSG_COMPAT_GET: + return netlink_get_flags; + } + break; + } + + return NULL; +} + +static const struct xlat * +decode_nlmsg_flags_route(const uint16_t type) +{ + /* RTM_DELACTION uses NLM_F_ROOT flags */ + if (type == RTM_DELACTION) + return netlink_get_flags; + switch (type & 3) { + case 0: + return netlink_new_flags; + case 1: + return netlink_delete_flags; + case 2: + return netlink_get_flags; + } + + return NULL; +} + +static const struct xlat * +decode_nlmsg_flags_sock_diag(const uint16_t type) +{ + return netlink_get_flags; +} + +static const struct xlat * +decode_nlmsg_flags_xfrm(const uint16_t type) +{ + switch (type) { + case XFRM_MSG_NEWSA: + case XFRM_MSG_NEWPOLICY: + case XFRM_MSG_NEWAE: + case XFRM_MSG_NEWSADINFO: + case XFRM_MSG_NEWSPDINFO: + return netlink_new_flags; + case XFRM_MSG_DELSA: + case XFRM_MSG_DELPOLICY: + return netlink_delete_flags; + case XFRM_MSG_GETSA: + case XFRM_MSG_GETPOLICY: + case XFRM_MSG_GETAE: + case XFRM_MSG_GETSADINFO: + case XFRM_MSG_GETSPDINFO: + return netlink_get_flags; } -end: + return NULL; +} + +typedef const struct xlat *(*nlmsg_flags_decoder_t)(const uint16_t type); + +static const nlmsg_flags_decoder_t nlmsg_flags[] = { + [NETLINK_CRYPTO] = decode_nlmsg_flags_crypto, + [NETLINK_NETFILTER] = decode_nlmsg_flags_netfilter, + [NETLINK_ROUTE] = decode_nlmsg_flags_route, + [NETLINK_SOCK_DIAG] = decode_nlmsg_flags_sock_diag, + [NETLINK_XFRM] = decode_nlmsg_flags_xfrm +}; + +/* + * As all valid netlink families are positive integers, use unsigned int + * for family here to filter out -1. + */ +static void +decode_nlmsg_flags(const uint16_t flags, const uint16_t type, + const unsigned int family) +{ + const struct xlat *table = NULL; + + if (type < NLMSG_MIN_TYPE) { + if (type == NLMSG_ERROR) + table = netlink_ack_flags; + } else if (family < ARRAY_SIZE(nlmsg_flags) && nlmsg_flags[family]) + table = nlmsg_flags[family](type); + printflags_ex(flags, "NLM_F_???", netlink_flags, table, NULL); } @@ -36,6 +36,9 @@ # define NETLINK_SOCK_DIAG 4 #endif +#ifndef NLM_F_NONREC +# define NLM_F_NONREC 0x100 +#endif #ifndef NLM_F_CAPPED # define NLM_F_CAPPED 0x100 #endif diff --git a/netlink_inet_diag.c b/netlink_inet_diag.c index 700cbd3b..cffe3f5a 100644 --- a/netlink_inet_diag.c +++ b/netlink_inet_diag.c @@ -388,7 +388,8 @@ static const nla_decoder_t inet_diag_msg_nla_decoders[] = { [INET_DIAG_PEERS] = NULL, /* unimplemented */ [INET_DIAG_PAD] = NULL, [INET_DIAG_MARK] = decode_nla_u32, - [INET_DIAG_BBRINFO] = decode_tcp_bbr_info + [INET_DIAG_BBRINFO] = decode_tcp_bbr_info, + [INET_DIAG_CLASS_ID] = decode_nla_u32 }; DECL_NETLINK_DIAG_DECODER(decode_inet_diag_msg) @@ -63,5 +63,6 @@ DECL_NLA(strn); DECL_NLA(ifindex); DECL_NLA(meminfo); DECL_NLA(rt_class); +DECL_NLA(tc_stats); #endif /* !STRACE_NLATTR_H */ @@ -39,7 +39,169 @@ # include <linux/if_bridge.h> # include "netlink.h" +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS +# include "xlat/mdb_flags.h" +# endif +# include "xlat/mdb_states.h" +# include "xlat/multicast_router_types.h" # include "xlat/rtnl_mdb_attrs.h" +# include "xlat/rtnl_mdba_mdb_attrs.h" +# include "xlat/rtnl_mdba_mdb_eattr_attrs.h" +# include "xlat/rtnl_mdba_mdb_entry_attrs.h" +# include "xlat/rtnl_mdba_router_attrs.h" +# include "xlat/rtnl_mdba_router_pattr_attrs.h" + +static const nla_decoder_t mdba_mdb_eattr_nla_decoders[] = { + [MDBA_MDB_EATTR_TIMER] = decode_nla_u32 +}; + +static bool +decode_mdba_mdb_entry_info(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ +# ifdef HAVE_STRUCT_BR_MDB_ENTRY + struct br_mdb_entry entry; + + if (len < sizeof(entry)) + return false; + else if (!umove_or_printaddr(tcp, addr, &entry)) { + PRINT_FIELD_IFINDEX("{", entry, ifindex); + PRINT_FIELD_XVAL(", ", entry, state, mdb_states, "MDB_???"); +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + PRINT_FIELD_FLAGS(", ", entry, flags, + mdb_flags, "MDB_FLAGS_???"); +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + PRINT_FIELD_U(", ", entry, vid); +# endif + + const int proto = ntohs(entry.addr.proto); + + tprints(", addr={"); + print_inet_addr(proto, &entry.addr.u, + sizeof(entry.addr.u), "u"); + tprints(", proto=htons("); + printxval(addrfams, proto, "AF_???"); + tprints(")}}"); + } + + const size_t offset = NLMSG_ALIGN(sizeof(entry)); + if (len > offset) { + tprints(", "); + decode_nlattr(tcp, addr + offset, len - offset, + rtnl_mdba_mdb_eattr_attrs, "MDBA_MDB_EATTR_???", + mdba_mdb_eattr_nla_decoders, + ARRAY_SIZE(mdba_mdb_eattr_nla_decoders), NULL); + } + + return true; +# else + return false; +# endif /* HAVE_STRUCT_BR_MDB_ENTRY */ +} + +static const nla_decoder_t mdba_mdb_entry_nla_decoders[] = { + [MDBA_MDB_ENTRY_INFO] = decode_mdba_mdb_entry_info +}; + +static bool +decode_mdba_mdb_entry(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + decode_nlattr(tcp, addr, len, rtnl_mdba_mdb_entry_attrs, + "MDBA_MDB_ENTRY_???", mdba_mdb_entry_nla_decoders, + ARRAY_SIZE(mdba_mdb_entry_nla_decoders), NULL); + + return true; +} + +static const nla_decoder_t mdba_mdb_nla_decoders[] = { + [MDBA_MDB_ENTRY] = decode_mdba_mdb_entry +}; + +static bool +decode_mdba_mdb(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + decode_nlattr(tcp, addr, len, rtnl_mdba_mdb_attrs, "MDBA_MDB_???", + mdba_mdb_nla_decoders, + ARRAY_SIZE(mdba_mdb_nla_decoders), NULL); + + return true; +} + +static bool +decode_multicast_router_type(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + uint8_t type; + + if (!umove_or_printaddr(tcp, addr, &type)) + printxval(multicast_router_types, type, "MDB_RTR_TYPE_???"); + + return true; +} + +static const nla_decoder_t mdba_router_pattr_nla_decoders[] = { + [MDBA_ROUTER_PATTR_TIMER] = decode_nla_u32, + [MDBA_ROUTER_PATTR_TYPE] = decode_multicast_router_type +}; + +static bool +decode_mdba_router_port(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + uint32_t ifindex; + + if (len < sizeof(ifindex)) + return false; + else if (!umove_or_printaddr(tcp, addr, &ifindex)) + print_ifindex(ifindex); + + const size_t offset = NLMSG_ALIGN(sizeof(ifindex)); + if (len > offset) { + tprints(", "); + decode_nlattr(tcp, addr + offset, len - offset, + rtnl_mdba_router_pattr_attrs, + "MDBA_ROUTER_PATTR_???", + mdba_router_pattr_nla_decoders, + ARRAY_SIZE(mdba_router_pattr_nla_decoders), NULL); + } + + return true; +} + +static const nla_decoder_t mdba_router_nla_decoders[] = { + [MDBA_ROUTER_PORT] = decode_mdba_router_port +}; + +static bool +decode_mdba_router(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + decode_nlattr(tcp, addr, len, rtnl_mdba_router_attrs, "MDBA_ROUTER_???", + mdba_router_nla_decoders, + ARRAY_SIZE(mdba_router_nla_decoders), NULL); + + return true; +} + +static const nla_decoder_t br_port_msg_nla_decoders[] = { + [MDBA_MDB] = decode_mdba_mdb, + [MDBA_ROUTER] = decode_mdba_router +}; DECL_NETLINK_ROUTE_DECODER(decode_br_port_msg) { @@ -65,7 +227,9 @@ DECL_NETLINK_ROUTE_DECODER(decode_br_port_msg) if (decode_nla && len > offset) { tprints(", "); decode_nlattr(tcp, addr + offset, len - offset, - rtnl_mdb_attrs, "MDBA_???", NULL, 0, NULL); + rtnl_mdb_attrs, "MDBA_???", + br_port_msg_nla_decoders, + ARRAY_SIZE(br_port_msg_nla_decoders), NULL); } } @@ -33,9 +33,268 @@ #include "print_fields.h" #include "netlink.h" +#ifdef HAVE_STRUCT_GNET_STATS_BASIC +# include <linux/gen_stats.h> +#endif +#include <linux/pkt_sched.h> #include <linux/rtnetlink.h> #include "xlat/rtnl_tc_attrs.h" +#include "xlat/rtnl_tca_stab_attrs.h" +#include "xlat/rtnl_tca_stats_attrs.h" + +static bool +decode_tc_stats(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + struct tc_stats st; + const unsigned int sizeof_tc_stats = + offsetofend(struct tc_stats, backlog); + + if (len < sizeof_tc_stats) + return false; + else if (!umoven_or_printaddr(tcp, addr, sizeof_tc_stats, &st)) { + PRINT_FIELD_U("{", st, bytes); + PRINT_FIELD_U(", ", st, packets); + PRINT_FIELD_U(", ", st, drops); + PRINT_FIELD_U(", ", st, overlimits); + PRINT_FIELD_U(", ", st, bps); + PRINT_FIELD_U(", ", st, pps); + PRINT_FIELD_U(", ", st, qlen); + PRINT_FIELD_U(", ", st, backlog); + tprints("}"); + } + + return true; +} + +static bool +decode_tc_estimator(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + struct tc_estimator est; + + if (len < sizeof(est)) + return false; + else if (!umove_or_printaddr(tcp, addr, &est)) { + PRINT_FIELD_D("{", est, interval); + PRINT_FIELD_U(", ", est, ewma_log); + tprints("}"); + } + + return true; +} + +static bool +decode_gnet_stats_basic(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ +#ifdef HAVE_STRUCT_GNET_STATS_BASIC + struct gnet_stats_basic sb; + const unsigned int sizeof_st_basic = + offsetofend(struct gnet_stats_basic, packets); + + if (len < sizeof_st_basic) + return false; + else if (!umoven_or_printaddr(tcp, addr, sizeof_st_basic, &sb)) { + PRINT_FIELD_U("{", sb, bytes); + PRINT_FIELD_U(", ", sb, packets); + tprints("}"); + } + + return true; +#else + return false; +#endif +} + +static bool +decode_gnet_stats_rate_est(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST + struct gnet_stats_rate_est est; + + if (len < sizeof(est)) + return false; + else if (!umove_or_printaddr(tcp, addr, &est)) { + PRINT_FIELD_U("{", est, bps); + PRINT_FIELD_U(", ", est, pps); + tprints("}"); + } + + return true; +#else + return false; +#endif +} + +static bool +decode_gnet_stats_queue(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ +#ifdef HAVE_STRUCT_GNET_STATS_QUEUE + struct gnet_stats_queue qstats; + + if (len < sizeof(qstats)) + return false; + else if (!umove_or_printaddr(tcp, addr, &qstats)) { + PRINT_FIELD_U("{", qstats, qlen); + PRINT_FIELD_U(", ", qstats, backlog); + PRINT_FIELD_U(", ", qstats, drops); + PRINT_FIELD_U(", ", qstats, requeues); + PRINT_FIELD_U(", ", qstats, overlimits); + tprints("}"); + } + + return true; +#else + return false; +#endif +} + +static bool +decode_gnet_stats_rate_est64(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64 + struct gnet_stats_rate_est64 est; + + if (len < sizeof(est)) + return false; + else if (!umove_or_printaddr(tcp, addr, &est)) { + PRINT_FIELD_U("{", est, bps); + PRINT_FIELD_U(", ", est, pps); + tprints("}"); + } + + return true; +#else + return false; +#endif +} + +static const nla_decoder_t tca_stats_nla_decoders[] = { + [TCA_STATS_BASIC] = decode_gnet_stats_basic, + [TCA_STATS_RATE_EST] = decode_gnet_stats_rate_est, + [TCA_STATS_QUEUE] = decode_gnet_stats_queue, + [TCA_STATS_APP] = NULL, /* unimplemented */ + [TCA_STATS_RATE_EST64] = decode_gnet_stats_rate_est64, + [TCA_STATS_PAD] = NULL, +}; + +bool +decode_nla_tc_stats(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + decode_nlattr(tcp, addr, len, rtnl_tca_stats_attrs, "TCA_STATS_???", + tca_stats_nla_decoders, + ARRAY_SIZE(tca_stats_nla_decoders), opaque_data); + + return true; +} + +static bool +decode_tc_sizespec(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ +#ifdef HAVE_STRUCT_TC_SIZESPEC + struct tc_sizespec s; + + if (len < sizeof(s)) + return false; + else if (!umove_or_printaddr(tcp, addr, &s)) { + PRINT_FIELD_U("{", s, cell_log); + PRINT_FIELD_U(", ", s, size_log); + PRINT_FIELD_D(", ", s, cell_align); + PRINT_FIELD_D(", ", s, overhead); + PRINT_FIELD_U(", ", s, linklayer); + PRINT_FIELD_U(", ", s, mpu); + PRINT_FIELD_U(", ", s, mtu); + PRINT_FIELD_U(", ", s, tsize); + tprints("}"); + } + + return true; +#else + return false; +#endif +} + +static bool +print_stab_data(struct tcb *const tcp, void *const elem_buf, + const size_t elem_size, void *const opaque_data) +{ + tprintf("%" PRIu16, *(uint16_t *) elem_buf); + + return true; +} + +static bool +decode_tca_stab_data(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + uint16_t data; + const size_t nmemb = len / sizeof(data); + + if (!nmemb) + return false; + + print_array(tcp, addr, nmemb, &data, sizeof(data), + umoven_or_printaddr, print_stab_data, NULL); + + return true; +} + +static const nla_decoder_t tca_stab_nla_decoders[] = { + [TCA_STAB_BASE] = decode_tc_sizespec, + [TCA_STAB_DATA] = decode_tca_stab_data +}; + +static bool +decode_tca_stab(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + decode_nlattr(tcp, addr, len, rtnl_tca_stab_attrs, "TCA_STAB_???", + tca_stab_nla_decoders, + ARRAY_SIZE(tca_stab_nla_decoders), opaque_data); + + return true; +} + +static const nla_decoder_t tcmsg_nla_decoders[] = { + [TCA_KIND] = decode_nla_str, + [TCA_OPTIONS] = NULL, /* unimplemented */ + [TCA_STATS] = decode_tc_stats, + [TCA_XSTATS] = NULL, /* unimplemented */ + [TCA_RATE] = decode_tc_estimator, + [TCA_FCNT] = decode_nla_u32, + [TCA_STATS2] = decode_nla_tc_stats, + [TCA_STAB] = decode_tca_stab, + [TCA_PAD] = NULL, + [TCA_DUMP_INVISIBLE] = NULL, + [TCA_CHAIN] = decode_nla_u32 +}; DECL_NETLINK_ROUTE_DECODER(decode_tcmsg) { @@ -64,6 +323,7 @@ DECL_NETLINK_ROUTE_DECODER(decode_tcmsg) if (decode_nla && len > offset) { tprints(", "); decode_nlattr(tcp, addr + offset, len - offset, - rtnl_tc_attrs, "TCA_???", NULL, 0, NULL); + rtnl_tc_attrs, "TCA_???", tcmsg_nla_decoders, + ARRAY_SIZE(tcmsg_nla_decoders), NULL); } } diff --git a/rtnl_tc_action.c b/rtnl_tc_action.c index ca0b72be..499c69ac 100644 --- a/rtnl_tc_action.c +++ b/rtnl_tc_action.c @@ -37,6 +37,15 @@ #include "xlat/rtnl_tc_action_attrs.h" +static const nla_decoder_t tcamsg_nla_decoders[] = { + [TCA_ACT_KIND] = decode_nla_str, + [TCA_ACT_OPTIONS] = NULL, /* unimplemented */ + [TCA_ACT_INDEX] = decode_nla_u32, + [TCA_ACT_STATS] = decode_nla_tc_stats, + [TCA_ACT_PAD] = NULL, + [TCA_ACT_COOKIE] = NULL /* default parser */ +}; + DECL_NETLINK_ROUTE_DECODER(decode_tcamsg) { struct tcamsg tca = { .tca_family = family }; @@ -49,6 +58,7 @@ DECL_NETLINK_ROUTE_DECODER(decode_tcamsg) tprints(", "); decode_nlattr(tcp, addr + offset, len - offset, rtnl_tc_action_attrs, "TCA_ACT_???", - NULL, 0, NULL); + tcamsg_nla_decoders, + ARRAY_SIZE(tcamsg_nla_decoders), NULL); } } @@ -33,29 +33,37 @@ #include "xlat/seccomp_ops.h" #include "xlat/seccomp_filter_flags.h" -static void -decode_seccomp_set_mode_strict(const unsigned int flags, - const kernel_ulong_t addr) -{ - tprintf("%u, ", flags); - printaddr(addr); -} - SYS_FUNC(seccomp) { unsigned int op = tcp->u_arg[0]; + unsigned int flags = tcp->u_arg[1]; + unsigned int act; printxval(seccomp_ops, op, "SECCOMP_SET_MODE_???"); tprints(", "); - if (op == SECCOMP_SET_MODE_FILTER) { - printflags(seccomp_filter_flags, tcp->u_arg[1], + switch (op) { + case SECCOMP_GET_ACTION_AVAIL: + tprintf("%u, ", flags); + if (!umove_or_printaddr(tcp, tcp->u_arg[2], &act)) { + tprints("["); + printxval(seccomp_ret_action, act, "SECCOMP_RET_???"); + tprints("]"); + } + break; + + case SECCOMP_SET_MODE_FILTER: + printflags(seccomp_filter_flags, flags, "SECCOMP_FILTER_FLAG_???"); tprints(", "); decode_seccomp_fprog(tcp, tcp->u_arg[2]); - } else { - decode_seccomp_set_mode_strict(tcp->u_arg[1], - tcp->u_arg[2]); + break; + + case SECCOMP_SET_MODE_STRICT: + default: + tprintf("%u, ", flags); + printaddr(tcp->u_arg[2]); + break; } return RVAL_DECODED; @@ -53,7 +53,7 @@ . el \ . BR "\\$1" .. -.TH STRACE 1 "2017-08-28" "strace 4.19" +.TH STRACE 1 "2017-08-28" "strace 4.20" .SH NAME strace \- trace system calls and signals .SH SYNOPSIS diff --git a/strace.spec b/strace.spec index 09373548..63958fb6 100644 --- a/strace.spec +++ b/strace.spec @@ -1,6 +1,6 @@ Summary: Tracks and displays system calls associated with a running process Name: strace -Version: 4.19 +Version: 4.20 Release: 1%{?dist} License: BSD Group: Development/Debuggers @@ -102,8 +102,11 @@ echo 'END OF TEST SUITE INFORMATION' %endif %changelog -* Tue Sep 05 2017 strace-devel@lists.sourceforge.net - 4.19-1 -- strace 4.19 snapshot. +* Mon Nov 13 2017 strace-devel@lists.sourceforge.net - 4.20-1 +- strace 4.20 snapshot. + +* Tue Sep 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.19-1 +- v4.18 -> v4.19. * Wed Jul 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.18-1 - v4.17 -> v4.18. diff --git a/strace.spec.in b/strace.spec.in index 0556f78d..08dd2d3a 100644 --- a/strace.spec.in +++ b/strace.spec.in @@ -105,6 +105,9 @@ echo 'END OF TEST SUITE INFORMATION' * @RPM_CHANGELOGTIME@ @PACKAGE_BUGREPORT@ - @PACKAGE_VERSION@-1 - @PACKAGE_STRING@ snapshot. +* Tue Sep 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.19-1 +- v4.18 -> v4.19. + * Wed Jul 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.18-1 - v4.17 -> v4.18. diff --git a/tests-m32/Makefile.am b/tests-m32/Makefile.am index 741fd8dd..e5aa0773 100644 --- a/tests-m32/Makefile.am +++ b/tests-m32/Makefile.am @@ -87,6 +87,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ attach-p-cmd-p \ block_reset_raise_run \ caps-abbrev \ + check_sigblock \ + check_sigign \ clone_parent \ clone_ptrace \ count-f \ @@ -106,6 +108,7 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ ioctl_rtc-v \ is_linux_mips_n64 \ ksysent \ + list_sigaction_signum \ mmsg-silent \ mmsg_name-v \ msg_control-v \ @@ -135,6 +138,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ seccomp-filter-v \ seccomp-strict \ set_ptracer_any \ + set_sigblock \ + set_sigign \ signal_receive \ sleep \ stack-fcall \ @@ -278,6 +283,8 @@ MISC_TESTS = \ redirect-fds.test \ redirect.test \ restart_syscall.test \ + sigblock.test \ + sigign.test \ strace-C.test \ strace-E.test \ strace-S.test \ diff --git a/tests-m32/Makefile.in b/tests-m32/Makefile.in index f6955de7..7c52fbaf 100644 --- a/tests-m32/Makefile.in +++ b/tests-m32/Makefile.in @@ -139,7 +139,8 @@ DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \ attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \ - caps-abbrev$(EXEEXT) clone_parent$(EXEEXT) \ + caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \ + check_sigign$(EXEEXT) clone_parent$(EXEEXT) \ clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \ execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \ fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \ @@ -147,10 +148,11 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \ ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \ is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \ - mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \ - msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \ - netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \ - netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \ + list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \ + mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \ + net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \ + netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \ + nsyscalls$(EXEEXT) pc$(EXEEXT) \ perf_event_open_nonverbose$(EXEEXT) \ perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \ prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \ @@ -161,8 +163,9 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \ run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \ seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \ - set_ptracer_any$(EXEEXT) signal_receive$(EXEEXT) \ - sleep$(EXEEXT) stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \ + set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \ + set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \ + stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \ unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \ unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \ wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT) @@ -253,9 +256,9 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \ iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \ ipc_msg$(EXEEXT) ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) \ - ipc_shm$(EXEEXT) kcmp$(EXEEXT) kexec_file_load$(EXEEXT) \ - kexec_load$(EXEEXT) keyctl$(EXEEXT) kill$(EXEEXT) \ - lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \ + ipc_shm$(EXEEXT) kcmp$(EXEEXT) kcmp-y$(EXEEXT) \ + kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) keyctl$(EXEEXT) \ + kill$(EXEEXT) lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \ linkat$(EXEEXT) llseek$(EXEEXT) lookup_dcookie$(EXEEXT) \ lseek$(EXEEXT) lstat$(EXEEXT) lstat64$(EXEEXT) \ madvise$(EXEEXT) mbind$(EXEEXT) membarrier$(EXEEXT) \ @@ -275,19 +278,27 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ netlink_netfilter$(EXEEXT) netlink_protocol$(EXEEXT) \ netlink_route$(EXEEXT) netlink_selinux$(EXEEXT) \ netlink_sock_diag$(EXEEXT) netlink_xfrm$(EXEEXT) \ - newfstatat$(EXEEXT) nlattr$(EXEEXT) \ - nlattr_crypto_user_alg$(EXEEXT) nlattr_br_port_msg$(EXEEXT) \ - nlattr_dcbmsg$(EXEEXT) nlattr_fib_rule_hdr$(EXEEXT) \ - nlattr_ifaddrlblmsg$(EXEEXT) nlattr_ifaddrmsg$(EXEEXT) \ - nlattr_ifinfomsg$(EXEEXT) nlattr_ifla_brport$(EXEEXT) \ - nlattr_ifla_port$(EXEEXT) nlattr_ifla_xdp$(EXEEXT) \ - nlattr_inet_diag_msg$(EXEEXT) \ + newfstatat$(EXEEXT) nfnetlink_acct$(EXEEXT) \ + nfnetlink_cthelper$(EXEEXT) nfnetlink_ctnetlink$(EXEEXT) \ + nfnetlink_ctnetlink_exp$(EXEEXT) nfnetlink_cttimeout$(EXEEXT) \ + nfnetlink_nft_compat$(EXEEXT) nfnetlink_nftables$(EXEEXT) \ + nfnetlink_ipset$(EXEEXT) nfnetlink_osf$(EXEEXT) \ + nfnetlink_queue$(EXEEXT) nfnetlink_ulog$(EXEEXT) \ + nlattr$(EXEEXT) nlattr_crypto_user_alg$(EXEEXT) \ + nlattr_br_port_msg$(EXEEXT) nlattr_dcbmsg$(EXEEXT) \ + nlattr_fib_rule_hdr$(EXEEXT) nlattr_ifaddrlblmsg$(EXEEXT) \ + nlattr_ifaddrmsg$(EXEEXT) nlattr_ifinfomsg$(EXEEXT) \ + nlattr_ifla_brport$(EXEEXT) nlattr_ifla_port$(EXEEXT) \ + nlattr_ifla_xdp$(EXEEXT) nlattr_inet_diag_msg$(EXEEXT) \ nlattr_inet_diag_req_compat$(EXEEXT) \ - nlattr_inet_diag_req_v2$(EXEEXT) nlattr_ndmsg$(EXEEXT) \ + nlattr_inet_diag_req_v2$(EXEEXT) \ + nlattr_mdba_mdb_entry$(EXEEXT) \ + nlattr_mdba_router_port$(EXEEXT) nlattr_ndmsg$(EXEEXT) \ nlattr_ndtmsg$(EXEEXT) nlattr_netconfmsg$(EXEEXT) \ nlattr_netlink_diag_msg$(EXEEXT) nlattr_nlmsgerr$(EXEEXT) \ nlattr_packet_diag_msg$(EXEEXT) nlattr_rtgenmsg$(EXEEXT) \ nlattr_rtmsg$(EXEEXT) nlattr_smc_diag_msg$(EXEEXT) \ + nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \ nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \ nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \ oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \ @@ -321,7 +332,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \ sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \ sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \ - sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) select$(EXEEXT) \ + sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) \ + seccomp_get_action_avail$(EXEEXT) select$(EXEEXT) \ semop$(EXEEXT) sendfile$(EXEEXT) sendfile64$(EXEEXT) \ set_mempolicy$(EXEEXT) setdomainname$(EXEEXT) \ setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \ @@ -439,6 +451,14 @@ caps_abbrev_SOURCES = caps-abbrev.c caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT) caps_abbrev_LDADD = $(LDADD) caps_abbrev_DEPENDENCIES = libtests.a +check_sigblock_SOURCES = check_sigblock.c +check_sigblock_OBJECTS = check_sigblock.$(OBJEXT) +check_sigblock_LDADD = $(LDADD) +check_sigblock_DEPENDENCIES = libtests.a +check_sigign_SOURCES = check_sigign.c +check_sigign_OBJECTS = check_sigign.$(OBJEXT) +check_sigign_LDADD = $(LDADD) +check_sigign_DEPENDENCIES = libtests.a chmod_SOURCES = chmod.c chmod_OBJECTS = chmod.$(OBJEXT) chmod_LDADD = $(LDADD) @@ -936,6 +956,10 @@ kcmp_SOURCES = kcmp.c kcmp_OBJECTS = kcmp.$(OBJEXT) kcmp_LDADD = $(LDADD) kcmp_DEPENDENCIES = libtests.a +kcmp_y_SOURCES = kcmp-y.c +kcmp_y_OBJECTS = kcmp-y.$(OBJEXT) +kcmp_y_LDADD = $(LDADD) +kcmp_y_DEPENDENCIES = libtests.a kexec_file_load_SOURCES = kexec_file_load.c kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT) kexec_file_load_LDADD = $(LDADD) @@ -972,6 +996,10 @@ linkat_SOURCES = linkat.c linkat_OBJECTS = linkat.$(OBJEXT) linkat_LDADD = $(LDADD) linkat_DEPENDENCIES = libtests.a +list_sigaction_signum_SOURCES = list_sigaction_signum.c +list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) +list_sigaction_signum_LDADD = $(LDADD) +list_sigaction_signum_DEPENDENCIES = libtests.a llseek_SOURCES = llseek.c llseek_OBJECTS = llseek.$(OBJEXT) llseek_LDADD = $(LDADD) @@ -1192,6 +1220,50 @@ newfstatat_SOURCES = newfstatat.c newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT) newfstatat_LDADD = $(LDADD) newfstatat_DEPENDENCIES = libtests.a +nfnetlink_acct_SOURCES = nfnetlink_acct.c +nfnetlink_acct_OBJECTS = nfnetlink_acct.$(OBJEXT) +nfnetlink_acct_LDADD = $(LDADD) +nfnetlink_acct_DEPENDENCIES = libtests.a +nfnetlink_cthelper_SOURCES = nfnetlink_cthelper.c +nfnetlink_cthelper_OBJECTS = nfnetlink_cthelper.$(OBJEXT) +nfnetlink_cthelper_LDADD = $(LDADD) +nfnetlink_cthelper_DEPENDENCIES = libtests.a +nfnetlink_ctnetlink_SOURCES = nfnetlink_ctnetlink.c +nfnetlink_ctnetlink_OBJECTS = nfnetlink_ctnetlink.$(OBJEXT) +nfnetlink_ctnetlink_LDADD = $(LDADD) +nfnetlink_ctnetlink_DEPENDENCIES = libtests.a +nfnetlink_ctnetlink_exp_SOURCES = nfnetlink_ctnetlink_exp.c +nfnetlink_ctnetlink_exp_OBJECTS = nfnetlink_ctnetlink_exp.$(OBJEXT) +nfnetlink_ctnetlink_exp_LDADD = $(LDADD) +nfnetlink_ctnetlink_exp_DEPENDENCIES = libtests.a +nfnetlink_cttimeout_SOURCES = nfnetlink_cttimeout.c +nfnetlink_cttimeout_OBJECTS = nfnetlink_cttimeout.$(OBJEXT) +nfnetlink_cttimeout_LDADD = $(LDADD) +nfnetlink_cttimeout_DEPENDENCIES = libtests.a +nfnetlink_ipset_SOURCES = nfnetlink_ipset.c +nfnetlink_ipset_OBJECTS = nfnetlink_ipset.$(OBJEXT) +nfnetlink_ipset_LDADD = $(LDADD) +nfnetlink_ipset_DEPENDENCIES = libtests.a +nfnetlink_nft_compat_SOURCES = nfnetlink_nft_compat.c +nfnetlink_nft_compat_OBJECTS = nfnetlink_nft_compat.$(OBJEXT) +nfnetlink_nft_compat_LDADD = $(LDADD) +nfnetlink_nft_compat_DEPENDENCIES = libtests.a +nfnetlink_nftables_SOURCES = nfnetlink_nftables.c +nfnetlink_nftables_OBJECTS = nfnetlink_nftables.$(OBJEXT) +nfnetlink_nftables_LDADD = $(LDADD) +nfnetlink_nftables_DEPENDENCIES = libtests.a +nfnetlink_osf_SOURCES = nfnetlink_osf.c +nfnetlink_osf_OBJECTS = nfnetlink_osf.$(OBJEXT) +nfnetlink_osf_LDADD = $(LDADD) +nfnetlink_osf_DEPENDENCIES = libtests.a +nfnetlink_queue_SOURCES = nfnetlink_queue.c +nfnetlink_queue_OBJECTS = nfnetlink_queue.$(OBJEXT) +nfnetlink_queue_LDADD = $(LDADD) +nfnetlink_queue_DEPENDENCIES = libtests.a +nfnetlink_ulog_SOURCES = nfnetlink_ulog.c +nfnetlink_ulog_OBJECTS = nfnetlink_ulog.$(OBJEXT) +nfnetlink_ulog_LDADD = $(LDADD) +nfnetlink_ulog_DEPENDENCIES = libtests.a nlattr_SOURCES = nlattr.c nlattr_OBJECTS = nlattr.$(OBJEXT) nlattr_LDADD = $(LDADD) @@ -1249,6 +1321,14 @@ nlattr_inet_diag_req_v2_SOURCES = nlattr_inet_diag_req_v2.c nlattr_inet_diag_req_v2_OBJECTS = nlattr_inet_diag_req_v2.$(OBJEXT) nlattr_inet_diag_req_v2_LDADD = $(LDADD) nlattr_inet_diag_req_v2_DEPENDENCIES = libtests.a +nlattr_mdba_mdb_entry_SOURCES = nlattr_mdba_mdb_entry.c +nlattr_mdba_mdb_entry_OBJECTS = nlattr_mdba_mdb_entry.$(OBJEXT) +nlattr_mdba_mdb_entry_LDADD = $(LDADD) +nlattr_mdba_mdb_entry_DEPENDENCIES = libtests.a +nlattr_mdba_router_port_SOURCES = nlattr_mdba_router_port.c +nlattr_mdba_router_port_OBJECTS = nlattr_mdba_router_port.$(OBJEXT) +nlattr_mdba_router_port_LDADD = $(LDADD) +nlattr_mdba_router_port_DEPENDENCIES = libtests.a nlattr_ndmsg_SOURCES = nlattr_ndmsg.c nlattr_ndmsg_OBJECTS = nlattr_ndmsg.$(OBJEXT) nlattr_ndmsg_LDADD = $(LDADD) @@ -1285,6 +1365,14 @@ nlattr_smc_diag_msg_SOURCES = nlattr_smc_diag_msg.c nlattr_smc_diag_msg_OBJECTS = nlattr_smc_diag_msg.$(OBJEXT) nlattr_smc_diag_msg_LDADD = $(LDADD) nlattr_smc_diag_msg_DEPENDENCIES = libtests.a +nlattr_tc_stats_SOURCES = nlattr_tc_stats.c +nlattr_tc_stats_OBJECTS = nlattr_tc_stats.$(OBJEXT) +nlattr_tc_stats_LDADD = $(LDADD) +nlattr_tc_stats_DEPENDENCIES = libtests.a +nlattr_tca_stab_SOURCES = nlattr_tca_stab.c +nlattr_tca_stab_OBJECTS = nlattr_tca_stab.$(OBJEXT) +nlattr_tca_stab_LDADD = $(LDADD) +nlattr_tca_stab_DEPENDENCIES = libtests.a nlattr_tcamsg_SOURCES = nlattr_tcamsg.c nlattr_tcamsg_OBJECTS = nlattr_tcamsg.$(OBJEXT) nlattr_tcamsg_LDADD = $(LDADD) @@ -1696,6 +1784,10 @@ seccomp_strict_SOURCES = seccomp-strict.c seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT) seccomp_strict_LDADD = $(LDADD) seccomp_strict_DEPENDENCIES = libtests.a +seccomp_get_action_avail_SOURCES = seccomp_get_action_avail.c +seccomp_get_action_avail_OBJECTS = seccomp_get_action_avail.$(OBJEXT) +seccomp_get_action_avail_LDADD = $(LDADD) +seccomp_get_action_avail_DEPENDENCIES = libtests.a select_SOURCES = select.c select_OBJECTS = select.$(OBJEXT) select_LDADD = $(LDADD) @@ -1720,6 +1812,14 @@ set_ptracer_any_SOURCES = set_ptracer_any.c set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT) set_ptracer_any_LDADD = $(LDADD) set_ptracer_any_DEPENDENCIES = libtests.a +set_sigblock_SOURCES = set_sigblock.c +set_sigblock_OBJECTS = set_sigblock.$(OBJEXT) +set_sigblock_LDADD = $(LDADD) +set_sigblock_DEPENDENCIES = libtests.a +set_sigign_SOURCES = set_sigign.c +set_sigign_OBJECTS = set_sigign.$(OBJEXT) +set_sigign_LDADD = $(LDADD) +set_sigign_DEPENDENCIES = libtests.a setdomainname_SOURCES = setdomainname.c setdomainname_OBJECTS = setdomainname.$(OBJEXT) setdomainname_LDADD = $(LDADD) @@ -2169,10 +2269,11 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \ attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \ - btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \ - chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \ - creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \ + btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \ + chmod.c chown.c chown32.c chroot.c clock_adjtime.c \ + clock_nanosleep.c clock_xettime.c clone_parent.c \ + clone_ptrace.c copy_file_range.c count-f.c creat.c \ + delete_module.c dup.c dup2.c dup3.c epoll_create.c \ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \ @@ -2195,39 +2296,45 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \ ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \ iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \ - ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \ + ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \ - lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \ - lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \ - memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \ - mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \ - mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \ - move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \ - mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \ - munlockall.c nanosleep.c net-accept-connect.c \ - net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \ - net-yy-netlink.c net-yy-unix.c netlink_audit.c \ - netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ - netlink_kobject_uevent.c netlink_netfilter.c \ - netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ - netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ - netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \ - nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \ - nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \ - nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \ - nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \ - nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \ - nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \ - nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \ - nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \ - nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \ - oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \ - osf_utimes.c pause.c pc.c perf_event_open.c \ - perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ - personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ - pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \ - prctl-dumpable.c prctl-name.c prctl-no-args.c \ - prctl-pdeathsig.c prctl-seccomp-filter-v.c \ + lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ + llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \ + mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \ + mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \ + mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \ + mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \ + mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ + msg_control-v.c msg_name.c munlockall.c nanosleep.c \ + net-accept-connect.c net-icmp_filter.c net-sockaddr.c \ + net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \ + netlink_audit.c netlink_crypto.c netlink_generic.c \ + netlink_inet_diag.c netlink_kobject_uevent.c \ + netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ + netlink_route.c netlink_selinux.c netlink_sock_diag.c \ + netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ + nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ + nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ + nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ + nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ + nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \ + nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \ + nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \ + nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \ + nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \ + nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \ + nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \ + nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \ + nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \ + nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \ + nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \ + nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \ + oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \ + perf_event_open.c perf_event_open_nonverbose.c \ + perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \ + pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \ + ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ + prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \ preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \ @@ -2248,8 +2355,9 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \ sched_xetparam.c sched_xetscheduler.c sched_yield.c \ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ - seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \ - set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \ + seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \ + sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \ + set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \ setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \ setgroups.c setgroups32.c sethostname.c setns.c setregid.c \ setregid32.c setresgid.c setresgid32.c setresuid.c \ @@ -2275,10 +2383,11 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \ attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \ - btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \ - chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \ - creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \ + btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \ + chmod.c chown.c chown32.c chroot.c clock_adjtime.c \ + clock_nanosleep.c clock_xettime.c clone_parent.c \ + clone_ptrace.c copy_file_range.c count-f.c creat.c \ + delete_module.c dup.c dup2.c dup3.c epoll_create.c \ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \ @@ -2301,39 +2410,45 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \ ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \ iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \ - ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \ + ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \ - lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \ - lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \ - memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \ - mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \ - mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \ - move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \ - mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \ - munlockall.c nanosleep.c net-accept-connect.c \ - net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \ - net-yy-netlink.c net-yy-unix.c netlink_audit.c \ - netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ - netlink_kobject_uevent.c netlink_netfilter.c \ - netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ - netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ - netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \ - nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \ - nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \ - nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \ - nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \ - nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \ - nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \ - nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \ - nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \ - nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \ - oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \ - osf_utimes.c pause.c pc.c perf_event_open.c \ - perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ - personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ - pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \ - prctl-dumpable.c prctl-name.c prctl-no-args.c \ - prctl-pdeathsig.c prctl-seccomp-filter-v.c \ + lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ + llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \ + mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \ + mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \ + mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \ + mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \ + mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ + msg_control-v.c msg_name.c munlockall.c nanosleep.c \ + net-accept-connect.c net-icmp_filter.c net-sockaddr.c \ + net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \ + netlink_audit.c netlink_crypto.c netlink_generic.c \ + netlink_inet_diag.c netlink_kobject_uevent.c \ + netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ + netlink_route.c netlink_selinux.c netlink_sock_diag.c \ + netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ + nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ + nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ + nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ + nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ + nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \ + nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \ + nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \ + nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \ + nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \ + nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \ + nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \ + nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \ + nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \ + nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \ + nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \ + nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \ + oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \ + perf_event_open.c perf_event_open_nonverbose.c \ + perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \ + pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \ + ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ + prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \ preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \ @@ -2354,8 +2469,9 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \ sched_xetparam.c sched_xetscheduler.c sched_yield.c \ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ - seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \ - set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \ + seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \ + sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \ + set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \ setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \ setgroups.c setgroups32.c sethostname.c setns.c setregid.c \ setregid32.c setresgid.c setresgid32.c setresuid.c \ @@ -2924,6 +3040,7 @@ PURE_EXECUTABLES = \ ipc_sem \ ipc_shm \ kcmp \ + kcmp-y \ kexec_file_load \ kexec_load \ keyctl \ @@ -2981,6 +3098,17 @@ PURE_EXECUTABLES = \ netlink_sock_diag \ netlink_xfrm \ newfstatat \ + nfnetlink_acct \ + nfnetlink_cthelper \ + nfnetlink_ctnetlink \ + nfnetlink_ctnetlink_exp \ + nfnetlink_cttimeout \ + nfnetlink_nft_compat \ + nfnetlink_nftables \ + nfnetlink_ipset \ + nfnetlink_osf \ + nfnetlink_queue \ + nfnetlink_ulog \ nlattr \ nlattr_crypto_user_alg \ nlattr_br_port_msg \ @@ -2995,6 +3123,8 @@ PURE_EXECUTABLES = \ nlattr_inet_diag_msg \ nlattr_inet_diag_req_compat \ nlattr_inet_diag_req_v2 \ + nlattr_mdba_mdb_entry \ + nlattr_mdba_router_port \ nlattr_ndmsg \ nlattr_ndtmsg \ nlattr_netconfmsg \ @@ -3004,6 +3134,8 @@ PURE_EXECUTABLES = \ nlattr_rtgenmsg \ nlattr_rtmsg \ nlattr_smc_diag_msg \ + nlattr_tc_stats \ + nlattr_tca_stab \ nlattr_tcamsg \ nlattr_tcmsg \ nlattr_unix_diag_msg \ @@ -3084,6 +3216,7 @@ PURE_EXECUTABLES = \ sched_xetscheduler \ sched_yield \ seccomp-filter \ + seccomp_get_action_avail \ select \ semop \ sendfile \ @@ -3253,39 +3386,47 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \ ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \ iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \ ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \ - kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \ - keyctl.gen.test kill.gen.test lchown.gen.test \ - lchown32.gen.test link.gen.test linkat.gen.test \ - lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \ - madvise.gen.test mbind.gen.test membarrier.gen.test \ - memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \ - mkdir.gen.test mkdirat.gen.test mknod.gen.test \ - mknodat.gen.test mlock.gen.test mlock2.gen.test \ - mlockall.gen.test mmap64.gen.test mmsg.gen.test \ - mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \ - mount.gen.test move_pages.gen.test mq.gen.test \ - mq_sendrecv.gen.test mq_sendrecv-read.gen.test \ - mq_sendrecv-write.gen.test msg_control.gen.test \ - msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \ - nanosleep.gen.test net-icmp_filter.gen.test \ - net-sockaddr.gen.test netlink_audit.gen.test \ - netlink_crypto.gen.test netlink_generic.gen.test \ - netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \ - netlink_protocol.gen.test netlink_route.gen.test \ - netlink_selinux.gen.test netlink_xfrm.gen.test \ - newfstatat.gen.test nlattr.gen.test \ - nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \ - nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \ - nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \ - nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \ - nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \ - nlattr_inet_diag_msg.gen.test \ + kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \ + kexec_load.gen.test keyctl.gen.test kill.gen.test \ + lchown.gen.test lchown32.gen.test link.gen.test \ + linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ + lstat64.gen.test madvise.gen.test mbind.gen.test \ + membarrier.gen.test memfd_create.gen.test \ + migrate_pages.gen.test mincore.gen.test mkdir.gen.test \ + mkdirat.gen.test mknod.gen.test mknodat.gen.test \ + mlock.gen.test mlock2.gen.test mlockall.gen.test \ + mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \ + mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \ + move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \ + mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \ + msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \ + munlockall.gen.test nanosleep.gen.test \ + net-icmp_filter.gen.test net-sockaddr.gen.test \ + netlink_audit.gen.test netlink_crypto.gen.test \ + netlink_generic.gen.test netlink_kobject_uevent.gen.test \ + netlink_netfilter.gen.test netlink_protocol.gen.test \ + netlink_route.gen.test netlink_selinux.gen.test \ + netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \ + nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \ + nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \ + nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \ + nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \ + nfnetlink_osf.gen.test nfnetlink_queue.gen.test \ + nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \ + nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \ + nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \ + nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \ + nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \ + nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \ nlattr_inet_diag_req_compat.gen.test \ - nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test \ + nlattr_inet_diag_req_v2.gen.test \ + nlattr_mdba_mdb_entry.gen.test \ + nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test \ nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test \ nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test \ nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test \ nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test \ + nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \ nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \ nlattr_unix_diag_msg.gen.test old_mmap.gen.test \ oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \ @@ -3319,20 +3460,21 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \ sched_xetattr.gen.test sched_xetparam.gen.test \ sched_xetscheduler.gen.test sched_yield.gen.test \ seccomp-filter.gen.test seccomp-filter-v.gen.test \ - select.gen.test semop.gen.test sendfile.gen.test \ - sendfile64.gen.test set_mempolicy.gen.test \ - setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \ - setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \ - setgid32.gen.test setgroups.gen.test setgroups32.gen.test \ - sethostname.gen.test setns.gen.test setregid.gen.test \ - setregid32.gen.test setresgid.gen.test setresgid32.gen.test \ - setresuid.gen.test setresuid32.gen.test setreuid.gen.test \ - setreuid32.gen.test setrlimit.gen.test setuid.gen.test \ - setuid32.gen.test shmxt.gen.test shutdown.gen.test \ - sigaction.gen.test siginfo.gen.test signal.gen.test \ - signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \ - sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \ - so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \ + seccomp_get_action_avail.gen.test select.gen.test \ + semop.gen.test sendfile.gen.test sendfile64.gen.test \ + set_mempolicy.gen.test setdomainname.gen.test \ + setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \ + setfsuid32.gen.test setgid.gen.test setgid32.gen.test \ + setgroups.gen.test setgroups32.gen.test sethostname.gen.test \ + setns.gen.test setregid.gen.test setregid32.gen.test \ + setresgid.gen.test setresgid32.gen.test setresuid.gen.test \ + setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \ + setrlimit.gen.test setuid.gen.test setuid32.gen.test \ + shmxt.gen.test shutdown.gen.test sigaction.gen.test \ + siginfo.gen.test signal.gen.test signal_receive.gen.test \ + signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \ + sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \ + so_peercred.gen.test sock_filter-v.gen.test \ socketcall.gen.test splice.gen.test stat.gen.test \ stat64.gen.test statfs.gen.test statfs64.gen.test \ statx.gen.test swap.gen.test sxetmask.gen.test \ @@ -3451,6 +3593,8 @@ MISC_TESTS = \ redirect-fds.test \ redirect.test \ restart_syscall.test \ + sigblock.test \ + sigign.test \ strace-C.test \ strace-E.test \ strace-S.test \ @@ -3692,6 +3836,14 @@ caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA @rm -f caps-abbrev$(EXEEXT) $(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS) +check_sigblock$(EXEEXT): $(check_sigblock_OBJECTS) $(check_sigblock_DEPENDENCIES) $(EXTRA_check_sigblock_DEPENDENCIES) + @rm -f check_sigblock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_sigblock_OBJECTS) $(check_sigblock_LDADD) $(LIBS) + +check_sigign$(EXEEXT): $(check_sigign_OBJECTS) $(check_sigign_DEPENDENCIES) $(EXTRA_check_sigign_DEPENDENCIES) + @rm -f check_sigign$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_sigign_OBJECTS) $(check_sigign_LDADD) $(LIBS) + chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES) @rm -f chmod$(EXEEXT) $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS) @@ -4192,6 +4344,10 @@ kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES) @rm -f kcmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS) +kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDENCIES) + @rm -f kcmp-y$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS) + kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES) @rm -f kexec_file_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS) @@ -4228,6 +4384,10 @@ linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDE @rm -f linkat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS) +list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) + @rm -f list_sigaction_signum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) + llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES) @rm -f llseek$(EXEEXT) $(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS) @@ -4452,6 +4612,50 @@ newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_ne @rm -f newfstatat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS) +nfnetlink_acct$(EXEEXT): $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_DEPENDENCIES) $(EXTRA_nfnetlink_acct_DEPENDENCIES) + @rm -f nfnetlink_acct$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_LDADD) $(LIBS) + +nfnetlink_cthelper$(EXEEXT): $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_DEPENDENCIES) $(EXTRA_nfnetlink_cthelper_DEPENDENCIES) + @rm -f nfnetlink_cthelper$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_LDADD) $(LIBS) + +nfnetlink_ctnetlink$(EXEEXT): $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_DEPENDENCIES) + @rm -f nfnetlink_ctnetlink$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_LDADD) $(LIBS) + +nfnetlink_ctnetlink_exp$(EXEEXT): $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_exp_DEPENDENCIES) + @rm -f nfnetlink_ctnetlink_exp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_LDADD) $(LIBS) + +nfnetlink_cttimeout$(EXEEXT): $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_DEPENDENCIES) $(EXTRA_nfnetlink_cttimeout_DEPENDENCIES) + @rm -f nfnetlink_cttimeout$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_LDADD) $(LIBS) + +nfnetlink_ipset$(EXEEXT): $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_DEPENDENCIES) $(EXTRA_nfnetlink_ipset_DEPENDENCIES) + @rm -f nfnetlink_ipset$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_LDADD) $(LIBS) + +nfnetlink_nft_compat$(EXEEXT): $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_DEPENDENCIES) $(EXTRA_nfnetlink_nft_compat_DEPENDENCIES) + @rm -f nfnetlink_nft_compat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_LDADD) $(LIBS) + +nfnetlink_nftables$(EXEEXT): $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_DEPENDENCIES) $(EXTRA_nfnetlink_nftables_DEPENDENCIES) + @rm -f nfnetlink_nftables$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_LDADD) $(LIBS) + +nfnetlink_osf$(EXEEXT): $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_DEPENDENCIES) $(EXTRA_nfnetlink_osf_DEPENDENCIES) + @rm -f nfnetlink_osf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_LDADD) $(LIBS) + +nfnetlink_queue$(EXEEXT): $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_DEPENDENCIES) $(EXTRA_nfnetlink_queue_DEPENDENCIES) + @rm -f nfnetlink_queue$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_LDADD) $(LIBS) + +nfnetlink_ulog$(EXEEXT): $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_DEPENDENCIES) $(EXTRA_nfnetlink_ulog_DEPENDENCIES) + @rm -f nfnetlink_ulog$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_LDADD) $(LIBS) + nlattr$(EXEEXT): $(nlattr_OBJECTS) $(nlattr_DEPENDENCIES) $(EXTRA_nlattr_DEPENDENCIES) @rm -f nlattr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_OBJECTS) $(nlattr_LDADD) $(LIBS) @@ -4508,6 +4712,14 @@ nlattr_inet_diag_req_v2$(EXEEXT): $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_in @rm -f nlattr_inet_diag_req_v2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_inet_diag_req_v2_LDADD) $(LIBS) +nlattr_mdba_mdb_entry$(EXEEXT): $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_DEPENDENCIES) $(EXTRA_nlattr_mdba_mdb_entry_DEPENDENCIES) + @rm -f nlattr_mdba_mdb_entry$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_LDADD) $(LIBS) + +nlattr_mdba_router_port$(EXEEXT): $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_DEPENDENCIES) $(EXTRA_nlattr_mdba_router_port_DEPENDENCIES) + @rm -f nlattr_mdba_router_port$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_LDADD) $(LIBS) + nlattr_ndmsg$(EXEEXT): $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_DEPENDENCIES) $(EXTRA_nlattr_ndmsg_DEPENDENCIES) @rm -f nlattr_ndmsg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_LDADD) $(LIBS) @@ -4544,6 +4756,14 @@ nlattr_smc_diag_msg$(EXEEXT): $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_m @rm -f nlattr_smc_diag_msg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_msg_LDADD) $(LIBS) +nlattr_tc_stats$(EXEEXT): $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_DEPENDENCIES) $(EXTRA_nlattr_tc_stats_DEPENDENCIES) + @rm -f nlattr_tc_stats$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_LDADD) $(LIBS) + +nlattr_tca_stab$(EXEEXT): $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_DEPENDENCIES) $(EXTRA_nlattr_tca_stab_DEPENDENCIES) + @rm -f nlattr_tca_stab$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_LDADD) $(LIBS) + nlattr_tcamsg$(EXEEXT): $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_DEPENDENCIES) $(EXTRA_nlattr_tcamsg_DEPENDENCIES) @rm -f nlattr_tcamsg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_LDADD) $(LIBS) @@ -4948,6 +5168,10 @@ seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES @rm -f seccomp-strict$(EXEEXT) $(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS) +seccomp_get_action_avail$(EXEEXT): $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_DEPENDENCIES) $(EXTRA_seccomp_get_action_avail_DEPENDENCIES) + @rm -f seccomp_get_action_avail$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_LDADD) $(LIBS) + select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES) @rm -f select$(EXEEXT) $(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS) @@ -4972,6 +5196,14 @@ set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENC @rm -f set_ptracer_any$(EXEEXT) $(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS) +set_sigblock$(EXEEXT): $(set_sigblock_OBJECTS) $(set_sigblock_DEPENDENCIES) $(EXTRA_set_sigblock_DEPENDENCIES) + @rm -f set_sigblock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(set_sigblock_OBJECTS) $(set_sigblock_LDADD) $(LIBS) + +set_sigign$(EXEEXT): $(set_sigign_OBJECTS) $(set_sigign_DEPENDENCIES) $(EXTRA_set_sigign_DEPENDENCIES) + @rm -f set_sigign$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(set_sigign_OBJECTS) $(set_sigign_LDADD) $(LIBS) + setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES) @rm -f setdomainname$(EXEEXT) $(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS) @@ -5411,6 +5643,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps-abbrev.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ @@ -5535,6 +5769,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_sem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_file_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_load.Po@am__quote@ @@ -5571,6 +5806,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_dcookie.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@ @@ -5627,6 +5863,17 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_unix_diag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_xfrm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfstatat-newfstatat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_acct.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cthelper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink_exp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cttimeout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ipset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nft_compat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nftables.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_osf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_queue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ulog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_br_port_msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_crypto_user_alg.Po@am__quote@ @@ -5641,6 +5888,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_v2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_mdb_entry.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_router_port.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndtmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_netconfmsg.Po@am__quote@ @@ -5650,6 +5899,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtgenmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_smc_diag_msg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tc_stats.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tca_stab.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@ @@ -5751,12 +6002,15 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter-v.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setdomainname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid32.Po@am__quote@ @@ -7194,6 +7448,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7353,6 +7610,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7392,6 +7682,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src $(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7419,6 +7715,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests. $(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7641,6 +7943,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test $(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ diff --git a/tests-m32/check_sigblock.c b/tests-m32/check_sigblock.c new file mode 100644 index 00000000..5637804d --- /dev/null +++ b/tests-m32/check_sigblock.c @@ -0,0 +1,49 @@ +/* + * Check that the specified signal number is blocked/unblocked. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> + +int +main(int ac, char **av) +{ + if (ac != 3) + error_msg_and_fail("usage: check_sigblock 0|1 signum"); + + const int block = !!atoi(av[1]); + const int signum = atoi(av[2]); + sigset_t mask; + + sigemptyset(&mask); + if (sigprocmask(SIG_SETMASK, NULL, &mask)) + perror_msg_and_fail("sigprocmask"); + + return block ^ sigismember(&mask, signum); +} diff --git a/tests-m32/check_sigign.c b/tests-m32/check_sigign.c new file mode 100644 index 00000000..bace3170 --- /dev/null +++ b/tests-m32/check_sigign.c @@ -0,0 +1,49 @@ +/* + * Check that the signal handler for the specified signal number is set + * to SIG_IGN/SIG_DFL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> + +int +main(int ac, char **av) +{ + if (ac != 3) + error_msg_and_fail("usage: check_sigign 0|1 signum"); + + const int ign = !!atoi(av[1]); + const int signum = atoi(av[2]); + struct sigaction act; + + if (sigaction(signum, NULL, &act)) + perror_msg_and_fail("sigaction: %s", av[2]); + + return ign ^ (act.sa_handler == SIG_IGN); +} diff --git a/tests-m32/futex.c b/tests-m32/futex.c index b75ab339..e1dbcb74 100644 --- a/tests-m32/futex.c +++ b/tests-m32/futex.c @@ -66,6 +66,7 @@ void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout, # define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \ enosys) \ do { \ + errno = 0; \ rc = syscall(__NR_futex, (uaddr), (op), (val), (timeout), \ (uaddr2), (val3)); \ /* It is here due to EPERM on WAKE_OP on AArch64 */ \ @@ -496,8 +497,16 @@ main(int argc, char *argv[]) static const struct { uint32_t val; const char *str; + + /* + * Peculiar semantics: + * * err == 0 and err2 != 0 => expect both either the absence + * of error or presence of err2 + * * err != 0 and err2 == 0 => expect err only, no success + * expected. + */ int err; - const char *errstr; + int err2; } wake_ops[] = { { 0x00000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x00fff000, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|" @@ -511,13 +520,13 @@ main(int argc, char *argv[]) { 0x30000000, "FUTEX_OP_ANDN<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x40000000, "FUTEX_OP_XOR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x50000000, "0x5<<28 /* FUTEX_OP_??? */|0<<12|" - "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" }, + "FUTEX_OP_CMP_EQ<<24|0", ENOSYS }, { 0x70000000, "0x7<<28 /* FUTEX_OP_??? */|0<<12|" - "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" }, + "FUTEX_OP_CMP_EQ<<24|0", ENOSYS }, { 0x80000000, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_SET<<28|0<<12|" "FUTEX_OP_CMP_EQ<<24|0" }, { 0xa0caffee, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_OR<<28|" - "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee" }, + "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee", 0, EINVAL }, { 0x01000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_NE<<24|0" }, { 0x01234567, "FUTEX_OP_SET<<28|0x234<<12|FUTEX_OP_CMP_NE<<24|" "0x567" }, @@ -526,27 +535,38 @@ main(int argc, char *argv[]) { 0x04000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0" }, { 0x05000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GE<<24|0" }, { 0x06000000, "FUTEX_OP_SET<<28|0<<12|" - "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x07000000, "FUTEX_OP_SET<<28|0<<12|" - "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x08000000, "FUTEX_OP_SET<<28|0<<12|" - "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x0f000000, "FUTEX_OP_SET<<28|0<<12|" - "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0xbadfaced, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_ANDN<<28|" "0xdfa<<12|0xa<<24 /* FUTEX_OP_CMP_??? */|0xced", - ENOSYS, "ENOSYS" }, + ENOSYS, EINVAL }, { 0xffffffff, "FUTEX_OP_OPARG_SHIFT<<28|" "0x7<<28 /* FUTEX_OP_??? */|0xfff<<12|" "0xf<<24 /* FUTEX_OP_CMP_??? */|0xfff", - ENOSYS, "ENOSYS" }, + ENOSYS, EINVAL }, }; for (i = 0; i < ARRAY_SIZE(wake_ops); i++) { for (j = 0; j < 2; j++) { CHECK_FUTEX_ENOSYS(uaddr, j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP, - VAL, i, uaddr2, wake_ops[i].val, (rc == 0)); + VAL, i, uaddr2, wake_ops[i].val, + /* + * Either one of errs is 0 or rc == 0 is not + * allowed. + */ + ((!wake_ops[i].err || !wake_ops[i].err2 || + (rc != 0)) && + ((!wake_ops[i].err && (rc == 0)) || + (wake_ops[i].err && (rc == -1) && + (errno == wake_ops[i].err)) || + (wake_ops[i].err2 && (rc == -1) && + (errno == wake_ops[i].err2))))); printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)" " = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i, uaddr2, wake_ops[i].str, sprintrc(rc)); diff --git a/tests-m32/gen_tests.am b/tests-m32/gen_tests.am index 583a0aeb..71e00135 100644 --- a/tests-m32/gen_tests.am +++ b/tests-m32/gen_tests.am @@ -1,5 +1,5 @@ # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. -GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test +GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -358,6 +358,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -517,6 +520,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -556,6 +592,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src $(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -583,6 +625,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests. $(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -805,6 +853,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test $(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ diff --git a/tests-m32/gen_tests.in b/tests-m32/gen_tests.in index 8592e28b..091bbe59 100644 --- a/tests-m32/gen_tests.in +++ b/tests-m32/gen_tests.in @@ -143,7 +143,8 @@ ipc -a19 ipc_msg +ipc.sh ipc_sem +ipc.sh ipc_shm +ipc.sh -kcmp -a27 +kcmp -a22 +kcmp-y -a22 -y -e trace=kcmp kexec_file_load -s9 kexec_load -s9 keyctl -a31 -s10 @@ -197,6 +198,17 @@ netlink_selinux +netlink_sock_diag.test netlink_xfrm +netlink_sock_diag.test newfstatat -a32 -v -P stat.sample -P /dev/full nlattr +netlink_sock_diag.test +nfnetlink_acct +netlink_sock_diag.test +nfnetlink_cthelper +netlink_sock_diag.test +nfnetlink_ctnetlink +netlink_sock_diag.test +nfnetlink_ctnetlink_exp +netlink_sock_diag.test +nfnetlink_cttimeout +netlink_sock_diag.test +nfnetlink_ipset +netlink_sock_diag.test +nfnetlink_nft_compat +netlink_sock_diag.test +nfnetlink_nftables +netlink_sock_diag.test +nfnetlink_osf +netlink_sock_diag.test +nfnetlink_queue +netlink_sock_diag.test +nfnetlink_ulog +netlink_sock_diag.test nlattr_crypto_user_alg +netlink_sock_diag.test nlattr_br_port_msg +netlink_sock_diag.test nlattr_dcbmsg +netlink_sock_diag.test @@ -210,6 +222,8 @@ nlattr_ifla_xdp +netlink_sock_diag.test nlattr_inet_diag_msg +netlink_sock_diag.test nlattr_inet_diag_req_compat +netlink_sock_diag.test nlattr_inet_diag_req_v2 +netlink_sock_diag.test +nlattr_mdba_mdb_entry +netlink_sock_diag.test +nlattr_mdba_router_port +netlink_sock_diag.test nlattr_ndmsg +netlink_sock_diag.test nlattr_ndtmsg +netlink_sock_diag.test nlattr_netconfmsg +netlink_sock_diag.test @@ -219,6 +233,8 @@ nlattr_packet_diag_msg +netlink_sock_diag-v.sh nlattr_rtgenmsg +netlink_sock_diag.test nlattr_rtmsg +netlink_sock_diag.test nlattr_smc_diag_msg +netlink_sock_diag.test +nlattr_tc_stats +netlink_sock_diag.test +nlattr_tca_stab +netlink_sock_diag.test nlattr_tcamsg +netlink_sock_diag.test nlattr_tcmsg +netlink_sock_diag.test nlattr_unix_diag_msg +netlink_sock_diag.test @@ -293,6 +309,7 @@ sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler sched_yield -a14 seccomp-filter -e trace=seccomp seccomp-filter-v -v -e trace=seccomp +seccomp_get_action_avail -e trace=seccomp select -a36 semop -a32 -e trace=semop,semtimedop sendfile -a27 diff --git a/tests-m32/ioctl_dm.c b/tests-m32/ioctl_dm.c index 2f77e041..1e831dfe 100644 --- a/tests-m32/ioctl_dm.c +++ b/tests-m32/ioctl_dm.c @@ -54,6 +54,10 @@ # define ALIGNED_OFFSET(t_, m_) \ ALIGNED_SIZE(offsetof(t_, m_), t_) +# ifndef DM_DEV_ARM_POLL +# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl) +# endif + static const char str129[] = STR32 STR32 STR32 STR32 "6"; static const __u64 dts_sector_base = (__u64) 0xdeadca75facef157ULL; @@ -182,6 +186,7 @@ main(void) { ARG_STR(DM_TABLE_CLEAR), false }, { ARG_STR(DM_TABLE_DEPS), true }, { ARG_STR(DM_TABLE_STATUS), true }, + { ARG_STR(DM_DEV_ARM_POLL), false }, }; struct dm_ioctl *unaligned_dm_arg = diff --git a/tests-m32/ioctl_loop.c b/tests-m32/ioctl_loop.c index 3411a4d8..56ebd9e4 100644 --- a/tests-m32/ioctl_loop.c +++ b/tests-m32/ioctl_loop.c @@ -188,11 +188,11 @@ main(void) _IOC_SIZE((unsigned int) unknown_loop_cmd), (unsigned long) magic); - ioctl(-1, LOOP_SET_DIRECT_IO + 1, magic); + ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic); printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = " "-1 EBADF (%m)\n", - _IOC_NR(LOOP_SET_DIRECT_IO + 1), - _IOC_SIZE(LOOP_SET_DIRECT_IO + 1), + _IOC_NR(LOOP_SET_BLOCK_SIZE + 1), + _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1), (unsigned long) magic); ioctl(-1, LOOP_CTL_GET_FREE + 1, magic); @@ -303,6 +303,11 @@ main(void) printf("ioctl(-1, LOOP_SET_DIRECT_IO, %lu) = -1 EBADF (%m)\n", (unsigned long) magic); + /* LOOP_SET_BLOCK_SIZE */ + ioctl(-1, LOOP_SET_BLOCK_SIZE, magic); + printf("ioctl(-1, LOOP_SET_BLOCK_SIZE, %lu) = -1 EBADF (%m)\n", + (unsigned long) magic); + /* LOOP_CTL_ADD */ ioctl(-1, LOOP_CTL_ADD, magic); printf("ioctl(-1, LOOP_CTL_ADD, %d) = -1 EBADF (%m)\n", diff --git a/tests-m32/kcmp-y.c b/tests-m32/kcmp-y.c new file mode 100644 index 00000000..02ad90e5 --- /dev/null +++ b/tests-m32/kcmp-y.c @@ -0,0 +1,3 @@ +#define VERBOSE_FD 1 + +#include "kcmp.c" diff --git a/tests-m32/kcmp-y.gen.test b/tests-m32/kcmp-y.gen.test new file mode 100755 index 00000000..065db9d0 --- /dev/null +++ b/tests-m32/kcmp-y.gen.test @@ -0,0 +1,4 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y -a22 -y -e trace=kcmp); do not edit. +. "${srcdir=.}/init.sh" +run_strace_match_diff -a22 -y -e trace=kcmp diff --git a/tests-m32/kcmp.c b/tests-m32/kcmp.c index cb497c9f..60cd3003 100644 --- a/tests-m32/kcmp.c +++ b/tests-m32/kcmp.c @@ -1,7 +1,7 @@ /* * Check decoding of kcmp syscall. * - * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com> + * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,15 +34,67 @@ #ifdef __NR_kcmp +# include <fcntl.h> +# include <stdarg.h> +# include <stdint.h> # include <stdio.h> +# include <string.h> # include <unistd.h> -# define KCMP_FILE 0 -# define KCMP_SYSVSEM 6 +# ifndef VERBOSE_FD +# define VERBOSE_FD 0 +# endif +/* + * We prefer to use system headers in order to catch some possible deviations in + * system's headers from our perception of reality, but happy to include our own + * definitions as well. + */ +# ifdef HAVE_LINUX_KCMP_H +# include <linux/kcmp.h> +# else +# define KCMP_FILE 0 +# define KCMP_VM 1 +# define KCMP_FILES 2 +# define KCMP_FS 3 +# define KCMP_SIGHAND 4 +# define KCMP_IO 5 +# define KCMP_SYSVSEM 6 +# endif + +/* All other kcmp types have been added atomically */ +# define KCMP_EPOLL_TFD 7 + +# ifndef HAVE_STRUCT_KCMP_EPOLL_SLOT +struct kcmp_epoll_slot { + uint32_t efd; + uint32_t tfd; + uint32_t toff; +}; +# endif + +static const kernel_ulong_t kcmp_max_type = KCMP_EPOLL_TFD; + +static const char null_path[] = "/dev/null"; +static const char zero_path[] = "/dev/zero"; + +# define NULL_FD 23 +# define ZERO_FD 42 + +static void +printpidfd(const char *prefix, pid_t pid, unsigned fd) +{ + printf("%s%d", prefix, fd); +} + +/* + * Last argument is optional and is used as follows: + * * When type is KCMP_EPOLL_TFD, it signalises whether idx2 is a valid + * pointer. + */ static void do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type, - const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2) + const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2, ...) { long rc; const char *errstr; @@ -57,11 +109,37 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type, else printf("%#x /* KCMP_??? */", (int) type); - if (type == KCMP_FILE) - printf(", %u, %u", (unsigned) idx1, (unsigned) idx2); - else if (type > KCMP_SYSVSEM) + if (type == KCMP_FILE) { + printpidfd(", ", pid1, idx1); + printpidfd(", ", pid2, idx2); + } else if (type == KCMP_EPOLL_TFD) { + va_list ap; + int valid_ptr; + + va_start(ap, idx2); + valid_ptr = va_arg(ap, int); + va_end(ap); + + printpidfd(", ", pid1, idx1); + printf(", "); + + if (valid_ptr) { + struct kcmp_epoll_slot *slot = + (struct kcmp_epoll_slot *) (uintptr_t) idx2; + + printpidfd("{efd=", pid2, slot->efd); + printpidfd(", tfd=", pid2, slot->tfd); + printf(", toff=%llu}", (unsigned long long) slot->toff); + } else { + if (idx2) + printf("%#llx", (unsigned long long) idx2); + else + printf("NULL"); + } + } else if (type > kcmp_max_type) { printf(", %#llx, %#llx", (unsigned long long) idx1, (unsigned long long) idx2); + } printf(") = %s\n", errstr); } @@ -79,18 +157,71 @@ main(void) (kernel_ulong_t) 0xdec0ded3dec0ded4ULL; static const kernel_ulong_t bogus_idx2 = (kernel_ulong_t) 0xba5e1e55deadc0deULL; + static const struct kcmp_epoll_slot slot_data[] = { + { 0xdeadc0de, 0xfacef157, 0xbadc0ded }, + { NULL_FD, ZERO_FD, 0 }, + { 0, 0, 0 }, + }; + static kernel_ulong_t ptr_check = + F8ILL_KULONG_SUPPORTED ? F8ILL_KULONG_MASK : 0; + + int fd; + unsigned i; + struct kcmp_epoll_slot *slot = tail_alloc(sizeof(*slot)); + + /* Open some files to test printpidfd */ + fd = open(null_path, O_RDONLY); + if (fd < 0) + perror_msg_and_fail("open(\"%s\")", null_path); + if (fd != NULL_FD) { + if (dup2(fd, NULL_FD) < 0) + perror_msg_and_fail("dup2(fd, NULL_FD)"); + close(fd); + } + + fd = open(zero_path, O_RDONLY); + if (fd < 0) + perror_msg_and_fail("open(\"%s\")", zero_path); + if (fd != ZERO_FD) { + if (dup2(fd, ZERO_FD) < 0) + perror_msg_and_fail("dup2(fd, ZERO_FD)"); + close(fd); + } + + close(0); /* Invalid values */ do_kcmp(bogus_pid1, bogus_pid2, bogus_type, NULL, bogus_idx1, bogus_idx2); - do_kcmp(0, 0, KCMP_SYSVSEM + 1, NULL, 0, 0); + do_kcmp(F8ILL_KULONG_MASK, F8ILL_KULONG_MASK, kcmp_max_type + 1, NULL, + 0, 0); /* KCMP_FILE is the only type which has additional args */ do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1, bogus_idx2); - /* Some type without additional args */ + do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); + + /* Types without additional args */ + do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_FILES), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_FS), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_SIGHAND), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_IO), bogus_idx1, bogus_idx2); do_kcmp(-1, -1, ARG_STR(KCMP_SYSVSEM), bogus_idx1, bogus_idx2); + /* KCMP_EPOLL_TFD checks */ + do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD), + F8ILL_KULONG_MASK | 2718281828U, ptr_check, 0); + do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD), + 3141592653U, (uintptr_t) slot + 1, 0); + + for (i = 0; i < ARRAY_SIZE(slot_data); i++) { + memcpy(slot, slot_data + i, sizeof(*slot)); + + do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD, + (uintptr_t) slot, 1); + } + puts("+++ exited with 0 +++"); return 0; diff --git a/tests-m32/kcmp.gen.test b/tests-m32/kcmp.gen.test index da79d7c1..c073a39e 100755 --- a/tests-m32/kcmp.gen.test +++ b/tests-m32/kcmp.gen.test @@ -1,4 +1,4 @@ #!/bin/sh -efu -# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit. +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit. . "${srcdir=.}/init.sh" -run_strace_match_diff -a27 +run_strace_match_diff -a22 diff --git a/tests-m32/list_sigaction_signum.c b/tests-m32/list_sigaction_signum.c new file mode 100644 index 00000000..13a78c68 --- /dev/null +++ b/tests-m32/list_sigaction_signum.c @@ -0,0 +1,57 @@ +/* + * List signal numbers that are valid arguments for sigaction syscall. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#include <signal.h> +#include <stdio.h> + +int +main(void) +{ + unsigned int i; + + for (i = 1; i < 32; ++i) { + static const struct sigaction ign = { .sa_handler = SIG_IGN }; + static const struct sigaction dfl = { .sa_handler = SIG_DFL }; + struct sigaction act; + + if (sigaction(i, &ign, NULL) || + sigaction(i, NULL, &act) || + ign.sa_handler != act.sa_handler || + sigaction(i, &dfl, NULL) || + sigaction(i, NULL, &act) || + dfl.sa_handler != act.sa_handler) + continue; + + printf("%u\n", i); + } + + return 0; +} diff --git a/tests-m32/membarrier.c b/tests-m32/membarrier.c index 330893b6..73dd3b02 100644 --- a/tests-m32/membarrier.c +++ b/tests-m32/membarrier.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org> + * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,10 +44,28 @@ main(void) printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n", sprintrc(-1)); if (saved_errno != ENOSYS) { - /* the test needs to be updated? */ - assert(syscall(__NR_membarrier, 0, 0) == 1); - puts("membarrier(MEMBARRIER_CMD_QUERY, 0)" - " = 0x1 (MEMBARRIER_CMD_SHARED)"); + const char *text; + int rc = syscall(__NR_membarrier, 0, 0); + + switch (rc) { + case 1: + text = "MEMBARRIER_CMD_SHARED"; + break; + case 1|8: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; + break; + case 1|8|16: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED|" + "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED"; + break; + default: + error_msg_and_fail("membarrier returned %#x, does" + " the test have to be updated?", rc); + } + printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n", + rc, text); } puts("+++ exited with 0 +++"); return 0; diff --git a/tests-m32/memfd_create.c b/tests-m32/memfd_create.c index 480fd177..4559b426 100644 --- a/tests-m32/memfd_create.c +++ b/tests-m32/memfd_create.c @@ -11,10 +11,11 @@ int main(void) { static const char text[] = "strace"; - int rc = syscall(__NR_memfd_create, text, 7); + int rc = syscall(__NR_memfd_create, text, 0xf); - printf("memfd_create(\"%s\", %s) = %d %s (%m)\n", - text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|0x4", rc, errno2name()); + printf("memfd_create(\"%s\", %s) = %s\n", + text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8", + sprintrc(rc)); puts("+++ exited with 0 +++"); return 0; diff --git a/tests-m32/netlink_crypto.c b/tests-m32/netlink_crypto.c index deb1644e..d15c17cf 100644 --- a/tests-m32/netlink_crypto.c +++ b/tests-m32/netlink_crypto.c @@ -78,9 +78,17 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = CRYPTO_MSG_DELALG; - nlh.nlmsg_flags = NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=CRYPTO_MSG_DELALG" + ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); + + nlh.nlmsg_type = CRYPTO_MSG_UPDATEALG; + nlh.nlmsg_flags = NLM_F_REPLACE; + rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u, type=CRYPTO_MSG_UPDATEALG" ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, NLM_F_REPLACE, diff --git a/tests-m32/netlink_netfilter.c b/tests-m32/netlink_netfilter.c index 2907c261..db2622eb 100644 --- a/tests-m32/netlink_netfilter.c +++ b/tests-m32/netlink_netfilter.c @@ -52,19 +52,19 @@ test_nlmsg_type(const int fd) ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); +# endif - nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | NFNL_MSG_BATCH_BEGIN; + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); - printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x" + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */" ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh.nlmsg_len, NFNL_MSG_BATCH_BEGIN, - (unsigned) sizeof(nlh), sprintrc(rc)); -# endif + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); - nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8); + nlh.nlmsg_type = 0xffff; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); - printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0" + printf("sendto(%d, {len=%u, type=0xff /* NFNL_SUBSYS_??? */<<8|0xff" ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); diff --git a/tests-m32/netlink_route.c b/tests-m32/netlink_route.c index 6af3b13a..a1c7d1f8 100644 --- a/tests-m32/netlink_route.c +++ b/tests-m32/netlink_route.c @@ -132,13 +132,12 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = RTM_DELLINK; - nlh.nlmsg_flags = NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=RTM_DELLINK" - ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}" + ", flags=NLM_F_NONREC, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh.nlmsg_len, NLM_F_REPLACE, - (unsigned) sizeof(nlh), sprintrc(rc)); + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); } static void diff --git a/tests-m32/netlink_xfrm.c b/tests-m32/netlink_xfrm.c index 27f62d1e..862a9f6e 100644 --- a/tests-m32/netlink_xfrm.c +++ b/tests-m32/netlink_xfrm.c @@ -76,9 +76,17 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = XFRM_MSG_DELSA; - nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=XFRM_MSG_DELSA" + ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); + + nlh.nlmsg_type = XFRM_MSG_ALLOCSPI; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE; + rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u, type=XFRM_MSG_ALLOCSPI" ", flags=NLM_F_ECHO|%#x, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, NLM_F_REPLACE, diff --git a/tests-m32/nfnetlink_acct.c b/tests-m32/nfnetlink_acct.c new file mode 100644 index 00000000..52cff99a --- /dev/null +++ b/tests-m32/nfnetlink_acct.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_acct.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|0xff /* NFNL_MSG_ACCT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_CREATE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_GET" + ", flags=NLM_F_REQUEST|NLM_F_MATCH, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_DEL; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_DEL" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H") + +#endif diff --git a/tests-m32/nfnetlink_acct.gen.test b/tests-m32/nfnetlink_acct.gen.test new file mode 100755 index 00000000..7db22769 --- /dev/null +++ b/tests-m32/nfnetlink_acct.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_cthelper.c b/tests-m32/nfnetlink_cthelper.c new file mode 100644 index 00000000..47fab768 --- /dev/null +++ b/tests-m32/nfnetlink_cthelper.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_cthelper.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|0xff /* NFNL_MSG_CTHELPER_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_DEL; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_DEL" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H") + +#endif diff --git a/tests-m32/nfnetlink_cthelper.gen.test b/tests-m32/nfnetlink_cthelper.gen.test new file mode 100755 index 00000000..661c949c --- /dev/null +++ b/tests-m32/nfnetlink_cthelper.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_ctnetlink.c b/tests-m32/nfnetlink_ctnetlink.c new file mode 100644 index 00000000..a227f38e --- /dev/null +++ b/tests-m32/nfnetlink_ctnetlink.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_conntrack.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H") + +#endif diff --git a/tests-m32/nfnetlink_ctnetlink.gen.test b/tests-m32/nfnetlink_ctnetlink.gen.test new file mode 100755 index 00000000..d4c4daaf --- /dev/null +++ b/tests-m32/nfnetlink_ctnetlink.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_ctnetlink_exp.c b/tests-m32/nfnetlink_ctnetlink_exp.c new file mode 100644 index 00000000..aa17cd52 --- /dev/null +++ b/tests-m32/nfnetlink_ctnetlink_exp.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_conntrack.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|0xff /* IPCTNL_MSG_EXP_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_EXCL; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW" + ", flags=NLM_F_REQUEST|NLM_F_EXCL, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_GET" + ", flags=NLM_F_REQUEST|NLM_F_ROOT, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H") + +#endif diff --git a/tests-m32/nfnetlink_ctnetlink_exp.gen.test b/tests-m32/nfnetlink_ctnetlink_exp.gen.test new file mode 100755 index 00000000..a5d83f9b --- /dev/null +++ b/tests-m32/nfnetlink_ctnetlink_exp.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_cttimeout.c b/tests-m32/nfnetlink_cttimeout.c new file mode 100644 index 00000000..e66dc24c --- /dev/null +++ b/tests-m32/nfnetlink_cttimeout.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_cttimeout.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|0xff /* IPCTNL_MSG_TIMEOUT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_APPEND; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_APPEND, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ATOMIC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_GET" + ", flags=NLM_F_REQUEST|NLM_F_ATOMIC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H") + +#endif diff --git a/tests-m32/nfnetlink_cttimeout.gen.test b/tests-m32/nfnetlink_cttimeout.gen.test new file mode 100755 index 00000000..e197f000 --- /dev/null +++ b/tests-m32/nfnetlink_cttimeout.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_ipset.c b/tests-m32/nfnetlink_ipset.c new file mode 100644 index 00000000..b0d4a7d1 --- /dev/null +++ b/tests-m32/nfnetlink_ipset.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/ipset/ip_set.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | IPSET_CMD_NONE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_IPSET<<8|IPSET_CMD_NONE" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_IPSET<<8|0xff /* IPSET_CMD_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_IPSET_IP_SET_H") + +#endif diff --git a/tests-m32/nfnetlink_ipset.gen.test b/tests-m32/nfnetlink_ipset.gen.test new file mode 100755 index 00000000..418437a7 --- /dev/null +++ b/tests-m32/nfnetlink_ipset.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_nft_compat.c b/tests-m32/nfnetlink_nft_compat.c new file mode 100644 index 00000000..072ee571 --- /dev/null +++ b/tests-m32/nfnetlink_nft_compat.c @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nf_tables_compat.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|0xff /* NFNL_MSG_COMPAT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H") + +#endif diff --git a/tests-m32/nfnetlink_nft_compat.gen.test b/tests-m32/nfnetlink_nft_compat.gen.test new file mode 100755 index 00000000..c3dc8907 --- /dev/null +++ b/tests-m32/nfnetlink_nft_compat.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_nftables.c b/tests-m32/nfnetlink_nftables.c new file mode 100644 index 00000000..66e5fe94 --- /dev/null +++ b/tests-m32/nfnetlink_nftables.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nf_tables.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|0xff /* NFT_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_GETTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_GETTABLE" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_DELTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_DELTABLE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_H") + +#endif diff --git a/tests-m32/nfnetlink_nftables.gen.test b/tests-m32/nfnetlink_nftables.gen.test new file mode 100755 index 00000000..25e90e85 --- /dev/null +++ b/tests-m32/nfnetlink_nftables.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_osf.c b/tests-m32/nfnetlink_osf.c new file mode 100644 index 00000000..a6dbb7e6 --- /dev/null +++ b/tests-m32/nfnetlink_osf.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_XT_OSF_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/ip.h> +# include <linux/tcp.h> +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/xt_osf.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | OSF_MSG_ADD; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_OSF<<8|OSF_MSG_ADD" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_OSF<<8|0xff /* OSF_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_XT_OSF_H") + +#endif diff --git a/tests-m32/nfnetlink_osf.gen.test b/tests-m32/nfnetlink_osf.gen.test new file mode 100755 index 00000000..2689574a --- /dev/null +++ b/tests-m32/nfnetlink_osf.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_queue.c b/tests-m32/nfnetlink_queue.c new file mode 100644 index 00000000..73ebd9aa --- /dev/null +++ b/tests-m32/nfnetlink_queue.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_queue.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_QUEUE<<8|NFQNL_MSG_PACKET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_QUEUE<<8|0xff /* NFQNL_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H") + +#endif diff --git a/tests-m32/nfnetlink_queue.gen.test b/tests-m32/nfnetlink_queue.gen.test new file mode 100755 index 00000000..739fb17d --- /dev/null +++ b/tests-m32/nfnetlink_queue.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nfnetlink_ulog.c b/tests-m32/nfnetlink_ulog.c new file mode 100644 index 00000000..31eb30f1 --- /dev/null +++ b/tests-m32/nfnetlink_ulog.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_log.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | NFULNL_MSG_PACKET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ULOG<<8|NFULNL_MSG_PACKET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ULOG<<8|0xff /* NFULNL_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H") + +#endif diff --git a/tests-m32/nfnetlink_ulog.gen.test b/tests-m32/nfnetlink_ulog.gen.test new file mode 100755 index 00000000..850ebafc --- /dev/null +++ b/tests-m32/nfnetlink_ulog.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nlattr_inet_diag_msg.c b/tests-m32/nlattr_inet_diag_msg.c index 5666d74b..ccc62aed 100644 --- a/tests-m32/nlattr_inet_diag_msg.c +++ b/tests-m32/nlattr_inet_diag_msg.c @@ -182,6 +182,11 @@ main(void) INET_DIAG_MARK, pattern, mark, printf("%u", mark)); + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_inet_diag_msg, print_inet_diag_msg, + INET_DIAG_CLASS_ID, pattern, mark, + printf("%u", mark)); + static const uint8_t shutdown = 0xcd; TEST_NLATTR(fd, nlh0, hdrlen, init_inet_diag_msg, print_inet_diag_msg, INET_DIAG_SHUTDOWN, diff --git a/tests-m32/nlattr_mdba_mdb_entry.c b/tests-m32/nlattr_mdba_mdb_entry.c new file mode 100644 index 00000000..124fe1d4 --- /dev/null +++ b/tests-m32/nlattr_mdba_mdb_entry.c @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_BR_PORT_MSG + +# include <stdio.h> +# include "test_nlattr.h" +# include <arpa/inet.h> +# include <linux/if_bridge.h> +# include <linux/rtnetlink.h> + +# ifndef MDB_TEMPORARY +# define MDB_TEMPORARY 0 +# endif +# ifndef MDBA_MDB_ENTRY_INFO +# define MDBA_MDB_ENTRY_INFO 1 +# endif +# ifndef MDBA_MDB_EATTR_TIMER +# define MDBA_MDB_EATTR_TIMER 1 +# endif + +const unsigned int hdrlen = sizeof(struct br_port_msg); + +static void +init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + unsigned int len = msg_len; + + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = len, + .nlmsg_type = RTM_GETMDB, + .nlmsg_flags = NLM_F_DUMP + ); + + struct br_port_msg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct br_port_msg, msg, + .family = AF_UNIX, + .ifindex = ifindex_lo() + ); + + struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg)); + len -= NLMSG_SPACE(hdrlen); + SET_STRUCT(struct nlattr, nla, + .nla_len = len, + .nla_type = MDBA_MDB + ); + + nla = nla + 1; + len -= NLA_HDRLEN; + SET_STRUCT(struct nlattr, nla, + .nla_len = len, + .nla_type = MDBA_MDB_ENTRY + ); +} + +static void +print_br_port_msg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {family=AF_UNIX" + ", ifindex=" IFINDEX_LO_STR "}" + ", {{nla_len=%u, nla_type=MDBA_MDB}" + ", {{nla_len=%u, nla_type=MDBA_MDB_ENTRY}", + msg_len, msg_len - NLMSG_SPACE(hdrlen), + msg_len - NLMSG_SPACE(hdrlen) - NLA_HDRLEN); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + const unsigned int nla_type = 0xffff & NLA_TYPE_MASK; + char nla_type_str[256]; + sprintf(nla_type_str, "%#x /* MDBA_MDB_ENTRY_??? */", nla_type); + TEST_NLATTR_(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2, + init_br_port_msg, print_br_port_msg, + nla_type, nla_type_str, + 4, pattern, 4, + print_quoted_hex(pattern, 4); + printf("}}")); + +# ifdef HAVE_STRUCT_BR_MDB_ENTRY + struct br_mdb_entry entry = { + .ifindex = ifindex_lo(), + .state = MDB_TEMPORARY, +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + .flags = MDB_FLAGS_OFFLOAD, +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + .vid = 0xcdef, +# endif + .addr = { + .proto = htons(AF_UNSPEC) + } + }; + + memcpy(&entry.addr.u, pattern, sizeof(entry.addr.u)); + TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen, + init_br_port_msg, print_br_port_msg, + MDBA_MDB_ENTRY_INFO, pattern, entry, 2, + printf("{ifindex=" IFINDEX_LO_STR); + printf(", state=MDB_TEMPORARY"); +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + printf(", flags=MDB_FLAGS_OFFLOAD"); +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + PRINT_FIELD_U(", ", entry, vid); +# endif + printf(", addr={u="); + print_quoted_hex(&entry.addr.u, + sizeof(entry.addr.u)); + printf(", proto=htons(AF_UNSPEC)}}")); + + static const struct nlattr nla = { + .nla_len = sizeof(nla), + .nla_type = MDBA_MDB_EATTR_TIMER + }; + char buf[NLMSG_ALIGN(sizeof(entry)) + sizeof(nla)]; + memcpy(buf, &entry, sizeof(entry)); + memcpy(buf + NLMSG_ALIGN(sizeof(entry)), &nla, sizeof(nla)); + TEST_NLATTR(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2, + init_br_port_msg, print_br_port_msg, + MDBA_MDB_ENTRY_INFO, sizeof(buf), buf, sizeof(buf), + printf("{ifindex=" IFINDEX_LO_STR); + printf(", state=MDB_TEMPORARY"); +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + printf(", flags=MDB_FLAGS_OFFLOAD"); +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + PRINT_FIELD_U(", ", entry, vid); +# endif + printf(", addr={u="); + print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u)); + printf(", proto=htons(AF_UNSPEC)}}" + ", {nla_len=%u, nla_type=MDBA_MDB_EATTR_TIMER}}}", + nla.nla_len)); +# endif /* HAVE_STRUCT_BR_MDB_ENTRY */ + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG") + +#endif diff --git a/tests-m32/nlattr_mdba_mdb_entry.gen.test b/tests-m32/nlattr_mdba_mdb_entry.gen.test new file mode 100755 index 00000000..67253e8e --- /dev/null +++ b/tests-m32/nlattr_mdba_mdb_entry.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nlattr_mdba_router_port.c b/tests-m32/nlattr_mdba_router_port.c new file mode 100644 index 00000000..af908cd8 --- /dev/null +++ b/tests-m32/nlattr_mdba_router_port.c @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_BR_PORT_MSG + +# include <stdio.h> +# include "test_nlattr.h" +# include <linux/if_bridge.h> +# include <linux/rtnetlink.h> + +# ifndef MDBA_ROUTER +# define MDBA_ROUTER 2 +# endif +# ifndef MDBA_ROUTER_PORT +# define MDBA_ROUTER_PORT 1 +# endif +# ifndef MDBA_ROUTER_PATTR_TYPE +# define MDBA_ROUTER_PATTR_TYPE 2 +# endif +# ifndef MDB_RTR_TYPE_DISABLED +# define MDB_RTR_TYPE_DISABLED 0 +# endif + +const unsigned int hdrlen = sizeof(struct br_port_msg); + +static void +init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETMDB, + .nlmsg_flags = NLM_F_DUMP + ); + + struct br_port_msg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct br_port_msg, msg, + .family = AF_UNIX, + .ifindex = ifindex_lo() + ); + + struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = MDBA_ROUTER + ); +} + +static void +print_br_port_msg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {family=AF_UNIX" + ", ifindex=" IFINDEX_LO_STR "}" + ", {{nla_len=%u, nla_type=MDBA_ROUTER}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + const uint32_t ifindex = ifindex_lo(); + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_br_port_msg, print_br_port_msg, + MDBA_ROUTER_PORT, pattern, ifindex, + printf(IFINDEX_LO_STR)); + + const uint8_t type = MDB_RTR_TYPE_DISABLED; + static const struct nlattr nla = { + .nla_len = NLA_HDRLEN + sizeof(type), + .nla_type = MDBA_ROUTER_PATTR_TYPE + }; + char buf[NLMSG_ALIGN(ifindex) + NLA_HDRLEN + sizeof(type)]; + memcpy(buf, &ifindex, sizeof(ifindex)); + memcpy(buf + NLMSG_ALIGN(ifindex), &nla, sizeof(nla)); + memcpy(buf + NLMSG_ALIGN(ifindex) + NLA_HDRLEN, &type, sizeof(type)); + TEST_NLATTR(fd, nlh0 - NLA_HDRLEN, hdrlen + NLA_HDRLEN, + init_br_port_msg, print_br_port_msg, + MDBA_ROUTER_PORT, sizeof(buf), buf, sizeof(buf), + printf(IFINDEX_LO_STR + ", {{nla_len=%u, nla_type=MDBA_ROUTER_PATTR_TYPE}" + ", MDB_RTR_TYPE_DISABLED}}", + nla.nla_len)); + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG") + +#endif diff --git a/tests-m32/nlattr_mdba_router_port.gen.test b/tests-m32/nlattr_mdba_router_port.gen.test new file mode 100755 index 00000000..ce9ea148 --- /dev/null +++ b/tests-m32/nlattr_mdba_router_port.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nlattr_tc_stats.c b/tests-m32/nlattr_tc_stats.c new file mode 100644 index 00000000..dd76cc7d --- /dev/null +++ b/tests-m32/nlattr_tc_stats.c @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_GNET_STATS_BASIC + +# include <stdio.h> +# include <stddef.h> +# include "test_nlattr.h" +# include <linux/gen_stats.h> +# include <linux/rtnetlink.h> + +const unsigned int hdrlen = sizeof(struct tcmsg); + +static void +init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETQDISC, + .nlmsg_flags = NLM_F_DUMP + ); + + struct tcmsg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct tcmsg, msg, + .tcm_family = AF_UNIX, + .tcm_ifindex = ifindex_lo() + ); + + struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = TCA_STATS2 + ); +} + +static void +print_tcmsg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {tcm_family=AF_UNIX" + ", tcm_ifindex=" IFINDEX_LO_STR + ", tcm_handle=0, tcm_parent=0, tcm_info=0}" + ", {{nla_len=%u, nla_type=TCA_STATS2}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + static const struct gnet_stats_basic sb = { + .bytes = 0xabcdebdafefeadeb, + .packets = 0xbdcdeabf + }; + char buf[offsetofend(struct gnet_stats_basic, packets)]; + memcpy(buf, &sb, sizeof(buf)); + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_BASIC, pattern, buf, + PRINT_FIELD_U("{", sb, bytes); + PRINT_FIELD_U(", ", sb, packets); + printf("}")); + +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST + static const struct gnet_stats_rate_est est = { + .bps = 0xebcdaebd, + .pps = 0xabdceade, + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_RATE_EST, pattern, est, + PRINT_FIELD_U("{", est, bps); + PRINT_FIELD_U(", ", est, pps); + printf("}")); +#endif + +#ifdef HAVE_STRUCT_GNET_STATS_QUEUE + static const struct gnet_stats_queue qstats = { + .qlen = 0xabcdeabd, + .backlog = 0xbcdaebad, + .drops = 0xcdbeaedb, + .requeues = 0xdebaefab, + .overlimits = 0xefaebade + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_QUEUE, pattern, qstats, + PRINT_FIELD_U("{", qstats, qlen); + PRINT_FIELD_U(", ", qstats, backlog); + PRINT_FIELD_U(", ", qstats, drops); + PRINT_FIELD_U(", ", qstats, requeues); + PRINT_FIELD_U(", ", qstats, overlimits); + printf("}")); +#endif + +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64 + static const struct gnet_stats_rate_est64 est64 = { + .bps = 0xacbdcdefafecaebf, + .pps = 0xcdabeabdfeabceaf + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_RATE_EST64, pattern, est64, + PRINT_FIELD_U("{", est64, bps); + PRINT_FIELD_U(", ", est64, pps); + printf("}")); +#endif + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_GNET_STATS_BASIC") + +#endif diff --git a/tests-m32/nlattr_tc_stats.gen.test b/tests-m32/nlattr_tc_stats.gen.test new file mode 100755 index 00000000..72780d4a --- /dev/null +++ b/tests-m32/nlattr_tc_stats.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nlattr_tca_stab.c b/tests-m32/nlattr_tca_stab.c new file mode 100644 index 00000000..de6d3569 --- /dev/null +++ b/tests-m32/nlattr_tca_stab.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#include <stdio.h> +#include "test_nlattr.h" +#include <linux/pkt_sched.h> +#include <linux/rtnetlink.h> + +#ifndef TCA_STAB +# define TCA_STAB 8 +#endif +#ifndef TCA_STAB_DATA +# define TCA_STAB_DATA 2 +#endif + +const unsigned int hdrlen = sizeof(struct tcmsg); + +static void +init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETQDISC, + .nlmsg_flags = NLM_F_DUMP + ); + + struct tcmsg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct tcmsg, msg, + .tcm_family = AF_UNIX, + .tcm_ifindex = ifindex_lo() + ); + + struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = TCA_STAB + ); +} + +static void +print_tcmsg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {tcm_family=AF_UNIX" + ", tcm_ifindex=" IFINDEX_LO_STR + ", tcm_handle=0, tcm_parent=0, tcm_info=0}" + ", {{nla_len=%u, nla_type=TCA_STAB}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +static void +print_uint16(const uint16_t *p) +{ + printf("%u", *p); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + +#ifdef HAVE_STRUCT_TC_SIZESPEC + static const struct tc_sizespec s = { + .cell_log = 0xab, + .size_log = 0xcd, + .cell_align = 0xefab, + .overhead = 0xcdadeefa, + .linklayer = 0xefbaafeb, + .mpu = 0xfebfaefb, + .mtu = 0xacdbefab, + .tsize = 0xbdeaabed + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STAB_BASE, pattern, s, + PRINT_FIELD_U("{", s, cell_log); + PRINT_FIELD_U(", ", s, size_log); + PRINT_FIELD_D(", ", s, cell_align); + PRINT_FIELD_D(", ", s, overhead); + PRINT_FIELD_U(", ", s, linklayer); + PRINT_FIELD_U(", ", s, mpu); + PRINT_FIELD_U(", ", s, mtu); + PRINT_FIELD_U(", ", s, tsize); + printf("}")); +#endif + + uint16_t data[2] = { 0xacbd, 0xefba }; + TEST_NESTED_NLATTR_ARRAY(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STAB_DATA, pattern, data, print_uint16); + + puts("+++ exited with 0 +++"); + return 0; +} diff --git a/tests-m32/nlattr_tca_stab.gen.test b/tests-m32/nlattr_tca_stab.gen.test new file mode 100755 index 00000000..14cd1a54 --- /dev/null +++ b/tests-m32/nlattr_tca_stab.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-m32/nlattr_tcmsg.c b/tests-m32/nlattr_tcmsg.c index 00b7ae46..32ce4790 100644 --- a/tests-m32/nlattr_tcmsg.c +++ b/tests-m32/nlattr_tcmsg.c @@ -29,7 +29,9 @@ #include "tests.h" #include <stdio.h> +#include <stddef.h> #include "test_nlattr.h" +#include <linux/pkt_sched.h> #include <linux/rtnetlink.h> static void @@ -80,6 +82,42 @@ main(void) 4, pattern, 4, print_quoted_hex(pattern, 4)); + static const struct tc_stats st = { + .bytes = 0xabcdcdbefeadefac, + .packets = 0xbcdeaefd, + .drops = 0xcdedafed, + .overlimits = 0xdcdbefad, + .bps = 0xefaebfad, + .pps = 0xfefbaedb, + .qlen = 0xabcdefab, + .backlog = 0xbdeabeab + }; + char buf[offsetofend(struct tc_stats, backlog)]; + memcpy(buf, &st, sizeof(buf)); + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS, pattern, buf, + PRINT_FIELD_U("{", st, bytes); + PRINT_FIELD_U(", ", st, packets); + PRINT_FIELD_U(", ", st, drops); + PRINT_FIELD_U(", ", st, overlimits); + PRINT_FIELD_U(", ", st, bps); + PRINT_FIELD_U(", ", st, pps); + PRINT_FIELD_U(", ", st, qlen); + PRINT_FIELD_U(", ", st, backlog); + printf("}")); + + static const struct tc_estimator est = { + .interval = 0xcd, + .ewma_log = 0xab + }; + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_RATE, pattern, est, + PRINT_FIELD_D("{", est, interval); + PRINT_FIELD_U(", ", est, ewma_log); + printf("}")); + puts("+++ exited with 0 +++"); return 0; } diff --git a/tests-m32/options-syntax.test b/tests-m32/options-syntax.test index b4d9be70..2e459c96 100755 --- a/tests-m32/options-syntax.test +++ b/tests-m32/options-syntax.test @@ -80,16 +80,21 @@ check_h "invalid -s argument: '-42'" -s -42 check_h "invalid -s argument: '1073741824'" -s 1073741824 check_h "invalid -I argument: '5'" -I 5 -cat > "$EXP" << '__EOF__' -strace: must have PROG [ARGS] or -p PID -Try 'strace -h' for more information. -__EOF__ ../zeroargc "$strace_exp" /bin/true 2> "$LOG" && dump_log_and_fail_with \ 'zeroargc strace failed to handle the error properly' -match_diff "$LOG" "$EXP" || - dump_log_and_fail_with \ - 'zeroargc strace failed to print expected diagnostics' +cat > "$EXP" << __EOF__ +$strace_exp: must have PROG [ARGS] or -p PID +Try '$strace_exp -h' for more information. +__EOF__ +diff -u -- "$EXP" "$LOG" > /dev/null || { + cat > "$EXP" <<- '__EOF__' + strace: must have PROG [ARGS] or -p PID + Try 'strace -h' for more information. + __EOF__ + match_diff "$LOG" "$EXP" \ + "zeroargc $STRACE $args output mismatch" +} if [ -n "${UID-}" ]; then if [ "${UID-}" = 0 ]; then diff --git a/tests-m32/prctl-seccomp-filter-v.c b/tests-m32/prctl-seccomp-filter-v.c index cfd5d3dd..7a65d898 100644 --- a/tests-m32/prctl-seccomp-filter-v.c +++ b/tests-m32/prctl-seccomp-filter-v.c @@ -114,7 +114,7 @@ main(void) PRINT_DENY_SYSCALL(sync, EBUSY), PRINT_DENY_SYSCALL(setsid, EPERM), - printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)"); + printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)"); puts("]}) = 0"); puts("+++ exited with 0 +++"); diff --git a/tests-m32/pure_executables.am b/tests-m32/pure_executables.am index 9dc532a6..2cae9ae5 100644 --- a/tests-m32/pure_executables.am +++ b/tests-m32/pure_executables.am @@ -123,6 +123,7 @@ PURE_EXECUTABLES = \ ipc_sem \ ipc_shm \ kcmp \ + kcmp-y \ kexec_file_load \ kexec_load \ keyctl \ @@ -180,6 +181,17 @@ PURE_EXECUTABLES = \ netlink_sock_diag \ netlink_xfrm \ newfstatat \ + nfnetlink_acct \ + nfnetlink_cthelper \ + nfnetlink_ctnetlink \ + nfnetlink_ctnetlink_exp \ + nfnetlink_cttimeout \ + nfnetlink_nft_compat \ + nfnetlink_nftables \ + nfnetlink_ipset \ + nfnetlink_osf \ + nfnetlink_queue \ + nfnetlink_ulog \ nlattr \ nlattr_crypto_user_alg \ nlattr_br_port_msg \ @@ -194,6 +206,8 @@ PURE_EXECUTABLES = \ nlattr_inet_diag_msg \ nlattr_inet_diag_req_compat \ nlattr_inet_diag_req_v2 \ + nlattr_mdba_mdb_entry \ + nlattr_mdba_router_port \ nlattr_ndmsg \ nlattr_ndtmsg \ nlattr_netconfmsg \ @@ -203,6 +217,8 @@ PURE_EXECUTABLES = \ nlattr_rtgenmsg \ nlattr_rtmsg \ nlattr_smc_diag_msg \ + nlattr_tc_stats \ + nlattr_tca_stab \ nlattr_tcamsg \ nlattr_tcmsg \ nlattr_unix_diag_msg \ @@ -283,6 +299,7 @@ PURE_EXECUTABLES = \ sched_xetscheduler \ sched_yield \ seccomp-filter \ + seccomp_get_action_avail \ select \ semop \ sendfile \ diff --git a/tests-m32/pure_executables.list b/tests-m32/pure_executables.list index dade57b0..d98b17db 100755 --- a/tests-m32/pure_executables.list +++ b/tests-m32/pure_executables.list @@ -122,6 +122,7 @@ ipc_msgbuf ipc_sem ipc_shm kcmp +kcmp-y kexec_file_load kexec_load keyctl @@ -179,6 +180,17 @@ netlink_selinux netlink_sock_diag netlink_xfrm newfstatat +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_ctnetlink +nfnetlink_ctnetlink_exp +nfnetlink_cttimeout +nfnetlink_nft_compat +nfnetlink_nftables +nfnetlink_ipset +nfnetlink_osf +nfnetlink_queue +nfnetlink_ulog nlattr nlattr_crypto_user_alg nlattr_br_port_msg @@ -193,6 +205,8 @@ nlattr_ifla_xdp nlattr_inet_diag_msg nlattr_inet_diag_req_compat nlattr_inet_diag_req_v2 +nlattr_mdba_mdb_entry +nlattr_mdba_router_port nlattr_ndmsg nlattr_ndtmsg nlattr_netconfmsg @@ -202,6 +216,8 @@ nlattr_packet_diag_msg nlattr_rtgenmsg nlattr_rtmsg nlattr_smc_diag_msg +nlattr_tc_stats +nlattr_tca_stab nlattr_tcamsg nlattr_tcmsg nlattr_unix_diag_msg @@ -282,6 +298,7 @@ sched_xetparam sched_xetscheduler sched_yield seccomp-filter +seccomp_get_action_avail select semop sendfile diff --git a/tests-m32/seccomp-filter-v.c b/tests-m32/seccomp-filter-v.c index e419c6cb..34ab3b58 100644 --- a/tests-m32/seccomp-filter-v.c +++ b/tests-m32/seccomp-filter-v.c @@ -95,7 +95,7 @@ main(void) tprintf("%s", ""); static const char kill_stmt_txt[] = - "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)"; + "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)"; struct sock_filter *const filter = tail_memdup(filter_c, sizeof(filter_c)); struct sock_filter *const big_filter = @@ -136,7 +136,8 @@ main(void) prog->filter = big_filter; prog->len = BPF_MAXINSNS + 1; tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[", - "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", prog->len); + "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc", + prog->len); for (i = 0; i < BPF_MAXINSNS; ++i) { if (i) tprintf(", "); diff --git a/tests-m32/seccomp-filter.c b/tests-m32/seccomp-filter.c index 6e009823..7bc76560 100644 --- a/tests-m32/seccomp-filter.c +++ b/tests-m32/seccomp-filter.c @@ -55,12 +55,13 @@ main(void) prog->len = N; rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -1, prog); printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=%p})" - " = %ld %s (%m)\n", "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", + " = %ld %s (%m)\n", + "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc", prog->len, prog->filter, rc, errno2name()); - rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -2L, efault); + rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -4L, efault); printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n", - "0xfffffffe /* SECCOMP_FILTER_FLAG_??? */", + "0xfffffffc /* SECCOMP_FILTER_FLAG_??? */", efault, rc, errno2name()); puts("+++ exited with 0 +++"); diff --git a/tests-m32/seccomp_get_action_avail.c b/tests-m32/seccomp_get_action_avail.c new file mode 100644 index 00000000..ed231e17 --- /dev/null +++ b/tests-m32/seccomp_get_action_avail.c @@ -0,0 +1,125 @@ +/* + * Check decoding of seccomp SECCOMP_GET_ACTION_AVAIL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <asm/unistd.h> + +#ifdef __NR_seccomp + +# include <stdio.h> +# include <stdint.h> +# include <unistd.h> + +# ifdef HAVE_LINUX_SECCOMP_H +# include <linux/seccomp.h> +# endif + +# ifndef SECCOMP_GET_ACTION_AVAIL +# define SECCOMP_GET_ACTION_AVAIL 2 +# endif + +static const char *errstr; + +static long +k_seccomp(const kernel_ulong_t op, const kernel_ulong_t flags, + const kernel_ulong_t args) +{ + const long rc = syscall(__NR_seccomp, op, flags, args); + errstr = sprintrc(rc); + return rc; +} + +int +main(void) +{ + TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, act); + kernel_ulong_t op = (kernel_ulong_t) 0xfacefeed00000000ULL + | SECCOMP_GET_ACTION_AVAIL; + kernel_ulong_t flags = (kernel_ulong_t) 0xdeadbeef00000000ULL; + unsigned int i; + + struct { + uint32_t val; + const char *str; + } actions [] = { + { 0, "SECCOMP_RET_KILL_THREAD" }, +# ifdef SECCOMP_RET_KILL_PROCESS + { ARG_STR(SECCOMP_RET_KILL_PROCESS) }, +# endif +# ifdef SECCOMP_RET_TRAP + { ARG_STR(SECCOMP_RET_TRAP) }, +# endif +# ifdef SECCOMP_RET_ERRNO + { ARG_STR(SECCOMP_RET_ERRNO) }, +# endif +# ifdef SECCOMP_RET_TRACE + { ARG_STR(SECCOMP_RET_TRACE) }, +# endif +# ifdef SECCOMP_RET_LOG + { ARG_STR(SECCOMP_RET_LOG) }, +# endif +# ifdef SECCOMP_RET_ALLOW + { ARG_STR(SECCOMP_RET_ALLOW) }, +# endif + { 0xffffffff, "0xffffffff /* SECCOMP_RET_??? */" } + }; + + for (i = 0; i < ARRAY_SIZE(actions); ++i) { + *act = actions[i].val; + k_seccomp(op, flags, (uintptr_t) act); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, [%s]) = %s\n", + actions[i].str, errstr); + } + + *act = actions[0].val; + + k_seccomp(op, flags, (uintptr_t) (act + 1)); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %p) = %s\n", + act + 1, errstr); + + if (F8ILL_KULONG_SUPPORTED) { + k_seccomp(op, flags, f8ill_ptr_to_kulong(act)); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %#jx) = %s\n", + (uintmax_t) f8ill_ptr_to_kulong(act), errstr); + } + + flags |= 0xcafef00d; + k_seccomp(op, flags, 0); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, %u, NULL) = %s\n", + (unsigned int) flags, errstr); + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("__NR_seccomp") + +#endif diff --git a/tests-m32/seccomp_get_action_avail.gen.test b/tests-m32/seccomp_get_action_avail.gen.test new file mode 100755 index 00000000..49974510 --- /dev/null +++ b/tests-m32/seccomp_get_action_avail.gen.test @@ -0,0 +1,4 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp_get_action_avail -e trace=seccomp); do not edit. +. "${srcdir=.}/init.sh" +run_strace_match_diff -e trace=seccomp diff --git a/tests-m32/set_sigblock.c b/tests-m32/set_sigblock.c new file mode 100644 index 00000000..4786322c --- /dev/null +++ b/tests-m32/set_sigblock.c @@ -0,0 +1,53 @@ +/* + * Execute a command with the specified signal blocked/unblocked. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> +#include <unistd.h> + +int +main(int ac, char **av) +{ + if (ac < 4) + error_msg_and_fail("usage: set_sigblock 0|1 signum path..."); + + const int block = atoi(av[1]); + const int signum = atoi(av[2]); + sigset_t mask; + + sigemptyset(&mask); + if (sigaddset(&mask, signum)) + perror_msg_and_fail("sigaddset: %s", av[2]); + if (sigprocmask(block ? SIG_BLOCK : SIG_UNBLOCK, &mask, NULL)) + perror_msg_and_fail("sigprocmask"); + + execvp(av[3], av + 3); + perror_msg_and_fail("execvp: %s", av[3]); +} diff --git a/tests-m32/set_sigign.c b/tests-m32/set_sigign.c new file mode 100644 index 00000000..0319fed3 --- /dev/null +++ b/tests-m32/set_sigign.c @@ -0,0 +1,49 @@ +/* + * Execute a command with a signal handler set to SIG_IGN/SIG_DFL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> +#include <unistd.h> + +int +main(int ac, char **av) +{ + if (ac < 4) + error_msg_and_fail("usage: set_sigign 0|1 signum path..."); + + const int ign = atoi(av[1]); + const int signum = atoi(av[2]); + + if (signal(signum, ign ? SIG_IGN : SIG_DFL) == SIG_ERR) + perror_msg_and_fail("signal: %s", av[2]); + + execvp(av[3], av + 3); + perror_msg_and_fail("execvp: %s", av[3]); +} diff --git a/tests-m32/sigblock.test b/tests-m32/sigblock.test new file mode 100755 index 00000000..ddbe2dea --- /dev/null +++ b/tests-m32/sigblock.test @@ -0,0 +1,22 @@ +#!/bin/sh + +# Check signal mask transparency. +# Starting with commit v4.17-5-gf83b49b strace is expected +# to forward the signal mask to tracees unchanged. + +. "${srcdir=.}/init.sh" + +run_prog ../list_sigaction_signum > /dev/null +saved_STRACE="$STRACE" + +for sig in $(../list_sigaction_signum); do + for block in 0 1; do + set_cmd="../set_sigblock $block $sig" + check_cmd="../check_sigblock $block $sig" + run_prog $set_cmd $check_cmd + STRACE="$set_cmd $saved_STRACE" + for i in '' -I1 -I2 -I3 -I4; do + run_strace $i -enone $check_cmd + done + done +done diff --git a/tests-m32/sigign.test b/tests-m32/sigign.test new file mode 100755 index 00000000..3164e72e --- /dev/null +++ b/tests-m32/sigign.test @@ -0,0 +1,22 @@ +#!/bin/sh + +# Check signal disposition transparency. +# Starting with commit v4.17-8-ge97a66f strace is expected +# to forward the signal disposition to tracees unchanged. + +. "${srcdir=.}/init.sh" + +run_prog ../list_sigaction_signum > /dev/null +saved_STRACE="$STRACE" + +for sig in $(../list_sigaction_signum); do + for ign in 0 1; do + set_cmd="../set_sigign $ign $sig" + check_cmd="../check_sigign $ign $sig" + run_prog $set_cmd $check_cmd + STRACE="$set_cmd $saved_STRACE" + for i in '' -I1 -I2 -I3 -I4; do + run_strace $i -enone $check_cmd + done + done +done diff --git a/tests-m32/test_nlattr.h b/tests-m32/test_nlattr.h index 048d5475..43f467ff 100644 --- a/tests-m32/test_nlattr.h +++ b/tests-m32/test_nlattr.h @@ -203,14 +203,75 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) printf("]")); \ } while (0) -#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \ - init_msg_, print_msg_, \ - nla_type_, pattern_, obj_, ...) \ +#define TEST_NESTED_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, nla_type_str_, \ + pattern_, obj_, depth_, ...) \ do { \ const unsigned int plen = \ sizeof(obj_) - 1 > DEFAULT_STRLEN \ ? DEFAULT_STRLEN : (int) sizeof(obj_) - 1; \ /* len < sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + plen, (pattern_), plen, \ + print_quoted_hex((pattern_), plen); \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + /* short read of sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + sizeof(obj_), \ + (pattern_), sizeof(obj_) - 1, \ + printf("%p", RTA_DATA(TEST_NLATTR_nla)); \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + /* sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + sizeof(obj_), \ + &(obj_), sizeof(obj_), \ + __VA_ARGS__; \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + } while (0) + +#define TEST_NESTED_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, \ + depth_, ...) \ + TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + (pattern_), (obj_), (depth_), \ + __VA_ARGS__) + +#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, ...) \ + TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + (pattern_), (obj_), 1, \ + __VA_ARGS__) + +#define TEST_NESTED_NLATTR_ARRAY(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, print_elem_)\ + do { \ + const unsigned int plen = \ + sizeof((obj_)[0]) - 1 > DEFAULT_STRLEN \ + ? DEFAULT_STRLEN : (int) sizeof((obj_)[0]) - 1; \ + /* len < sizeof((obj_)[0]) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ (init_msg_), (print_msg_), \ @@ -218,15 +279,36 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) plen, (pattern_), plen, \ print_quoted_hex((pattern_), plen); \ printf("}")); \ + /* sizeof((obj_)[0]) < len < sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ + (hdrlen_) + NLA_HDRLEN, \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + sizeof(obj_) - 1, \ + &(obj_), sizeof(obj_) - 1, \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf("]}")); \ /* short read of sizeof(obj_) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ (init_msg_), (print_msg_), \ (nla_type_), #nla_type_, \ sizeof(obj_), \ - (pattern_), sizeof(obj_) - 1, \ - printf("%p}", \ - RTA_DATA(TEST_NLATTR_nla))); \ + &(obj_), sizeof(obj_) - 1, \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf(", %p]}", \ + RTA_DATA(TEST_NLATTR_nla) \ + + sizeof((obj_)[0]))); \ /* sizeof(obj_) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ @@ -234,6 +316,11 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) (nla_type_), #nla_type_, \ sizeof(obj_), \ &(obj_), sizeof(obj_), \ - __VA_ARGS__, \ - printf("}")); \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_); ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf("]}")); \ } while (0) diff --git a/tests-mx32/Makefile.am b/tests-mx32/Makefile.am index 043b21f4..c445353c 100644 --- a/tests-mx32/Makefile.am +++ b/tests-mx32/Makefile.am @@ -87,6 +87,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ attach-p-cmd-p \ block_reset_raise_run \ caps-abbrev \ + check_sigblock \ + check_sigign \ clone_parent \ clone_ptrace \ count-f \ @@ -106,6 +108,7 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ ioctl_rtc-v \ is_linux_mips_n64 \ ksysent \ + list_sigaction_signum \ mmsg-silent \ mmsg_name-v \ msg_control-v \ @@ -135,6 +138,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ seccomp-filter-v \ seccomp-strict \ set_ptracer_any \ + set_sigblock \ + set_sigign \ signal_receive \ sleep \ stack-fcall \ @@ -278,6 +283,8 @@ MISC_TESTS = \ redirect-fds.test \ redirect.test \ restart_syscall.test \ + sigblock.test \ + sigign.test \ strace-C.test \ strace-E.test \ strace-S.test \ diff --git a/tests-mx32/Makefile.in b/tests-mx32/Makefile.in index 6886c3b0..272fa470 100644 --- a/tests-mx32/Makefile.in +++ b/tests-mx32/Makefile.in @@ -139,7 +139,8 @@ DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \ attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \ - caps-abbrev$(EXEEXT) clone_parent$(EXEEXT) \ + caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \ + check_sigign$(EXEEXT) clone_parent$(EXEEXT) \ clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \ execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \ fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \ @@ -147,10 +148,11 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \ ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \ is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \ - mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \ - msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \ - netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \ - netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \ + list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \ + mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \ + net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \ + netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \ + nsyscalls$(EXEEXT) pc$(EXEEXT) \ perf_event_open_nonverbose$(EXEEXT) \ perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \ prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \ @@ -161,8 +163,9 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \ run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \ seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \ - set_ptracer_any$(EXEEXT) signal_receive$(EXEEXT) \ - sleep$(EXEEXT) stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \ + set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \ + set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \ + stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \ unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \ unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \ wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT) @@ -253,9 +256,9 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \ iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \ ipc_msg$(EXEEXT) ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) \ - ipc_shm$(EXEEXT) kcmp$(EXEEXT) kexec_file_load$(EXEEXT) \ - kexec_load$(EXEEXT) keyctl$(EXEEXT) kill$(EXEEXT) \ - lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \ + ipc_shm$(EXEEXT) kcmp$(EXEEXT) kcmp-y$(EXEEXT) \ + kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) keyctl$(EXEEXT) \ + kill$(EXEEXT) lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \ linkat$(EXEEXT) llseek$(EXEEXT) lookup_dcookie$(EXEEXT) \ lseek$(EXEEXT) lstat$(EXEEXT) lstat64$(EXEEXT) \ madvise$(EXEEXT) mbind$(EXEEXT) membarrier$(EXEEXT) \ @@ -275,19 +278,27 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ netlink_netfilter$(EXEEXT) netlink_protocol$(EXEEXT) \ netlink_route$(EXEEXT) netlink_selinux$(EXEEXT) \ netlink_sock_diag$(EXEEXT) netlink_xfrm$(EXEEXT) \ - newfstatat$(EXEEXT) nlattr$(EXEEXT) \ - nlattr_crypto_user_alg$(EXEEXT) nlattr_br_port_msg$(EXEEXT) \ - nlattr_dcbmsg$(EXEEXT) nlattr_fib_rule_hdr$(EXEEXT) \ - nlattr_ifaddrlblmsg$(EXEEXT) nlattr_ifaddrmsg$(EXEEXT) \ - nlattr_ifinfomsg$(EXEEXT) nlattr_ifla_brport$(EXEEXT) \ - nlattr_ifla_port$(EXEEXT) nlattr_ifla_xdp$(EXEEXT) \ - nlattr_inet_diag_msg$(EXEEXT) \ + newfstatat$(EXEEXT) nfnetlink_acct$(EXEEXT) \ + nfnetlink_cthelper$(EXEEXT) nfnetlink_ctnetlink$(EXEEXT) \ + nfnetlink_ctnetlink_exp$(EXEEXT) nfnetlink_cttimeout$(EXEEXT) \ + nfnetlink_nft_compat$(EXEEXT) nfnetlink_nftables$(EXEEXT) \ + nfnetlink_ipset$(EXEEXT) nfnetlink_osf$(EXEEXT) \ + nfnetlink_queue$(EXEEXT) nfnetlink_ulog$(EXEEXT) \ + nlattr$(EXEEXT) nlattr_crypto_user_alg$(EXEEXT) \ + nlattr_br_port_msg$(EXEEXT) nlattr_dcbmsg$(EXEEXT) \ + nlattr_fib_rule_hdr$(EXEEXT) nlattr_ifaddrlblmsg$(EXEEXT) \ + nlattr_ifaddrmsg$(EXEEXT) nlattr_ifinfomsg$(EXEEXT) \ + nlattr_ifla_brport$(EXEEXT) nlattr_ifla_port$(EXEEXT) \ + nlattr_ifla_xdp$(EXEEXT) nlattr_inet_diag_msg$(EXEEXT) \ nlattr_inet_diag_req_compat$(EXEEXT) \ - nlattr_inet_diag_req_v2$(EXEEXT) nlattr_ndmsg$(EXEEXT) \ + nlattr_inet_diag_req_v2$(EXEEXT) \ + nlattr_mdba_mdb_entry$(EXEEXT) \ + nlattr_mdba_router_port$(EXEEXT) nlattr_ndmsg$(EXEEXT) \ nlattr_ndtmsg$(EXEEXT) nlattr_netconfmsg$(EXEEXT) \ nlattr_netlink_diag_msg$(EXEEXT) nlattr_nlmsgerr$(EXEEXT) \ nlattr_packet_diag_msg$(EXEEXT) nlattr_rtgenmsg$(EXEEXT) \ nlattr_rtmsg$(EXEEXT) nlattr_smc_diag_msg$(EXEEXT) \ + nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \ nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \ nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \ oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \ @@ -321,7 +332,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \ sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \ sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \ - sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) select$(EXEEXT) \ + sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) \ + seccomp_get_action_avail$(EXEEXT) select$(EXEEXT) \ semop$(EXEEXT) sendfile$(EXEEXT) sendfile64$(EXEEXT) \ set_mempolicy$(EXEEXT) setdomainname$(EXEEXT) \ setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \ @@ -439,6 +451,14 @@ caps_abbrev_SOURCES = caps-abbrev.c caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT) caps_abbrev_LDADD = $(LDADD) caps_abbrev_DEPENDENCIES = libtests.a +check_sigblock_SOURCES = check_sigblock.c +check_sigblock_OBJECTS = check_sigblock.$(OBJEXT) +check_sigblock_LDADD = $(LDADD) +check_sigblock_DEPENDENCIES = libtests.a +check_sigign_SOURCES = check_sigign.c +check_sigign_OBJECTS = check_sigign.$(OBJEXT) +check_sigign_LDADD = $(LDADD) +check_sigign_DEPENDENCIES = libtests.a chmod_SOURCES = chmod.c chmod_OBJECTS = chmod.$(OBJEXT) chmod_LDADD = $(LDADD) @@ -936,6 +956,10 @@ kcmp_SOURCES = kcmp.c kcmp_OBJECTS = kcmp.$(OBJEXT) kcmp_LDADD = $(LDADD) kcmp_DEPENDENCIES = libtests.a +kcmp_y_SOURCES = kcmp-y.c +kcmp_y_OBJECTS = kcmp-y.$(OBJEXT) +kcmp_y_LDADD = $(LDADD) +kcmp_y_DEPENDENCIES = libtests.a kexec_file_load_SOURCES = kexec_file_load.c kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT) kexec_file_load_LDADD = $(LDADD) @@ -972,6 +996,10 @@ linkat_SOURCES = linkat.c linkat_OBJECTS = linkat.$(OBJEXT) linkat_LDADD = $(LDADD) linkat_DEPENDENCIES = libtests.a +list_sigaction_signum_SOURCES = list_sigaction_signum.c +list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) +list_sigaction_signum_LDADD = $(LDADD) +list_sigaction_signum_DEPENDENCIES = libtests.a llseek_SOURCES = llseek.c llseek_OBJECTS = llseek.$(OBJEXT) llseek_LDADD = $(LDADD) @@ -1192,6 +1220,50 @@ newfstatat_SOURCES = newfstatat.c newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT) newfstatat_LDADD = $(LDADD) newfstatat_DEPENDENCIES = libtests.a +nfnetlink_acct_SOURCES = nfnetlink_acct.c +nfnetlink_acct_OBJECTS = nfnetlink_acct.$(OBJEXT) +nfnetlink_acct_LDADD = $(LDADD) +nfnetlink_acct_DEPENDENCIES = libtests.a +nfnetlink_cthelper_SOURCES = nfnetlink_cthelper.c +nfnetlink_cthelper_OBJECTS = nfnetlink_cthelper.$(OBJEXT) +nfnetlink_cthelper_LDADD = $(LDADD) +nfnetlink_cthelper_DEPENDENCIES = libtests.a +nfnetlink_ctnetlink_SOURCES = nfnetlink_ctnetlink.c +nfnetlink_ctnetlink_OBJECTS = nfnetlink_ctnetlink.$(OBJEXT) +nfnetlink_ctnetlink_LDADD = $(LDADD) +nfnetlink_ctnetlink_DEPENDENCIES = libtests.a +nfnetlink_ctnetlink_exp_SOURCES = nfnetlink_ctnetlink_exp.c +nfnetlink_ctnetlink_exp_OBJECTS = nfnetlink_ctnetlink_exp.$(OBJEXT) +nfnetlink_ctnetlink_exp_LDADD = $(LDADD) +nfnetlink_ctnetlink_exp_DEPENDENCIES = libtests.a +nfnetlink_cttimeout_SOURCES = nfnetlink_cttimeout.c +nfnetlink_cttimeout_OBJECTS = nfnetlink_cttimeout.$(OBJEXT) +nfnetlink_cttimeout_LDADD = $(LDADD) +nfnetlink_cttimeout_DEPENDENCIES = libtests.a +nfnetlink_ipset_SOURCES = nfnetlink_ipset.c +nfnetlink_ipset_OBJECTS = nfnetlink_ipset.$(OBJEXT) +nfnetlink_ipset_LDADD = $(LDADD) +nfnetlink_ipset_DEPENDENCIES = libtests.a +nfnetlink_nft_compat_SOURCES = nfnetlink_nft_compat.c +nfnetlink_nft_compat_OBJECTS = nfnetlink_nft_compat.$(OBJEXT) +nfnetlink_nft_compat_LDADD = $(LDADD) +nfnetlink_nft_compat_DEPENDENCIES = libtests.a +nfnetlink_nftables_SOURCES = nfnetlink_nftables.c +nfnetlink_nftables_OBJECTS = nfnetlink_nftables.$(OBJEXT) +nfnetlink_nftables_LDADD = $(LDADD) +nfnetlink_nftables_DEPENDENCIES = libtests.a +nfnetlink_osf_SOURCES = nfnetlink_osf.c +nfnetlink_osf_OBJECTS = nfnetlink_osf.$(OBJEXT) +nfnetlink_osf_LDADD = $(LDADD) +nfnetlink_osf_DEPENDENCIES = libtests.a +nfnetlink_queue_SOURCES = nfnetlink_queue.c +nfnetlink_queue_OBJECTS = nfnetlink_queue.$(OBJEXT) +nfnetlink_queue_LDADD = $(LDADD) +nfnetlink_queue_DEPENDENCIES = libtests.a +nfnetlink_ulog_SOURCES = nfnetlink_ulog.c +nfnetlink_ulog_OBJECTS = nfnetlink_ulog.$(OBJEXT) +nfnetlink_ulog_LDADD = $(LDADD) +nfnetlink_ulog_DEPENDENCIES = libtests.a nlattr_SOURCES = nlattr.c nlattr_OBJECTS = nlattr.$(OBJEXT) nlattr_LDADD = $(LDADD) @@ -1249,6 +1321,14 @@ nlattr_inet_diag_req_v2_SOURCES = nlattr_inet_diag_req_v2.c nlattr_inet_diag_req_v2_OBJECTS = nlattr_inet_diag_req_v2.$(OBJEXT) nlattr_inet_diag_req_v2_LDADD = $(LDADD) nlattr_inet_diag_req_v2_DEPENDENCIES = libtests.a +nlattr_mdba_mdb_entry_SOURCES = nlattr_mdba_mdb_entry.c +nlattr_mdba_mdb_entry_OBJECTS = nlattr_mdba_mdb_entry.$(OBJEXT) +nlattr_mdba_mdb_entry_LDADD = $(LDADD) +nlattr_mdba_mdb_entry_DEPENDENCIES = libtests.a +nlattr_mdba_router_port_SOURCES = nlattr_mdba_router_port.c +nlattr_mdba_router_port_OBJECTS = nlattr_mdba_router_port.$(OBJEXT) +nlattr_mdba_router_port_LDADD = $(LDADD) +nlattr_mdba_router_port_DEPENDENCIES = libtests.a nlattr_ndmsg_SOURCES = nlattr_ndmsg.c nlattr_ndmsg_OBJECTS = nlattr_ndmsg.$(OBJEXT) nlattr_ndmsg_LDADD = $(LDADD) @@ -1285,6 +1365,14 @@ nlattr_smc_diag_msg_SOURCES = nlattr_smc_diag_msg.c nlattr_smc_diag_msg_OBJECTS = nlattr_smc_diag_msg.$(OBJEXT) nlattr_smc_diag_msg_LDADD = $(LDADD) nlattr_smc_diag_msg_DEPENDENCIES = libtests.a +nlattr_tc_stats_SOURCES = nlattr_tc_stats.c +nlattr_tc_stats_OBJECTS = nlattr_tc_stats.$(OBJEXT) +nlattr_tc_stats_LDADD = $(LDADD) +nlattr_tc_stats_DEPENDENCIES = libtests.a +nlattr_tca_stab_SOURCES = nlattr_tca_stab.c +nlattr_tca_stab_OBJECTS = nlattr_tca_stab.$(OBJEXT) +nlattr_tca_stab_LDADD = $(LDADD) +nlattr_tca_stab_DEPENDENCIES = libtests.a nlattr_tcamsg_SOURCES = nlattr_tcamsg.c nlattr_tcamsg_OBJECTS = nlattr_tcamsg.$(OBJEXT) nlattr_tcamsg_LDADD = $(LDADD) @@ -1696,6 +1784,10 @@ seccomp_strict_SOURCES = seccomp-strict.c seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT) seccomp_strict_LDADD = $(LDADD) seccomp_strict_DEPENDENCIES = libtests.a +seccomp_get_action_avail_SOURCES = seccomp_get_action_avail.c +seccomp_get_action_avail_OBJECTS = seccomp_get_action_avail.$(OBJEXT) +seccomp_get_action_avail_LDADD = $(LDADD) +seccomp_get_action_avail_DEPENDENCIES = libtests.a select_SOURCES = select.c select_OBJECTS = select.$(OBJEXT) select_LDADD = $(LDADD) @@ -1720,6 +1812,14 @@ set_ptracer_any_SOURCES = set_ptracer_any.c set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT) set_ptracer_any_LDADD = $(LDADD) set_ptracer_any_DEPENDENCIES = libtests.a +set_sigblock_SOURCES = set_sigblock.c +set_sigblock_OBJECTS = set_sigblock.$(OBJEXT) +set_sigblock_LDADD = $(LDADD) +set_sigblock_DEPENDENCIES = libtests.a +set_sigign_SOURCES = set_sigign.c +set_sigign_OBJECTS = set_sigign.$(OBJEXT) +set_sigign_LDADD = $(LDADD) +set_sigign_DEPENDENCIES = libtests.a setdomainname_SOURCES = setdomainname.c setdomainname_OBJECTS = setdomainname.$(OBJEXT) setdomainname_LDADD = $(LDADD) @@ -2169,10 +2269,11 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \ attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \ - btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \ - chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \ - creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \ + btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \ + chmod.c chown.c chown32.c chroot.c clock_adjtime.c \ + clock_nanosleep.c clock_xettime.c clone_parent.c \ + clone_ptrace.c copy_file_range.c count-f.c creat.c \ + delete_module.c dup.c dup2.c dup3.c epoll_create.c \ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \ @@ -2195,39 +2296,45 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \ ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \ iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \ - ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \ + ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \ - lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \ - lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \ - memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \ - mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \ - mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \ - move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \ - mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \ - munlockall.c nanosleep.c net-accept-connect.c \ - net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \ - net-yy-netlink.c net-yy-unix.c netlink_audit.c \ - netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ - netlink_kobject_uevent.c netlink_netfilter.c \ - netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ - netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ - netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \ - nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \ - nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \ - nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \ - nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \ - nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \ - nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \ - nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \ - nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \ - nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \ - oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \ - osf_utimes.c pause.c pc.c perf_event_open.c \ - perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ - personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ - pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \ - prctl-dumpable.c prctl-name.c prctl-no-args.c \ - prctl-pdeathsig.c prctl-seccomp-filter-v.c \ + lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ + llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \ + mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \ + mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \ + mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \ + mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \ + mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ + msg_control-v.c msg_name.c munlockall.c nanosleep.c \ + net-accept-connect.c net-icmp_filter.c net-sockaddr.c \ + net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \ + netlink_audit.c netlink_crypto.c netlink_generic.c \ + netlink_inet_diag.c netlink_kobject_uevent.c \ + netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ + netlink_route.c netlink_selinux.c netlink_sock_diag.c \ + netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ + nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ + nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ + nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ + nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ + nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \ + nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \ + nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \ + nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \ + nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \ + nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \ + nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \ + nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \ + nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \ + nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \ + nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \ + nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \ + oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \ + perf_event_open.c perf_event_open_nonverbose.c \ + perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \ + pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \ + ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ + prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \ preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \ @@ -2248,8 +2355,9 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \ sched_xetparam.c sched_xetscheduler.c sched_yield.c \ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ - seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \ - set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \ + seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \ + sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \ + set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \ setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \ setgroups.c setgroups32.c sethostname.c setns.c setregid.c \ setregid32.c setresgid.c setresgid32.c setresuid.c \ @@ -2275,10 +2383,11 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \ attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \ - btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \ - chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \ - creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \ + btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \ + chmod.c chown.c chown32.c chroot.c clock_adjtime.c \ + clock_nanosleep.c clock_xettime.c clone_parent.c \ + clone_ptrace.c copy_file_range.c count-f.c creat.c \ + delete_module.c dup.c dup2.c dup3.c epoll_create.c \ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \ @@ -2301,39 +2410,45 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \ ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \ iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \ - ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \ + ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \ - lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \ - lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \ - memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \ - mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \ - mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \ - move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \ - mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \ - munlockall.c nanosleep.c net-accept-connect.c \ - net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \ - net-yy-netlink.c net-yy-unix.c netlink_audit.c \ - netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ - netlink_kobject_uevent.c netlink_netfilter.c \ - netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ - netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ - netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \ - nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \ - nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \ - nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \ - nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \ - nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \ - nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \ - nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \ - nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \ - nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \ - oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \ - osf_utimes.c pause.c pc.c perf_event_open.c \ - perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ - personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ - pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \ - prctl-dumpable.c prctl-name.c prctl-no-args.c \ - prctl-pdeathsig.c prctl-seccomp-filter-v.c \ + lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ + llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \ + mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \ + mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \ + mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \ + mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \ + mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ + msg_control-v.c msg_name.c munlockall.c nanosleep.c \ + net-accept-connect.c net-icmp_filter.c net-sockaddr.c \ + net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \ + netlink_audit.c netlink_crypto.c netlink_generic.c \ + netlink_inet_diag.c netlink_kobject_uevent.c \ + netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ + netlink_route.c netlink_selinux.c netlink_sock_diag.c \ + netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ + nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ + nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ + nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ + nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ + nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \ + nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \ + nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \ + nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \ + nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \ + nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \ + nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \ + nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \ + nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \ + nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \ + nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \ + nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \ + oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \ + perf_event_open.c perf_event_open_nonverbose.c \ + perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \ + pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \ + ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ + prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \ preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \ @@ -2354,8 +2469,9 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \ sched_xetparam.c sched_xetscheduler.c sched_yield.c \ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ - seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \ - set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \ + seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \ + sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \ + set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \ setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \ setgroups.c setgroups32.c sethostname.c setns.c setregid.c \ setregid32.c setresgid.c setresgid32.c setresuid.c \ @@ -2924,6 +3040,7 @@ PURE_EXECUTABLES = \ ipc_sem \ ipc_shm \ kcmp \ + kcmp-y \ kexec_file_load \ kexec_load \ keyctl \ @@ -2981,6 +3098,17 @@ PURE_EXECUTABLES = \ netlink_sock_diag \ netlink_xfrm \ newfstatat \ + nfnetlink_acct \ + nfnetlink_cthelper \ + nfnetlink_ctnetlink \ + nfnetlink_ctnetlink_exp \ + nfnetlink_cttimeout \ + nfnetlink_nft_compat \ + nfnetlink_nftables \ + nfnetlink_ipset \ + nfnetlink_osf \ + nfnetlink_queue \ + nfnetlink_ulog \ nlattr \ nlattr_crypto_user_alg \ nlattr_br_port_msg \ @@ -2995,6 +3123,8 @@ PURE_EXECUTABLES = \ nlattr_inet_diag_msg \ nlattr_inet_diag_req_compat \ nlattr_inet_diag_req_v2 \ + nlattr_mdba_mdb_entry \ + nlattr_mdba_router_port \ nlattr_ndmsg \ nlattr_ndtmsg \ nlattr_netconfmsg \ @@ -3004,6 +3134,8 @@ PURE_EXECUTABLES = \ nlattr_rtgenmsg \ nlattr_rtmsg \ nlattr_smc_diag_msg \ + nlattr_tc_stats \ + nlattr_tca_stab \ nlattr_tcamsg \ nlattr_tcmsg \ nlattr_unix_diag_msg \ @@ -3084,6 +3216,7 @@ PURE_EXECUTABLES = \ sched_xetscheduler \ sched_yield \ seccomp-filter \ + seccomp_get_action_avail \ select \ semop \ sendfile \ @@ -3253,39 +3386,47 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \ ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \ iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \ ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \ - kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \ - keyctl.gen.test kill.gen.test lchown.gen.test \ - lchown32.gen.test link.gen.test linkat.gen.test \ - lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \ - madvise.gen.test mbind.gen.test membarrier.gen.test \ - memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \ - mkdir.gen.test mkdirat.gen.test mknod.gen.test \ - mknodat.gen.test mlock.gen.test mlock2.gen.test \ - mlockall.gen.test mmap64.gen.test mmsg.gen.test \ - mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \ - mount.gen.test move_pages.gen.test mq.gen.test \ - mq_sendrecv.gen.test mq_sendrecv-read.gen.test \ - mq_sendrecv-write.gen.test msg_control.gen.test \ - msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \ - nanosleep.gen.test net-icmp_filter.gen.test \ - net-sockaddr.gen.test netlink_audit.gen.test \ - netlink_crypto.gen.test netlink_generic.gen.test \ - netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \ - netlink_protocol.gen.test netlink_route.gen.test \ - netlink_selinux.gen.test netlink_xfrm.gen.test \ - newfstatat.gen.test nlattr.gen.test \ - nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \ - nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \ - nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \ - nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \ - nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \ - nlattr_inet_diag_msg.gen.test \ + kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \ + kexec_load.gen.test keyctl.gen.test kill.gen.test \ + lchown.gen.test lchown32.gen.test link.gen.test \ + linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ + lstat64.gen.test madvise.gen.test mbind.gen.test \ + membarrier.gen.test memfd_create.gen.test \ + migrate_pages.gen.test mincore.gen.test mkdir.gen.test \ + mkdirat.gen.test mknod.gen.test mknodat.gen.test \ + mlock.gen.test mlock2.gen.test mlockall.gen.test \ + mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \ + mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \ + move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \ + mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \ + msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \ + munlockall.gen.test nanosleep.gen.test \ + net-icmp_filter.gen.test net-sockaddr.gen.test \ + netlink_audit.gen.test netlink_crypto.gen.test \ + netlink_generic.gen.test netlink_kobject_uevent.gen.test \ + netlink_netfilter.gen.test netlink_protocol.gen.test \ + netlink_route.gen.test netlink_selinux.gen.test \ + netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \ + nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \ + nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \ + nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \ + nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \ + nfnetlink_osf.gen.test nfnetlink_queue.gen.test \ + nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \ + nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \ + nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \ + nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \ + nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \ + nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \ nlattr_inet_diag_req_compat.gen.test \ - nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test \ + nlattr_inet_diag_req_v2.gen.test \ + nlattr_mdba_mdb_entry.gen.test \ + nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test \ nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test \ nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test \ nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test \ nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test \ + nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \ nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \ nlattr_unix_diag_msg.gen.test old_mmap.gen.test \ oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \ @@ -3319,20 +3460,21 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \ sched_xetattr.gen.test sched_xetparam.gen.test \ sched_xetscheduler.gen.test sched_yield.gen.test \ seccomp-filter.gen.test seccomp-filter-v.gen.test \ - select.gen.test semop.gen.test sendfile.gen.test \ - sendfile64.gen.test set_mempolicy.gen.test \ - setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \ - setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \ - setgid32.gen.test setgroups.gen.test setgroups32.gen.test \ - sethostname.gen.test setns.gen.test setregid.gen.test \ - setregid32.gen.test setresgid.gen.test setresgid32.gen.test \ - setresuid.gen.test setresuid32.gen.test setreuid.gen.test \ - setreuid32.gen.test setrlimit.gen.test setuid.gen.test \ - setuid32.gen.test shmxt.gen.test shutdown.gen.test \ - sigaction.gen.test siginfo.gen.test signal.gen.test \ - signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \ - sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \ - so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \ + seccomp_get_action_avail.gen.test select.gen.test \ + semop.gen.test sendfile.gen.test sendfile64.gen.test \ + set_mempolicy.gen.test setdomainname.gen.test \ + setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \ + setfsuid32.gen.test setgid.gen.test setgid32.gen.test \ + setgroups.gen.test setgroups32.gen.test sethostname.gen.test \ + setns.gen.test setregid.gen.test setregid32.gen.test \ + setresgid.gen.test setresgid32.gen.test setresuid.gen.test \ + setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \ + setrlimit.gen.test setuid.gen.test setuid32.gen.test \ + shmxt.gen.test shutdown.gen.test sigaction.gen.test \ + siginfo.gen.test signal.gen.test signal_receive.gen.test \ + signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \ + sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \ + so_peercred.gen.test sock_filter-v.gen.test \ socketcall.gen.test splice.gen.test stat.gen.test \ stat64.gen.test statfs.gen.test statfs64.gen.test \ statx.gen.test swap.gen.test sxetmask.gen.test \ @@ -3451,6 +3593,8 @@ MISC_TESTS = \ redirect-fds.test \ redirect.test \ restart_syscall.test \ + sigblock.test \ + sigign.test \ strace-C.test \ strace-E.test \ strace-S.test \ @@ -3692,6 +3836,14 @@ caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA @rm -f caps-abbrev$(EXEEXT) $(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS) +check_sigblock$(EXEEXT): $(check_sigblock_OBJECTS) $(check_sigblock_DEPENDENCIES) $(EXTRA_check_sigblock_DEPENDENCIES) + @rm -f check_sigblock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_sigblock_OBJECTS) $(check_sigblock_LDADD) $(LIBS) + +check_sigign$(EXEEXT): $(check_sigign_OBJECTS) $(check_sigign_DEPENDENCIES) $(EXTRA_check_sigign_DEPENDENCIES) + @rm -f check_sigign$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_sigign_OBJECTS) $(check_sigign_LDADD) $(LIBS) + chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES) @rm -f chmod$(EXEEXT) $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS) @@ -4192,6 +4344,10 @@ kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES) @rm -f kcmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS) +kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDENCIES) + @rm -f kcmp-y$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS) + kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES) @rm -f kexec_file_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS) @@ -4228,6 +4384,10 @@ linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDE @rm -f linkat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS) +list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) + @rm -f list_sigaction_signum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) + llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES) @rm -f llseek$(EXEEXT) $(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS) @@ -4452,6 +4612,50 @@ newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_ne @rm -f newfstatat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS) +nfnetlink_acct$(EXEEXT): $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_DEPENDENCIES) $(EXTRA_nfnetlink_acct_DEPENDENCIES) + @rm -f nfnetlink_acct$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_LDADD) $(LIBS) + +nfnetlink_cthelper$(EXEEXT): $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_DEPENDENCIES) $(EXTRA_nfnetlink_cthelper_DEPENDENCIES) + @rm -f nfnetlink_cthelper$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_LDADD) $(LIBS) + +nfnetlink_ctnetlink$(EXEEXT): $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_DEPENDENCIES) + @rm -f nfnetlink_ctnetlink$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_LDADD) $(LIBS) + +nfnetlink_ctnetlink_exp$(EXEEXT): $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_exp_DEPENDENCIES) + @rm -f nfnetlink_ctnetlink_exp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_LDADD) $(LIBS) + +nfnetlink_cttimeout$(EXEEXT): $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_DEPENDENCIES) $(EXTRA_nfnetlink_cttimeout_DEPENDENCIES) + @rm -f nfnetlink_cttimeout$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_LDADD) $(LIBS) + +nfnetlink_ipset$(EXEEXT): $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_DEPENDENCIES) $(EXTRA_nfnetlink_ipset_DEPENDENCIES) + @rm -f nfnetlink_ipset$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_LDADD) $(LIBS) + +nfnetlink_nft_compat$(EXEEXT): $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_DEPENDENCIES) $(EXTRA_nfnetlink_nft_compat_DEPENDENCIES) + @rm -f nfnetlink_nft_compat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_LDADD) $(LIBS) + +nfnetlink_nftables$(EXEEXT): $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_DEPENDENCIES) $(EXTRA_nfnetlink_nftables_DEPENDENCIES) + @rm -f nfnetlink_nftables$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_LDADD) $(LIBS) + +nfnetlink_osf$(EXEEXT): $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_DEPENDENCIES) $(EXTRA_nfnetlink_osf_DEPENDENCIES) + @rm -f nfnetlink_osf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_LDADD) $(LIBS) + +nfnetlink_queue$(EXEEXT): $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_DEPENDENCIES) $(EXTRA_nfnetlink_queue_DEPENDENCIES) + @rm -f nfnetlink_queue$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_LDADD) $(LIBS) + +nfnetlink_ulog$(EXEEXT): $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_DEPENDENCIES) $(EXTRA_nfnetlink_ulog_DEPENDENCIES) + @rm -f nfnetlink_ulog$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_LDADD) $(LIBS) + nlattr$(EXEEXT): $(nlattr_OBJECTS) $(nlattr_DEPENDENCIES) $(EXTRA_nlattr_DEPENDENCIES) @rm -f nlattr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_OBJECTS) $(nlattr_LDADD) $(LIBS) @@ -4508,6 +4712,14 @@ nlattr_inet_diag_req_v2$(EXEEXT): $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_in @rm -f nlattr_inet_diag_req_v2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_inet_diag_req_v2_LDADD) $(LIBS) +nlattr_mdba_mdb_entry$(EXEEXT): $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_DEPENDENCIES) $(EXTRA_nlattr_mdba_mdb_entry_DEPENDENCIES) + @rm -f nlattr_mdba_mdb_entry$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_LDADD) $(LIBS) + +nlattr_mdba_router_port$(EXEEXT): $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_DEPENDENCIES) $(EXTRA_nlattr_mdba_router_port_DEPENDENCIES) + @rm -f nlattr_mdba_router_port$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_LDADD) $(LIBS) + nlattr_ndmsg$(EXEEXT): $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_DEPENDENCIES) $(EXTRA_nlattr_ndmsg_DEPENDENCIES) @rm -f nlattr_ndmsg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_LDADD) $(LIBS) @@ -4544,6 +4756,14 @@ nlattr_smc_diag_msg$(EXEEXT): $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_m @rm -f nlattr_smc_diag_msg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_msg_LDADD) $(LIBS) +nlattr_tc_stats$(EXEEXT): $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_DEPENDENCIES) $(EXTRA_nlattr_tc_stats_DEPENDENCIES) + @rm -f nlattr_tc_stats$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_LDADD) $(LIBS) + +nlattr_tca_stab$(EXEEXT): $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_DEPENDENCIES) $(EXTRA_nlattr_tca_stab_DEPENDENCIES) + @rm -f nlattr_tca_stab$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_LDADD) $(LIBS) + nlattr_tcamsg$(EXEEXT): $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_DEPENDENCIES) $(EXTRA_nlattr_tcamsg_DEPENDENCIES) @rm -f nlattr_tcamsg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_LDADD) $(LIBS) @@ -4948,6 +5168,10 @@ seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES @rm -f seccomp-strict$(EXEEXT) $(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS) +seccomp_get_action_avail$(EXEEXT): $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_DEPENDENCIES) $(EXTRA_seccomp_get_action_avail_DEPENDENCIES) + @rm -f seccomp_get_action_avail$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_LDADD) $(LIBS) + select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES) @rm -f select$(EXEEXT) $(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS) @@ -4972,6 +5196,14 @@ set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENC @rm -f set_ptracer_any$(EXEEXT) $(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS) +set_sigblock$(EXEEXT): $(set_sigblock_OBJECTS) $(set_sigblock_DEPENDENCIES) $(EXTRA_set_sigblock_DEPENDENCIES) + @rm -f set_sigblock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(set_sigblock_OBJECTS) $(set_sigblock_LDADD) $(LIBS) + +set_sigign$(EXEEXT): $(set_sigign_OBJECTS) $(set_sigign_DEPENDENCIES) $(EXTRA_set_sigign_DEPENDENCIES) + @rm -f set_sigign$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(set_sigign_OBJECTS) $(set_sigign_LDADD) $(LIBS) + setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES) @rm -f setdomainname$(EXEEXT) $(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS) @@ -5411,6 +5643,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps-abbrev.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ @@ -5535,6 +5769,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_sem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_file_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_load.Po@am__quote@ @@ -5571,6 +5806,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_dcookie.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@ @@ -5627,6 +5863,17 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_unix_diag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_xfrm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfstatat-newfstatat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_acct.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cthelper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink_exp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cttimeout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ipset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nft_compat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nftables.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_osf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_queue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ulog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_br_port_msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_crypto_user_alg.Po@am__quote@ @@ -5641,6 +5888,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_v2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_mdb_entry.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_router_port.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndtmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_netconfmsg.Po@am__quote@ @@ -5650,6 +5899,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtgenmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_smc_diag_msg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tc_stats.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tca_stab.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@ @@ -5751,12 +6002,15 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter-v.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setdomainname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid32.Po@am__quote@ @@ -7194,6 +7448,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7353,6 +7610,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7392,6 +7682,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src $(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7419,6 +7715,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests. $(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7641,6 +7943,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test $(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ diff --git a/tests-mx32/check_sigblock.c b/tests-mx32/check_sigblock.c new file mode 100644 index 00000000..5637804d --- /dev/null +++ b/tests-mx32/check_sigblock.c @@ -0,0 +1,49 @@ +/* + * Check that the specified signal number is blocked/unblocked. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> + +int +main(int ac, char **av) +{ + if (ac != 3) + error_msg_and_fail("usage: check_sigblock 0|1 signum"); + + const int block = !!atoi(av[1]); + const int signum = atoi(av[2]); + sigset_t mask; + + sigemptyset(&mask); + if (sigprocmask(SIG_SETMASK, NULL, &mask)) + perror_msg_and_fail("sigprocmask"); + + return block ^ sigismember(&mask, signum); +} diff --git a/tests-mx32/check_sigign.c b/tests-mx32/check_sigign.c new file mode 100644 index 00000000..bace3170 --- /dev/null +++ b/tests-mx32/check_sigign.c @@ -0,0 +1,49 @@ +/* + * Check that the signal handler for the specified signal number is set + * to SIG_IGN/SIG_DFL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> + +int +main(int ac, char **av) +{ + if (ac != 3) + error_msg_and_fail("usage: check_sigign 0|1 signum"); + + const int ign = !!atoi(av[1]); + const int signum = atoi(av[2]); + struct sigaction act; + + if (sigaction(signum, NULL, &act)) + perror_msg_and_fail("sigaction: %s", av[2]); + + return ign ^ (act.sa_handler == SIG_IGN); +} diff --git a/tests-mx32/futex.c b/tests-mx32/futex.c index b75ab339..e1dbcb74 100644 --- a/tests-mx32/futex.c +++ b/tests-mx32/futex.c @@ -66,6 +66,7 @@ void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout, # define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \ enosys) \ do { \ + errno = 0; \ rc = syscall(__NR_futex, (uaddr), (op), (val), (timeout), \ (uaddr2), (val3)); \ /* It is here due to EPERM on WAKE_OP on AArch64 */ \ @@ -496,8 +497,16 @@ main(int argc, char *argv[]) static const struct { uint32_t val; const char *str; + + /* + * Peculiar semantics: + * * err == 0 and err2 != 0 => expect both either the absence + * of error or presence of err2 + * * err != 0 and err2 == 0 => expect err only, no success + * expected. + */ int err; - const char *errstr; + int err2; } wake_ops[] = { { 0x00000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x00fff000, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|" @@ -511,13 +520,13 @@ main(int argc, char *argv[]) { 0x30000000, "FUTEX_OP_ANDN<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x40000000, "FUTEX_OP_XOR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x50000000, "0x5<<28 /* FUTEX_OP_??? */|0<<12|" - "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" }, + "FUTEX_OP_CMP_EQ<<24|0", ENOSYS }, { 0x70000000, "0x7<<28 /* FUTEX_OP_??? */|0<<12|" - "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" }, + "FUTEX_OP_CMP_EQ<<24|0", ENOSYS }, { 0x80000000, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_SET<<28|0<<12|" "FUTEX_OP_CMP_EQ<<24|0" }, { 0xa0caffee, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_OR<<28|" - "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee" }, + "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee", 0, EINVAL }, { 0x01000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_NE<<24|0" }, { 0x01234567, "FUTEX_OP_SET<<28|0x234<<12|FUTEX_OP_CMP_NE<<24|" "0x567" }, @@ -526,27 +535,38 @@ main(int argc, char *argv[]) { 0x04000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0" }, { 0x05000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GE<<24|0" }, { 0x06000000, "FUTEX_OP_SET<<28|0<<12|" - "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x07000000, "FUTEX_OP_SET<<28|0<<12|" - "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x08000000, "FUTEX_OP_SET<<28|0<<12|" - "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x0f000000, "FUTEX_OP_SET<<28|0<<12|" - "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0xbadfaced, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_ANDN<<28|" "0xdfa<<12|0xa<<24 /* FUTEX_OP_CMP_??? */|0xced", - ENOSYS, "ENOSYS" }, + ENOSYS, EINVAL }, { 0xffffffff, "FUTEX_OP_OPARG_SHIFT<<28|" "0x7<<28 /* FUTEX_OP_??? */|0xfff<<12|" "0xf<<24 /* FUTEX_OP_CMP_??? */|0xfff", - ENOSYS, "ENOSYS" }, + ENOSYS, EINVAL }, }; for (i = 0; i < ARRAY_SIZE(wake_ops); i++) { for (j = 0; j < 2; j++) { CHECK_FUTEX_ENOSYS(uaddr, j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP, - VAL, i, uaddr2, wake_ops[i].val, (rc == 0)); + VAL, i, uaddr2, wake_ops[i].val, + /* + * Either one of errs is 0 or rc == 0 is not + * allowed. + */ + ((!wake_ops[i].err || !wake_ops[i].err2 || + (rc != 0)) && + ((!wake_ops[i].err && (rc == 0)) || + (wake_ops[i].err && (rc == -1) && + (errno == wake_ops[i].err)) || + (wake_ops[i].err2 && (rc == -1) && + (errno == wake_ops[i].err2))))); printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)" " = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i, uaddr2, wake_ops[i].str, sprintrc(rc)); diff --git a/tests-mx32/gen_tests.am b/tests-mx32/gen_tests.am index 583a0aeb..71e00135 100644 --- a/tests-mx32/gen_tests.am +++ b/tests-mx32/gen_tests.am @@ -1,5 +1,5 @@ # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. -GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test +GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -358,6 +358,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -517,6 +520,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -556,6 +592,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src $(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -583,6 +625,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests. $(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -805,6 +853,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test $(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ diff --git a/tests-mx32/gen_tests.in b/tests-mx32/gen_tests.in index 8592e28b..091bbe59 100644 --- a/tests-mx32/gen_tests.in +++ b/tests-mx32/gen_tests.in @@ -143,7 +143,8 @@ ipc -a19 ipc_msg +ipc.sh ipc_sem +ipc.sh ipc_shm +ipc.sh -kcmp -a27 +kcmp -a22 +kcmp-y -a22 -y -e trace=kcmp kexec_file_load -s9 kexec_load -s9 keyctl -a31 -s10 @@ -197,6 +198,17 @@ netlink_selinux +netlink_sock_diag.test netlink_xfrm +netlink_sock_diag.test newfstatat -a32 -v -P stat.sample -P /dev/full nlattr +netlink_sock_diag.test +nfnetlink_acct +netlink_sock_diag.test +nfnetlink_cthelper +netlink_sock_diag.test +nfnetlink_ctnetlink +netlink_sock_diag.test +nfnetlink_ctnetlink_exp +netlink_sock_diag.test +nfnetlink_cttimeout +netlink_sock_diag.test +nfnetlink_ipset +netlink_sock_diag.test +nfnetlink_nft_compat +netlink_sock_diag.test +nfnetlink_nftables +netlink_sock_diag.test +nfnetlink_osf +netlink_sock_diag.test +nfnetlink_queue +netlink_sock_diag.test +nfnetlink_ulog +netlink_sock_diag.test nlattr_crypto_user_alg +netlink_sock_diag.test nlattr_br_port_msg +netlink_sock_diag.test nlattr_dcbmsg +netlink_sock_diag.test @@ -210,6 +222,8 @@ nlattr_ifla_xdp +netlink_sock_diag.test nlattr_inet_diag_msg +netlink_sock_diag.test nlattr_inet_diag_req_compat +netlink_sock_diag.test nlattr_inet_diag_req_v2 +netlink_sock_diag.test +nlattr_mdba_mdb_entry +netlink_sock_diag.test +nlattr_mdba_router_port +netlink_sock_diag.test nlattr_ndmsg +netlink_sock_diag.test nlattr_ndtmsg +netlink_sock_diag.test nlattr_netconfmsg +netlink_sock_diag.test @@ -219,6 +233,8 @@ nlattr_packet_diag_msg +netlink_sock_diag-v.sh nlattr_rtgenmsg +netlink_sock_diag.test nlattr_rtmsg +netlink_sock_diag.test nlattr_smc_diag_msg +netlink_sock_diag.test +nlattr_tc_stats +netlink_sock_diag.test +nlattr_tca_stab +netlink_sock_diag.test nlattr_tcamsg +netlink_sock_diag.test nlattr_tcmsg +netlink_sock_diag.test nlattr_unix_diag_msg +netlink_sock_diag.test @@ -293,6 +309,7 @@ sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler sched_yield -a14 seccomp-filter -e trace=seccomp seccomp-filter-v -v -e trace=seccomp +seccomp_get_action_avail -e trace=seccomp select -a36 semop -a32 -e trace=semop,semtimedop sendfile -a27 diff --git a/tests-mx32/ioctl_dm.c b/tests-mx32/ioctl_dm.c index 2f77e041..1e831dfe 100644 --- a/tests-mx32/ioctl_dm.c +++ b/tests-mx32/ioctl_dm.c @@ -54,6 +54,10 @@ # define ALIGNED_OFFSET(t_, m_) \ ALIGNED_SIZE(offsetof(t_, m_), t_) +# ifndef DM_DEV_ARM_POLL +# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl) +# endif + static const char str129[] = STR32 STR32 STR32 STR32 "6"; static const __u64 dts_sector_base = (__u64) 0xdeadca75facef157ULL; @@ -182,6 +186,7 @@ main(void) { ARG_STR(DM_TABLE_CLEAR), false }, { ARG_STR(DM_TABLE_DEPS), true }, { ARG_STR(DM_TABLE_STATUS), true }, + { ARG_STR(DM_DEV_ARM_POLL), false }, }; struct dm_ioctl *unaligned_dm_arg = diff --git a/tests-mx32/ioctl_loop.c b/tests-mx32/ioctl_loop.c index 3411a4d8..56ebd9e4 100644 --- a/tests-mx32/ioctl_loop.c +++ b/tests-mx32/ioctl_loop.c @@ -188,11 +188,11 @@ main(void) _IOC_SIZE((unsigned int) unknown_loop_cmd), (unsigned long) magic); - ioctl(-1, LOOP_SET_DIRECT_IO + 1, magic); + ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic); printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = " "-1 EBADF (%m)\n", - _IOC_NR(LOOP_SET_DIRECT_IO + 1), - _IOC_SIZE(LOOP_SET_DIRECT_IO + 1), + _IOC_NR(LOOP_SET_BLOCK_SIZE + 1), + _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1), (unsigned long) magic); ioctl(-1, LOOP_CTL_GET_FREE + 1, magic); @@ -303,6 +303,11 @@ main(void) printf("ioctl(-1, LOOP_SET_DIRECT_IO, %lu) = -1 EBADF (%m)\n", (unsigned long) magic); + /* LOOP_SET_BLOCK_SIZE */ + ioctl(-1, LOOP_SET_BLOCK_SIZE, magic); + printf("ioctl(-1, LOOP_SET_BLOCK_SIZE, %lu) = -1 EBADF (%m)\n", + (unsigned long) magic); + /* LOOP_CTL_ADD */ ioctl(-1, LOOP_CTL_ADD, magic); printf("ioctl(-1, LOOP_CTL_ADD, %d) = -1 EBADF (%m)\n", diff --git a/tests-mx32/kcmp-y.c b/tests-mx32/kcmp-y.c new file mode 100644 index 00000000..02ad90e5 --- /dev/null +++ b/tests-mx32/kcmp-y.c @@ -0,0 +1,3 @@ +#define VERBOSE_FD 1 + +#include "kcmp.c" diff --git a/tests-mx32/kcmp-y.gen.test b/tests-mx32/kcmp-y.gen.test new file mode 100755 index 00000000..065db9d0 --- /dev/null +++ b/tests-mx32/kcmp-y.gen.test @@ -0,0 +1,4 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y -a22 -y -e trace=kcmp); do not edit. +. "${srcdir=.}/init.sh" +run_strace_match_diff -a22 -y -e trace=kcmp diff --git a/tests-mx32/kcmp.c b/tests-mx32/kcmp.c index cb497c9f..60cd3003 100644 --- a/tests-mx32/kcmp.c +++ b/tests-mx32/kcmp.c @@ -1,7 +1,7 @@ /* * Check decoding of kcmp syscall. * - * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com> + * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,15 +34,67 @@ #ifdef __NR_kcmp +# include <fcntl.h> +# include <stdarg.h> +# include <stdint.h> # include <stdio.h> +# include <string.h> # include <unistd.h> -# define KCMP_FILE 0 -# define KCMP_SYSVSEM 6 +# ifndef VERBOSE_FD +# define VERBOSE_FD 0 +# endif +/* + * We prefer to use system headers in order to catch some possible deviations in + * system's headers from our perception of reality, but happy to include our own + * definitions as well. + */ +# ifdef HAVE_LINUX_KCMP_H +# include <linux/kcmp.h> +# else +# define KCMP_FILE 0 +# define KCMP_VM 1 +# define KCMP_FILES 2 +# define KCMP_FS 3 +# define KCMP_SIGHAND 4 +# define KCMP_IO 5 +# define KCMP_SYSVSEM 6 +# endif + +/* All other kcmp types have been added atomically */ +# define KCMP_EPOLL_TFD 7 + +# ifndef HAVE_STRUCT_KCMP_EPOLL_SLOT +struct kcmp_epoll_slot { + uint32_t efd; + uint32_t tfd; + uint32_t toff; +}; +# endif + +static const kernel_ulong_t kcmp_max_type = KCMP_EPOLL_TFD; + +static const char null_path[] = "/dev/null"; +static const char zero_path[] = "/dev/zero"; + +# define NULL_FD 23 +# define ZERO_FD 42 + +static void +printpidfd(const char *prefix, pid_t pid, unsigned fd) +{ + printf("%s%d", prefix, fd); +} + +/* + * Last argument is optional and is used as follows: + * * When type is KCMP_EPOLL_TFD, it signalises whether idx2 is a valid + * pointer. + */ static void do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type, - const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2) + const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2, ...) { long rc; const char *errstr; @@ -57,11 +109,37 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type, else printf("%#x /* KCMP_??? */", (int) type); - if (type == KCMP_FILE) - printf(", %u, %u", (unsigned) idx1, (unsigned) idx2); - else if (type > KCMP_SYSVSEM) + if (type == KCMP_FILE) { + printpidfd(", ", pid1, idx1); + printpidfd(", ", pid2, idx2); + } else if (type == KCMP_EPOLL_TFD) { + va_list ap; + int valid_ptr; + + va_start(ap, idx2); + valid_ptr = va_arg(ap, int); + va_end(ap); + + printpidfd(", ", pid1, idx1); + printf(", "); + + if (valid_ptr) { + struct kcmp_epoll_slot *slot = + (struct kcmp_epoll_slot *) (uintptr_t) idx2; + + printpidfd("{efd=", pid2, slot->efd); + printpidfd(", tfd=", pid2, slot->tfd); + printf(", toff=%llu}", (unsigned long long) slot->toff); + } else { + if (idx2) + printf("%#llx", (unsigned long long) idx2); + else + printf("NULL"); + } + } else if (type > kcmp_max_type) { printf(", %#llx, %#llx", (unsigned long long) idx1, (unsigned long long) idx2); + } printf(") = %s\n", errstr); } @@ -79,18 +157,71 @@ main(void) (kernel_ulong_t) 0xdec0ded3dec0ded4ULL; static const kernel_ulong_t bogus_idx2 = (kernel_ulong_t) 0xba5e1e55deadc0deULL; + static const struct kcmp_epoll_slot slot_data[] = { + { 0xdeadc0de, 0xfacef157, 0xbadc0ded }, + { NULL_FD, ZERO_FD, 0 }, + { 0, 0, 0 }, + }; + static kernel_ulong_t ptr_check = + F8ILL_KULONG_SUPPORTED ? F8ILL_KULONG_MASK : 0; + + int fd; + unsigned i; + struct kcmp_epoll_slot *slot = tail_alloc(sizeof(*slot)); + + /* Open some files to test printpidfd */ + fd = open(null_path, O_RDONLY); + if (fd < 0) + perror_msg_and_fail("open(\"%s\")", null_path); + if (fd != NULL_FD) { + if (dup2(fd, NULL_FD) < 0) + perror_msg_and_fail("dup2(fd, NULL_FD)"); + close(fd); + } + + fd = open(zero_path, O_RDONLY); + if (fd < 0) + perror_msg_and_fail("open(\"%s\")", zero_path); + if (fd != ZERO_FD) { + if (dup2(fd, ZERO_FD) < 0) + perror_msg_and_fail("dup2(fd, ZERO_FD)"); + close(fd); + } + + close(0); /* Invalid values */ do_kcmp(bogus_pid1, bogus_pid2, bogus_type, NULL, bogus_idx1, bogus_idx2); - do_kcmp(0, 0, KCMP_SYSVSEM + 1, NULL, 0, 0); + do_kcmp(F8ILL_KULONG_MASK, F8ILL_KULONG_MASK, kcmp_max_type + 1, NULL, + 0, 0); /* KCMP_FILE is the only type which has additional args */ do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1, bogus_idx2); - /* Some type without additional args */ + do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); + + /* Types without additional args */ + do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_FILES), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_FS), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_SIGHAND), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_IO), bogus_idx1, bogus_idx2); do_kcmp(-1, -1, ARG_STR(KCMP_SYSVSEM), bogus_idx1, bogus_idx2); + /* KCMP_EPOLL_TFD checks */ + do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD), + F8ILL_KULONG_MASK | 2718281828U, ptr_check, 0); + do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD), + 3141592653U, (uintptr_t) slot + 1, 0); + + for (i = 0; i < ARRAY_SIZE(slot_data); i++) { + memcpy(slot, slot_data + i, sizeof(*slot)); + + do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD, + (uintptr_t) slot, 1); + } + puts("+++ exited with 0 +++"); return 0; diff --git a/tests-mx32/kcmp.gen.test b/tests-mx32/kcmp.gen.test index da79d7c1..c073a39e 100755 --- a/tests-mx32/kcmp.gen.test +++ b/tests-mx32/kcmp.gen.test @@ -1,4 +1,4 @@ #!/bin/sh -efu -# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit. +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit. . "${srcdir=.}/init.sh" -run_strace_match_diff -a27 +run_strace_match_diff -a22 diff --git a/tests-mx32/list_sigaction_signum.c b/tests-mx32/list_sigaction_signum.c new file mode 100644 index 00000000..13a78c68 --- /dev/null +++ b/tests-mx32/list_sigaction_signum.c @@ -0,0 +1,57 @@ +/* + * List signal numbers that are valid arguments for sigaction syscall. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#include <signal.h> +#include <stdio.h> + +int +main(void) +{ + unsigned int i; + + for (i = 1; i < 32; ++i) { + static const struct sigaction ign = { .sa_handler = SIG_IGN }; + static const struct sigaction dfl = { .sa_handler = SIG_DFL }; + struct sigaction act; + + if (sigaction(i, &ign, NULL) || + sigaction(i, NULL, &act) || + ign.sa_handler != act.sa_handler || + sigaction(i, &dfl, NULL) || + sigaction(i, NULL, &act) || + dfl.sa_handler != act.sa_handler) + continue; + + printf("%u\n", i); + } + + return 0; +} diff --git a/tests-mx32/membarrier.c b/tests-mx32/membarrier.c index 330893b6..73dd3b02 100644 --- a/tests-mx32/membarrier.c +++ b/tests-mx32/membarrier.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org> + * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,10 +44,28 @@ main(void) printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n", sprintrc(-1)); if (saved_errno != ENOSYS) { - /* the test needs to be updated? */ - assert(syscall(__NR_membarrier, 0, 0) == 1); - puts("membarrier(MEMBARRIER_CMD_QUERY, 0)" - " = 0x1 (MEMBARRIER_CMD_SHARED)"); + const char *text; + int rc = syscall(__NR_membarrier, 0, 0); + + switch (rc) { + case 1: + text = "MEMBARRIER_CMD_SHARED"; + break; + case 1|8: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; + break; + case 1|8|16: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED|" + "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED"; + break; + default: + error_msg_and_fail("membarrier returned %#x, does" + " the test have to be updated?", rc); + } + printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n", + rc, text); } puts("+++ exited with 0 +++"); return 0; diff --git a/tests-mx32/memfd_create.c b/tests-mx32/memfd_create.c index 480fd177..4559b426 100644 --- a/tests-mx32/memfd_create.c +++ b/tests-mx32/memfd_create.c @@ -11,10 +11,11 @@ int main(void) { static const char text[] = "strace"; - int rc = syscall(__NR_memfd_create, text, 7); + int rc = syscall(__NR_memfd_create, text, 0xf); - printf("memfd_create(\"%s\", %s) = %d %s (%m)\n", - text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|0x4", rc, errno2name()); + printf("memfd_create(\"%s\", %s) = %s\n", + text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8", + sprintrc(rc)); puts("+++ exited with 0 +++"); return 0; diff --git a/tests-mx32/netlink_crypto.c b/tests-mx32/netlink_crypto.c index deb1644e..d15c17cf 100644 --- a/tests-mx32/netlink_crypto.c +++ b/tests-mx32/netlink_crypto.c @@ -78,9 +78,17 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = CRYPTO_MSG_DELALG; - nlh.nlmsg_flags = NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=CRYPTO_MSG_DELALG" + ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); + + nlh.nlmsg_type = CRYPTO_MSG_UPDATEALG; + nlh.nlmsg_flags = NLM_F_REPLACE; + rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u, type=CRYPTO_MSG_UPDATEALG" ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, NLM_F_REPLACE, diff --git a/tests-mx32/netlink_netfilter.c b/tests-mx32/netlink_netfilter.c index 2907c261..db2622eb 100644 --- a/tests-mx32/netlink_netfilter.c +++ b/tests-mx32/netlink_netfilter.c @@ -52,19 +52,19 @@ test_nlmsg_type(const int fd) ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); +# endif - nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | NFNL_MSG_BATCH_BEGIN; + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); - printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x" + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */" ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh.nlmsg_len, NFNL_MSG_BATCH_BEGIN, - (unsigned) sizeof(nlh), sprintrc(rc)); -# endif + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); - nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8); + nlh.nlmsg_type = 0xffff; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); - printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0" + printf("sendto(%d, {len=%u, type=0xff /* NFNL_SUBSYS_??? */<<8|0xff" ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); diff --git a/tests-mx32/netlink_route.c b/tests-mx32/netlink_route.c index 6af3b13a..a1c7d1f8 100644 --- a/tests-mx32/netlink_route.c +++ b/tests-mx32/netlink_route.c @@ -132,13 +132,12 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = RTM_DELLINK; - nlh.nlmsg_flags = NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=RTM_DELLINK" - ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}" + ", flags=NLM_F_NONREC, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh.nlmsg_len, NLM_F_REPLACE, - (unsigned) sizeof(nlh), sprintrc(rc)); + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); } static void diff --git a/tests-mx32/netlink_xfrm.c b/tests-mx32/netlink_xfrm.c index 27f62d1e..862a9f6e 100644 --- a/tests-mx32/netlink_xfrm.c +++ b/tests-mx32/netlink_xfrm.c @@ -76,9 +76,17 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = XFRM_MSG_DELSA; - nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=XFRM_MSG_DELSA" + ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); + + nlh.nlmsg_type = XFRM_MSG_ALLOCSPI; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE; + rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u, type=XFRM_MSG_ALLOCSPI" ", flags=NLM_F_ECHO|%#x, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, NLM_F_REPLACE, diff --git a/tests-mx32/nfnetlink_acct.c b/tests-mx32/nfnetlink_acct.c new file mode 100644 index 00000000..52cff99a --- /dev/null +++ b/tests-mx32/nfnetlink_acct.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_acct.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|0xff /* NFNL_MSG_ACCT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_CREATE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_GET" + ", flags=NLM_F_REQUEST|NLM_F_MATCH, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_DEL; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_DEL" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H") + +#endif diff --git a/tests-mx32/nfnetlink_acct.gen.test b/tests-mx32/nfnetlink_acct.gen.test new file mode 100755 index 00000000..7db22769 --- /dev/null +++ b/tests-mx32/nfnetlink_acct.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_cthelper.c b/tests-mx32/nfnetlink_cthelper.c new file mode 100644 index 00000000..47fab768 --- /dev/null +++ b/tests-mx32/nfnetlink_cthelper.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_cthelper.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|0xff /* NFNL_MSG_CTHELPER_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_DEL; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_DEL" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H") + +#endif diff --git a/tests-mx32/nfnetlink_cthelper.gen.test b/tests-mx32/nfnetlink_cthelper.gen.test new file mode 100755 index 00000000..661c949c --- /dev/null +++ b/tests-mx32/nfnetlink_cthelper.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_ctnetlink.c b/tests-mx32/nfnetlink_ctnetlink.c new file mode 100644 index 00000000..a227f38e --- /dev/null +++ b/tests-mx32/nfnetlink_ctnetlink.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_conntrack.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H") + +#endif diff --git a/tests-mx32/nfnetlink_ctnetlink.gen.test b/tests-mx32/nfnetlink_ctnetlink.gen.test new file mode 100755 index 00000000..d4c4daaf --- /dev/null +++ b/tests-mx32/nfnetlink_ctnetlink.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_ctnetlink_exp.c b/tests-mx32/nfnetlink_ctnetlink_exp.c new file mode 100644 index 00000000..aa17cd52 --- /dev/null +++ b/tests-mx32/nfnetlink_ctnetlink_exp.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_conntrack.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|0xff /* IPCTNL_MSG_EXP_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_EXCL; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW" + ", flags=NLM_F_REQUEST|NLM_F_EXCL, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_GET" + ", flags=NLM_F_REQUEST|NLM_F_ROOT, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H") + +#endif diff --git a/tests-mx32/nfnetlink_ctnetlink_exp.gen.test b/tests-mx32/nfnetlink_ctnetlink_exp.gen.test new file mode 100755 index 00000000..a5d83f9b --- /dev/null +++ b/tests-mx32/nfnetlink_ctnetlink_exp.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_cttimeout.c b/tests-mx32/nfnetlink_cttimeout.c new file mode 100644 index 00000000..e66dc24c --- /dev/null +++ b/tests-mx32/nfnetlink_cttimeout.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_cttimeout.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|0xff /* IPCTNL_MSG_TIMEOUT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_APPEND; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_APPEND, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ATOMIC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_GET" + ", flags=NLM_F_REQUEST|NLM_F_ATOMIC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H") + +#endif diff --git a/tests-mx32/nfnetlink_cttimeout.gen.test b/tests-mx32/nfnetlink_cttimeout.gen.test new file mode 100755 index 00000000..e197f000 --- /dev/null +++ b/tests-mx32/nfnetlink_cttimeout.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_ipset.c b/tests-mx32/nfnetlink_ipset.c new file mode 100644 index 00000000..b0d4a7d1 --- /dev/null +++ b/tests-mx32/nfnetlink_ipset.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/ipset/ip_set.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | IPSET_CMD_NONE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_IPSET<<8|IPSET_CMD_NONE" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_IPSET<<8|0xff /* IPSET_CMD_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_IPSET_IP_SET_H") + +#endif diff --git a/tests-mx32/nfnetlink_ipset.gen.test b/tests-mx32/nfnetlink_ipset.gen.test new file mode 100755 index 00000000..418437a7 --- /dev/null +++ b/tests-mx32/nfnetlink_ipset.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_nft_compat.c b/tests-mx32/nfnetlink_nft_compat.c new file mode 100644 index 00000000..072ee571 --- /dev/null +++ b/tests-mx32/nfnetlink_nft_compat.c @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nf_tables_compat.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|0xff /* NFNL_MSG_COMPAT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H") + +#endif diff --git a/tests-mx32/nfnetlink_nft_compat.gen.test b/tests-mx32/nfnetlink_nft_compat.gen.test new file mode 100755 index 00000000..c3dc8907 --- /dev/null +++ b/tests-mx32/nfnetlink_nft_compat.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_nftables.c b/tests-mx32/nfnetlink_nftables.c new file mode 100644 index 00000000..66e5fe94 --- /dev/null +++ b/tests-mx32/nfnetlink_nftables.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nf_tables.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|0xff /* NFT_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_GETTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_GETTABLE" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_DELTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_DELTABLE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_H") + +#endif diff --git a/tests-mx32/nfnetlink_nftables.gen.test b/tests-mx32/nfnetlink_nftables.gen.test new file mode 100755 index 00000000..25e90e85 --- /dev/null +++ b/tests-mx32/nfnetlink_nftables.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_osf.c b/tests-mx32/nfnetlink_osf.c new file mode 100644 index 00000000..a6dbb7e6 --- /dev/null +++ b/tests-mx32/nfnetlink_osf.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_XT_OSF_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/ip.h> +# include <linux/tcp.h> +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/xt_osf.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | OSF_MSG_ADD; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_OSF<<8|OSF_MSG_ADD" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_OSF<<8|0xff /* OSF_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_XT_OSF_H") + +#endif diff --git a/tests-mx32/nfnetlink_osf.gen.test b/tests-mx32/nfnetlink_osf.gen.test new file mode 100755 index 00000000..2689574a --- /dev/null +++ b/tests-mx32/nfnetlink_osf.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_queue.c b/tests-mx32/nfnetlink_queue.c new file mode 100644 index 00000000..73ebd9aa --- /dev/null +++ b/tests-mx32/nfnetlink_queue.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_queue.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_QUEUE<<8|NFQNL_MSG_PACKET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_QUEUE<<8|0xff /* NFQNL_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H") + +#endif diff --git a/tests-mx32/nfnetlink_queue.gen.test b/tests-mx32/nfnetlink_queue.gen.test new file mode 100755 index 00000000..739fb17d --- /dev/null +++ b/tests-mx32/nfnetlink_queue.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nfnetlink_ulog.c b/tests-mx32/nfnetlink_ulog.c new file mode 100644 index 00000000..31eb30f1 --- /dev/null +++ b/tests-mx32/nfnetlink_ulog.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_log.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | NFULNL_MSG_PACKET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ULOG<<8|NFULNL_MSG_PACKET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ULOG<<8|0xff /* NFULNL_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H") + +#endif diff --git a/tests-mx32/nfnetlink_ulog.gen.test b/tests-mx32/nfnetlink_ulog.gen.test new file mode 100755 index 00000000..850ebafc --- /dev/null +++ b/tests-mx32/nfnetlink_ulog.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nlattr_inet_diag_msg.c b/tests-mx32/nlattr_inet_diag_msg.c index 5666d74b..ccc62aed 100644 --- a/tests-mx32/nlattr_inet_diag_msg.c +++ b/tests-mx32/nlattr_inet_diag_msg.c @@ -182,6 +182,11 @@ main(void) INET_DIAG_MARK, pattern, mark, printf("%u", mark)); + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_inet_diag_msg, print_inet_diag_msg, + INET_DIAG_CLASS_ID, pattern, mark, + printf("%u", mark)); + static const uint8_t shutdown = 0xcd; TEST_NLATTR(fd, nlh0, hdrlen, init_inet_diag_msg, print_inet_diag_msg, INET_DIAG_SHUTDOWN, diff --git a/tests-mx32/nlattr_mdba_mdb_entry.c b/tests-mx32/nlattr_mdba_mdb_entry.c new file mode 100644 index 00000000..124fe1d4 --- /dev/null +++ b/tests-mx32/nlattr_mdba_mdb_entry.c @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_BR_PORT_MSG + +# include <stdio.h> +# include "test_nlattr.h" +# include <arpa/inet.h> +# include <linux/if_bridge.h> +# include <linux/rtnetlink.h> + +# ifndef MDB_TEMPORARY +# define MDB_TEMPORARY 0 +# endif +# ifndef MDBA_MDB_ENTRY_INFO +# define MDBA_MDB_ENTRY_INFO 1 +# endif +# ifndef MDBA_MDB_EATTR_TIMER +# define MDBA_MDB_EATTR_TIMER 1 +# endif + +const unsigned int hdrlen = sizeof(struct br_port_msg); + +static void +init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + unsigned int len = msg_len; + + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = len, + .nlmsg_type = RTM_GETMDB, + .nlmsg_flags = NLM_F_DUMP + ); + + struct br_port_msg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct br_port_msg, msg, + .family = AF_UNIX, + .ifindex = ifindex_lo() + ); + + struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg)); + len -= NLMSG_SPACE(hdrlen); + SET_STRUCT(struct nlattr, nla, + .nla_len = len, + .nla_type = MDBA_MDB + ); + + nla = nla + 1; + len -= NLA_HDRLEN; + SET_STRUCT(struct nlattr, nla, + .nla_len = len, + .nla_type = MDBA_MDB_ENTRY + ); +} + +static void +print_br_port_msg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {family=AF_UNIX" + ", ifindex=" IFINDEX_LO_STR "}" + ", {{nla_len=%u, nla_type=MDBA_MDB}" + ", {{nla_len=%u, nla_type=MDBA_MDB_ENTRY}", + msg_len, msg_len - NLMSG_SPACE(hdrlen), + msg_len - NLMSG_SPACE(hdrlen) - NLA_HDRLEN); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + const unsigned int nla_type = 0xffff & NLA_TYPE_MASK; + char nla_type_str[256]; + sprintf(nla_type_str, "%#x /* MDBA_MDB_ENTRY_??? */", nla_type); + TEST_NLATTR_(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2, + init_br_port_msg, print_br_port_msg, + nla_type, nla_type_str, + 4, pattern, 4, + print_quoted_hex(pattern, 4); + printf("}}")); + +# ifdef HAVE_STRUCT_BR_MDB_ENTRY + struct br_mdb_entry entry = { + .ifindex = ifindex_lo(), + .state = MDB_TEMPORARY, +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + .flags = MDB_FLAGS_OFFLOAD, +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + .vid = 0xcdef, +# endif + .addr = { + .proto = htons(AF_UNSPEC) + } + }; + + memcpy(&entry.addr.u, pattern, sizeof(entry.addr.u)); + TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen, + init_br_port_msg, print_br_port_msg, + MDBA_MDB_ENTRY_INFO, pattern, entry, 2, + printf("{ifindex=" IFINDEX_LO_STR); + printf(", state=MDB_TEMPORARY"); +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + printf(", flags=MDB_FLAGS_OFFLOAD"); +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + PRINT_FIELD_U(", ", entry, vid); +# endif + printf(", addr={u="); + print_quoted_hex(&entry.addr.u, + sizeof(entry.addr.u)); + printf(", proto=htons(AF_UNSPEC)}}")); + + static const struct nlattr nla = { + .nla_len = sizeof(nla), + .nla_type = MDBA_MDB_EATTR_TIMER + }; + char buf[NLMSG_ALIGN(sizeof(entry)) + sizeof(nla)]; + memcpy(buf, &entry, sizeof(entry)); + memcpy(buf + NLMSG_ALIGN(sizeof(entry)), &nla, sizeof(nla)); + TEST_NLATTR(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2, + init_br_port_msg, print_br_port_msg, + MDBA_MDB_ENTRY_INFO, sizeof(buf), buf, sizeof(buf), + printf("{ifindex=" IFINDEX_LO_STR); + printf(", state=MDB_TEMPORARY"); +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + printf(", flags=MDB_FLAGS_OFFLOAD"); +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + PRINT_FIELD_U(", ", entry, vid); +# endif + printf(", addr={u="); + print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u)); + printf(", proto=htons(AF_UNSPEC)}}" + ", {nla_len=%u, nla_type=MDBA_MDB_EATTR_TIMER}}}", + nla.nla_len)); +# endif /* HAVE_STRUCT_BR_MDB_ENTRY */ + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG") + +#endif diff --git a/tests-mx32/nlattr_mdba_mdb_entry.gen.test b/tests-mx32/nlattr_mdba_mdb_entry.gen.test new file mode 100755 index 00000000..67253e8e --- /dev/null +++ b/tests-mx32/nlattr_mdba_mdb_entry.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nlattr_mdba_router_port.c b/tests-mx32/nlattr_mdba_router_port.c new file mode 100644 index 00000000..af908cd8 --- /dev/null +++ b/tests-mx32/nlattr_mdba_router_port.c @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_BR_PORT_MSG + +# include <stdio.h> +# include "test_nlattr.h" +# include <linux/if_bridge.h> +# include <linux/rtnetlink.h> + +# ifndef MDBA_ROUTER +# define MDBA_ROUTER 2 +# endif +# ifndef MDBA_ROUTER_PORT +# define MDBA_ROUTER_PORT 1 +# endif +# ifndef MDBA_ROUTER_PATTR_TYPE +# define MDBA_ROUTER_PATTR_TYPE 2 +# endif +# ifndef MDB_RTR_TYPE_DISABLED +# define MDB_RTR_TYPE_DISABLED 0 +# endif + +const unsigned int hdrlen = sizeof(struct br_port_msg); + +static void +init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETMDB, + .nlmsg_flags = NLM_F_DUMP + ); + + struct br_port_msg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct br_port_msg, msg, + .family = AF_UNIX, + .ifindex = ifindex_lo() + ); + + struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = MDBA_ROUTER + ); +} + +static void +print_br_port_msg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {family=AF_UNIX" + ", ifindex=" IFINDEX_LO_STR "}" + ", {{nla_len=%u, nla_type=MDBA_ROUTER}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + const uint32_t ifindex = ifindex_lo(); + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_br_port_msg, print_br_port_msg, + MDBA_ROUTER_PORT, pattern, ifindex, + printf(IFINDEX_LO_STR)); + + const uint8_t type = MDB_RTR_TYPE_DISABLED; + static const struct nlattr nla = { + .nla_len = NLA_HDRLEN + sizeof(type), + .nla_type = MDBA_ROUTER_PATTR_TYPE + }; + char buf[NLMSG_ALIGN(ifindex) + NLA_HDRLEN + sizeof(type)]; + memcpy(buf, &ifindex, sizeof(ifindex)); + memcpy(buf + NLMSG_ALIGN(ifindex), &nla, sizeof(nla)); + memcpy(buf + NLMSG_ALIGN(ifindex) + NLA_HDRLEN, &type, sizeof(type)); + TEST_NLATTR(fd, nlh0 - NLA_HDRLEN, hdrlen + NLA_HDRLEN, + init_br_port_msg, print_br_port_msg, + MDBA_ROUTER_PORT, sizeof(buf), buf, sizeof(buf), + printf(IFINDEX_LO_STR + ", {{nla_len=%u, nla_type=MDBA_ROUTER_PATTR_TYPE}" + ", MDB_RTR_TYPE_DISABLED}}", + nla.nla_len)); + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG") + +#endif diff --git a/tests-mx32/nlattr_mdba_router_port.gen.test b/tests-mx32/nlattr_mdba_router_port.gen.test new file mode 100755 index 00000000..ce9ea148 --- /dev/null +++ b/tests-mx32/nlattr_mdba_router_port.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nlattr_tc_stats.c b/tests-mx32/nlattr_tc_stats.c new file mode 100644 index 00000000..dd76cc7d --- /dev/null +++ b/tests-mx32/nlattr_tc_stats.c @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_GNET_STATS_BASIC + +# include <stdio.h> +# include <stddef.h> +# include "test_nlattr.h" +# include <linux/gen_stats.h> +# include <linux/rtnetlink.h> + +const unsigned int hdrlen = sizeof(struct tcmsg); + +static void +init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETQDISC, + .nlmsg_flags = NLM_F_DUMP + ); + + struct tcmsg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct tcmsg, msg, + .tcm_family = AF_UNIX, + .tcm_ifindex = ifindex_lo() + ); + + struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = TCA_STATS2 + ); +} + +static void +print_tcmsg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {tcm_family=AF_UNIX" + ", tcm_ifindex=" IFINDEX_LO_STR + ", tcm_handle=0, tcm_parent=0, tcm_info=0}" + ", {{nla_len=%u, nla_type=TCA_STATS2}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + static const struct gnet_stats_basic sb = { + .bytes = 0xabcdebdafefeadeb, + .packets = 0xbdcdeabf + }; + char buf[offsetofend(struct gnet_stats_basic, packets)]; + memcpy(buf, &sb, sizeof(buf)); + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_BASIC, pattern, buf, + PRINT_FIELD_U("{", sb, bytes); + PRINT_FIELD_U(", ", sb, packets); + printf("}")); + +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST + static const struct gnet_stats_rate_est est = { + .bps = 0xebcdaebd, + .pps = 0xabdceade, + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_RATE_EST, pattern, est, + PRINT_FIELD_U("{", est, bps); + PRINT_FIELD_U(", ", est, pps); + printf("}")); +#endif + +#ifdef HAVE_STRUCT_GNET_STATS_QUEUE + static const struct gnet_stats_queue qstats = { + .qlen = 0xabcdeabd, + .backlog = 0xbcdaebad, + .drops = 0xcdbeaedb, + .requeues = 0xdebaefab, + .overlimits = 0xefaebade + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_QUEUE, pattern, qstats, + PRINT_FIELD_U("{", qstats, qlen); + PRINT_FIELD_U(", ", qstats, backlog); + PRINT_FIELD_U(", ", qstats, drops); + PRINT_FIELD_U(", ", qstats, requeues); + PRINT_FIELD_U(", ", qstats, overlimits); + printf("}")); +#endif + +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64 + static const struct gnet_stats_rate_est64 est64 = { + .bps = 0xacbdcdefafecaebf, + .pps = 0xcdabeabdfeabceaf + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_RATE_EST64, pattern, est64, + PRINT_FIELD_U("{", est64, bps); + PRINT_FIELD_U(", ", est64, pps); + printf("}")); +#endif + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_GNET_STATS_BASIC") + +#endif diff --git a/tests-mx32/nlattr_tc_stats.gen.test b/tests-mx32/nlattr_tc_stats.gen.test new file mode 100755 index 00000000..72780d4a --- /dev/null +++ b/tests-mx32/nlattr_tc_stats.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nlattr_tca_stab.c b/tests-mx32/nlattr_tca_stab.c new file mode 100644 index 00000000..de6d3569 --- /dev/null +++ b/tests-mx32/nlattr_tca_stab.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#include <stdio.h> +#include "test_nlattr.h" +#include <linux/pkt_sched.h> +#include <linux/rtnetlink.h> + +#ifndef TCA_STAB +# define TCA_STAB 8 +#endif +#ifndef TCA_STAB_DATA +# define TCA_STAB_DATA 2 +#endif + +const unsigned int hdrlen = sizeof(struct tcmsg); + +static void +init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETQDISC, + .nlmsg_flags = NLM_F_DUMP + ); + + struct tcmsg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct tcmsg, msg, + .tcm_family = AF_UNIX, + .tcm_ifindex = ifindex_lo() + ); + + struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = TCA_STAB + ); +} + +static void +print_tcmsg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {tcm_family=AF_UNIX" + ", tcm_ifindex=" IFINDEX_LO_STR + ", tcm_handle=0, tcm_parent=0, tcm_info=0}" + ", {{nla_len=%u, nla_type=TCA_STAB}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +static void +print_uint16(const uint16_t *p) +{ + printf("%u", *p); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + +#ifdef HAVE_STRUCT_TC_SIZESPEC + static const struct tc_sizespec s = { + .cell_log = 0xab, + .size_log = 0xcd, + .cell_align = 0xefab, + .overhead = 0xcdadeefa, + .linklayer = 0xefbaafeb, + .mpu = 0xfebfaefb, + .mtu = 0xacdbefab, + .tsize = 0xbdeaabed + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STAB_BASE, pattern, s, + PRINT_FIELD_U("{", s, cell_log); + PRINT_FIELD_U(", ", s, size_log); + PRINT_FIELD_D(", ", s, cell_align); + PRINT_FIELD_D(", ", s, overhead); + PRINT_FIELD_U(", ", s, linklayer); + PRINT_FIELD_U(", ", s, mpu); + PRINT_FIELD_U(", ", s, mtu); + PRINT_FIELD_U(", ", s, tsize); + printf("}")); +#endif + + uint16_t data[2] = { 0xacbd, 0xefba }; + TEST_NESTED_NLATTR_ARRAY(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STAB_DATA, pattern, data, print_uint16); + + puts("+++ exited with 0 +++"); + return 0; +} diff --git a/tests-mx32/nlattr_tca_stab.gen.test b/tests-mx32/nlattr_tca_stab.gen.test new file mode 100755 index 00000000..14cd1a54 --- /dev/null +++ b/tests-mx32/nlattr_tca_stab.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests-mx32/nlattr_tcmsg.c b/tests-mx32/nlattr_tcmsg.c index 00b7ae46..32ce4790 100644 --- a/tests-mx32/nlattr_tcmsg.c +++ b/tests-mx32/nlattr_tcmsg.c @@ -29,7 +29,9 @@ #include "tests.h" #include <stdio.h> +#include <stddef.h> #include "test_nlattr.h" +#include <linux/pkt_sched.h> #include <linux/rtnetlink.h> static void @@ -80,6 +82,42 @@ main(void) 4, pattern, 4, print_quoted_hex(pattern, 4)); + static const struct tc_stats st = { + .bytes = 0xabcdcdbefeadefac, + .packets = 0xbcdeaefd, + .drops = 0xcdedafed, + .overlimits = 0xdcdbefad, + .bps = 0xefaebfad, + .pps = 0xfefbaedb, + .qlen = 0xabcdefab, + .backlog = 0xbdeabeab + }; + char buf[offsetofend(struct tc_stats, backlog)]; + memcpy(buf, &st, sizeof(buf)); + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS, pattern, buf, + PRINT_FIELD_U("{", st, bytes); + PRINT_FIELD_U(", ", st, packets); + PRINT_FIELD_U(", ", st, drops); + PRINT_FIELD_U(", ", st, overlimits); + PRINT_FIELD_U(", ", st, bps); + PRINT_FIELD_U(", ", st, pps); + PRINT_FIELD_U(", ", st, qlen); + PRINT_FIELD_U(", ", st, backlog); + printf("}")); + + static const struct tc_estimator est = { + .interval = 0xcd, + .ewma_log = 0xab + }; + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_RATE, pattern, est, + PRINT_FIELD_D("{", est, interval); + PRINT_FIELD_U(", ", est, ewma_log); + printf("}")); + puts("+++ exited with 0 +++"); return 0; } diff --git a/tests-mx32/options-syntax.test b/tests-mx32/options-syntax.test index b4d9be70..2e459c96 100755 --- a/tests-mx32/options-syntax.test +++ b/tests-mx32/options-syntax.test @@ -80,16 +80,21 @@ check_h "invalid -s argument: '-42'" -s -42 check_h "invalid -s argument: '1073741824'" -s 1073741824 check_h "invalid -I argument: '5'" -I 5 -cat > "$EXP" << '__EOF__' -strace: must have PROG [ARGS] or -p PID -Try 'strace -h' for more information. -__EOF__ ../zeroargc "$strace_exp" /bin/true 2> "$LOG" && dump_log_and_fail_with \ 'zeroargc strace failed to handle the error properly' -match_diff "$LOG" "$EXP" || - dump_log_and_fail_with \ - 'zeroargc strace failed to print expected diagnostics' +cat > "$EXP" << __EOF__ +$strace_exp: must have PROG [ARGS] or -p PID +Try '$strace_exp -h' for more information. +__EOF__ +diff -u -- "$EXP" "$LOG" > /dev/null || { + cat > "$EXP" <<- '__EOF__' + strace: must have PROG [ARGS] or -p PID + Try 'strace -h' for more information. + __EOF__ + match_diff "$LOG" "$EXP" \ + "zeroargc $STRACE $args output mismatch" +} if [ -n "${UID-}" ]; then if [ "${UID-}" = 0 ]; then diff --git a/tests-mx32/prctl-seccomp-filter-v.c b/tests-mx32/prctl-seccomp-filter-v.c index cfd5d3dd..7a65d898 100644 --- a/tests-mx32/prctl-seccomp-filter-v.c +++ b/tests-mx32/prctl-seccomp-filter-v.c @@ -114,7 +114,7 @@ main(void) PRINT_DENY_SYSCALL(sync, EBUSY), PRINT_DENY_SYSCALL(setsid, EPERM), - printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)"); + printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)"); puts("]}) = 0"); puts("+++ exited with 0 +++"); diff --git a/tests-mx32/pure_executables.am b/tests-mx32/pure_executables.am index 9dc532a6..2cae9ae5 100644 --- a/tests-mx32/pure_executables.am +++ b/tests-mx32/pure_executables.am @@ -123,6 +123,7 @@ PURE_EXECUTABLES = \ ipc_sem \ ipc_shm \ kcmp \ + kcmp-y \ kexec_file_load \ kexec_load \ keyctl \ @@ -180,6 +181,17 @@ PURE_EXECUTABLES = \ netlink_sock_diag \ netlink_xfrm \ newfstatat \ + nfnetlink_acct \ + nfnetlink_cthelper \ + nfnetlink_ctnetlink \ + nfnetlink_ctnetlink_exp \ + nfnetlink_cttimeout \ + nfnetlink_nft_compat \ + nfnetlink_nftables \ + nfnetlink_ipset \ + nfnetlink_osf \ + nfnetlink_queue \ + nfnetlink_ulog \ nlattr \ nlattr_crypto_user_alg \ nlattr_br_port_msg \ @@ -194,6 +206,8 @@ PURE_EXECUTABLES = \ nlattr_inet_diag_msg \ nlattr_inet_diag_req_compat \ nlattr_inet_diag_req_v2 \ + nlattr_mdba_mdb_entry \ + nlattr_mdba_router_port \ nlattr_ndmsg \ nlattr_ndtmsg \ nlattr_netconfmsg \ @@ -203,6 +217,8 @@ PURE_EXECUTABLES = \ nlattr_rtgenmsg \ nlattr_rtmsg \ nlattr_smc_diag_msg \ + nlattr_tc_stats \ + nlattr_tca_stab \ nlattr_tcamsg \ nlattr_tcmsg \ nlattr_unix_diag_msg \ @@ -283,6 +299,7 @@ PURE_EXECUTABLES = \ sched_xetscheduler \ sched_yield \ seccomp-filter \ + seccomp_get_action_avail \ select \ semop \ sendfile \ diff --git a/tests-mx32/pure_executables.list b/tests-mx32/pure_executables.list index dade57b0..d98b17db 100755 --- a/tests-mx32/pure_executables.list +++ b/tests-mx32/pure_executables.list @@ -122,6 +122,7 @@ ipc_msgbuf ipc_sem ipc_shm kcmp +kcmp-y kexec_file_load kexec_load keyctl @@ -179,6 +180,17 @@ netlink_selinux netlink_sock_diag netlink_xfrm newfstatat +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_ctnetlink +nfnetlink_ctnetlink_exp +nfnetlink_cttimeout +nfnetlink_nft_compat +nfnetlink_nftables +nfnetlink_ipset +nfnetlink_osf +nfnetlink_queue +nfnetlink_ulog nlattr nlattr_crypto_user_alg nlattr_br_port_msg @@ -193,6 +205,8 @@ nlattr_ifla_xdp nlattr_inet_diag_msg nlattr_inet_diag_req_compat nlattr_inet_diag_req_v2 +nlattr_mdba_mdb_entry +nlattr_mdba_router_port nlattr_ndmsg nlattr_ndtmsg nlattr_netconfmsg @@ -202,6 +216,8 @@ nlattr_packet_diag_msg nlattr_rtgenmsg nlattr_rtmsg nlattr_smc_diag_msg +nlattr_tc_stats +nlattr_tca_stab nlattr_tcamsg nlattr_tcmsg nlattr_unix_diag_msg @@ -282,6 +298,7 @@ sched_xetparam sched_xetscheduler sched_yield seccomp-filter +seccomp_get_action_avail select semop sendfile diff --git a/tests-mx32/seccomp-filter-v.c b/tests-mx32/seccomp-filter-v.c index e419c6cb..34ab3b58 100644 --- a/tests-mx32/seccomp-filter-v.c +++ b/tests-mx32/seccomp-filter-v.c @@ -95,7 +95,7 @@ main(void) tprintf("%s", ""); static const char kill_stmt_txt[] = - "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)"; + "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)"; struct sock_filter *const filter = tail_memdup(filter_c, sizeof(filter_c)); struct sock_filter *const big_filter = @@ -136,7 +136,8 @@ main(void) prog->filter = big_filter; prog->len = BPF_MAXINSNS + 1; tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[", - "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", prog->len); + "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc", + prog->len); for (i = 0; i < BPF_MAXINSNS; ++i) { if (i) tprintf(", "); diff --git a/tests-mx32/seccomp-filter.c b/tests-mx32/seccomp-filter.c index 6e009823..7bc76560 100644 --- a/tests-mx32/seccomp-filter.c +++ b/tests-mx32/seccomp-filter.c @@ -55,12 +55,13 @@ main(void) prog->len = N; rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -1, prog); printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=%p})" - " = %ld %s (%m)\n", "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", + " = %ld %s (%m)\n", + "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc", prog->len, prog->filter, rc, errno2name()); - rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -2L, efault); + rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -4L, efault); printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n", - "0xfffffffe /* SECCOMP_FILTER_FLAG_??? */", + "0xfffffffc /* SECCOMP_FILTER_FLAG_??? */", efault, rc, errno2name()); puts("+++ exited with 0 +++"); diff --git a/tests-mx32/seccomp_get_action_avail.c b/tests-mx32/seccomp_get_action_avail.c new file mode 100644 index 00000000..ed231e17 --- /dev/null +++ b/tests-mx32/seccomp_get_action_avail.c @@ -0,0 +1,125 @@ +/* + * Check decoding of seccomp SECCOMP_GET_ACTION_AVAIL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <asm/unistd.h> + +#ifdef __NR_seccomp + +# include <stdio.h> +# include <stdint.h> +# include <unistd.h> + +# ifdef HAVE_LINUX_SECCOMP_H +# include <linux/seccomp.h> +# endif + +# ifndef SECCOMP_GET_ACTION_AVAIL +# define SECCOMP_GET_ACTION_AVAIL 2 +# endif + +static const char *errstr; + +static long +k_seccomp(const kernel_ulong_t op, const kernel_ulong_t flags, + const kernel_ulong_t args) +{ + const long rc = syscall(__NR_seccomp, op, flags, args); + errstr = sprintrc(rc); + return rc; +} + +int +main(void) +{ + TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, act); + kernel_ulong_t op = (kernel_ulong_t) 0xfacefeed00000000ULL + | SECCOMP_GET_ACTION_AVAIL; + kernel_ulong_t flags = (kernel_ulong_t) 0xdeadbeef00000000ULL; + unsigned int i; + + struct { + uint32_t val; + const char *str; + } actions [] = { + { 0, "SECCOMP_RET_KILL_THREAD" }, +# ifdef SECCOMP_RET_KILL_PROCESS + { ARG_STR(SECCOMP_RET_KILL_PROCESS) }, +# endif +# ifdef SECCOMP_RET_TRAP + { ARG_STR(SECCOMP_RET_TRAP) }, +# endif +# ifdef SECCOMP_RET_ERRNO + { ARG_STR(SECCOMP_RET_ERRNO) }, +# endif +# ifdef SECCOMP_RET_TRACE + { ARG_STR(SECCOMP_RET_TRACE) }, +# endif +# ifdef SECCOMP_RET_LOG + { ARG_STR(SECCOMP_RET_LOG) }, +# endif +# ifdef SECCOMP_RET_ALLOW + { ARG_STR(SECCOMP_RET_ALLOW) }, +# endif + { 0xffffffff, "0xffffffff /* SECCOMP_RET_??? */" } + }; + + for (i = 0; i < ARRAY_SIZE(actions); ++i) { + *act = actions[i].val; + k_seccomp(op, flags, (uintptr_t) act); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, [%s]) = %s\n", + actions[i].str, errstr); + } + + *act = actions[0].val; + + k_seccomp(op, flags, (uintptr_t) (act + 1)); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %p) = %s\n", + act + 1, errstr); + + if (F8ILL_KULONG_SUPPORTED) { + k_seccomp(op, flags, f8ill_ptr_to_kulong(act)); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %#jx) = %s\n", + (uintmax_t) f8ill_ptr_to_kulong(act), errstr); + } + + flags |= 0xcafef00d; + k_seccomp(op, flags, 0); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, %u, NULL) = %s\n", + (unsigned int) flags, errstr); + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("__NR_seccomp") + +#endif diff --git a/tests-mx32/seccomp_get_action_avail.gen.test b/tests-mx32/seccomp_get_action_avail.gen.test new file mode 100755 index 00000000..49974510 --- /dev/null +++ b/tests-mx32/seccomp_get_action_avail.gen.test @@ -0,0 +1,4 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp_get_action_avail -e trace=seccomp); do not edit. +. "${srcdir=.}/init.sh" +run_strace_match_diff -e trace=seccomp diff --git a/tests-mx32/set_sigblock.c b/tests-mx32/set_sigblock.c new file mode 100644 index 00000000..4786322c --- /dev/null +++ b/tests-mx32/set_sigblock.c @@ -0,0 +1,53 @@ +/* + * Execute a command with the specified signal blocked/unblocked. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> +#include <unistd.h> + +int +main(int ac, char **av) +{ + if (ac < 4) + error_msg_and_fail("usage: set_sigblock 0|1 signum path..."); + + const int block = atoi(av[1]); + const int signum = atoi(av[2]); + sigset_t mask; + + sigemptyset(&mask); + if (sigaddset(&mask, signum)) + perror_msg_and_fail("sigaddset: %s", av[2]); + if (sigprocmask(block ? SIG_BLOCK : SIG_UNBLOCK, &mask, NULL)) + perror_msg_and_fail("sigprocmask"); + + execvp(av[3], av + 3); + perror_msg_and_fail("execvp: %s", av[3]); +} diff --git a/tests-mx32/set_sigign.c b/tests-mx32/set_sigign.c new file mode 100644 index 00000000..0319fed3 --- /dev/null +++ b/tests-mx32/set_sigign.c @@ -0,0 +1,49 @@ +/* + * Execute a command with a signal handler set to SIG_IGN/SIG_DFL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> +#include <unistd.h> + +int +main(int ac, char **av) +{ + if (ac < 4) + error_msg_and_fail("usage: set_sigign 0|1 signum path..."); + + const int ign = atoi(av[1]); + const int signum = atoi(av[2]); + + if (signal(signum, ign ? SIG_IGN : SIG_DFL) == SIG_ERR) + perror_msg_and_fail("signal: %s", av[2]); + + execvp(av[3], av + 3); + perror_msg_and_fail("execvp: %s", av[3]); +} diff --git a/tests-mx32/sigblock.test b/tests-mx32/sigblock.test new file mode 100755 index 00000000..ddbe2dea --- /dev/null +++ b/tests-mx32/sigblock.test @@ -0,0 +1,22 @@ +#!/bin/sh + +# Check signal mask transparency. +# Starting with commit v4.17-5-gf83b49b strace is expected +# to forward the signal mask to tracees unchanged. + +. "${srcdir=.}/init.sh" + +run_prog ../list_sigaction_signum > /dev/null +saved_STRACE="$STRACE" + +for sig in $(../list_sigaction_signum); do + for block in 0 1; do + set_cmd="../set_sigblock $block $sig" + check_cmd="../check_sigblock $block $sig" + run_prog $set_cmd $check_cmd + STRACE="$set_cmd $saved_STRACE" + for i in '' -I1 -I2 -I3 -I4; do + run_strace $i -enone $check_cmd + done + done +done diff --git a/tests-mx32/sigign.test b/tests-mx32/sigign.test new file mode 100755 index 00000000..3164e72e --- /dev/null +++ b/tests-mx32/sigign.test @@ -0,0 +1,22 @@ +#!/bin/sh + +# Check signal disposition transparency. +# Starting with commit v4.17-8-ge97a66f strace is expected +# to forward the signal disposition to tracees unchanged. + +. "${srcdir=.}/init.sh" + +run_prog ../list_sigaction_signum > /dev/null +saved_STRACE="$STRACE" + +for sig in $(../list_sigaction_signum); do + for ign in 0 1; do + set_cmd="../set_sigign $ign $sig" + check_cmd="../check_sigign $ign $sig" + run_prog $set_cmd $check_cmd + STRACE="$set_cmd $saved_STRACE" + for i in '' -I1 -I2 -I3 -I4; do + run_strace $i -enone $check_cmd + done + done +done diff --git a/tests-mx32/test_nlattr.h b/tests-mx32/test_nlattr.h index 048d5475..43f467ff 100644 --- a/tests-mx32/test_nlattr.h +++ b/tests-mx32/test_nlattr.h @@ -203,14 +203,75 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) printf("]")); \ } while (0) -#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \ - init_msg_, print_msg_, \ - nla_type_, pattern_, obj_, ...) \ +#define TEST_NESTED_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, nla_type_str_, \ + pattern_, obj_, depth_, ...) \ do { \ const unsigned int plen = \ sizeof(obj_) - 1 > DEFAULT_STRLEN \ ? DEFAULT_STRLEN : (int) sizeof(obj_) - 1; \ /* len < sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + plen, (pattern_), plen, \ + print_quoted_hex((pattern_), plen); \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + /* short read of sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + sizeof(obj_), \ + (pattern_), sizeof(obj_) - 1, \ + printf("%p", RTA_DATA(TEST_NLATTR_nla)); \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + /* sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + sizeof(obj_), \ + &(obj_), sizeof(obj_), \ + __VA_ARGS__; \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + } while (0) + +#define TEST_NESTED_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, \ + depth_, ...) \ + TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + (pattern_), (obj_), (depth_), \ + __VA_ARGS__) + +#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, ...) \ + TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + (pattern_), (obj_), 1, \ + __VA_ARGS__) + +#define TEST_NESTED_NLATTR_ARRAY(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, print_elem_)\ + do { \ + const unsigned int plen = \ + sizeof((obj_)[0]) - 1 > DEFAULT_STRLEN \ + ? DEFAULT_STRLEN : (int) sizeof((obj_)[0]) - 1; \ + /* len < sizeof((obj_)[0]) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ (init_msg_), (print_msg_), \ @@ -218,15 +279,36 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) plen, (pattern_), plen, \ print_quoted_hex((pattern_), plen); \ printf("}")); \ + /* sizeof((obj_)[0]) < len < sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ + (hdrlen_) + NLA_HDRLEN, \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + sizeof(obj_) - 1, \ + &(obj_), sizeof(obj_) - 1, \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf("]}")); \ /* short read of sizeof(obj_) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ (init_msg_), (print_msg_), \ (nla_type_), #nla_type_, \ sizeof(obj_), \ - (pattern_), sizeof(obj_) - 1, \ - printf("%p}", \ - RTA_DATA(TEST_NLATTR_nla))); \ + &(obj_), sizeof(obj_) - 1, \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf(", %p]}", \ + RTA_DATA(TEST_NLATTR_nla) \ + + sizeof((obj_)[0]))); \ /* sizeof(obj_) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ @@ -234,6 +316,11 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) (nla_type_), #nla_type_, \ sizeof(obj_), \ &(obj_), sizeof(obj_), \ - __VA_ARGS__, \ - printf("}")); \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_); ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf("]}")); \ } while (0) diff --git a/tests/Makefile.am b/tests/Makefile.am index b4ba22a6..f2109fd4 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -87,6 +87,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ attach-p-cmd-p \ block_reset_raise_run \ caps-abbrev \ + check_sigblock \ + check_sigign \ clone_parent \ clone_ptrace \ count-f \ @@ -106,6 +108,7 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ ioctl_rtc-v \ is_linux_mips_n64 \ ksysent \ + list_sigaction_signum \ mmsg-silent \ mmsg_name-v \ msg_control-v \ @@ -135,6 +138,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \ seccomp-filter-v \ seccomp-strict \ set_ptracer_any \ + set_sigblock \ + set_sigign \ signal_receive \ sleep \ stack-fcall \ @@ -278,6 +283,8 @@ MISC_TESTS = \ redirect-fds.test \ redirect.test \ restart_syscall.test \ + sigblock.test \ + sigign.test \ strace-C.test \ strace-E.test \ strace-S.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 71e57374..1e8085a5 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -139,7 +139,8 @@ DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \ attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \ - caps-abbrev$(EXEEXT) clone_parent$(EXEEXT) \ + caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \ + check_sigign$(EXEEXT) clone_parent$(EXEEXT) \ clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \ execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \ fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \ @@ -147,10 +148,11 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \ ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \ is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \ - mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \ - msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \ - netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \ - netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \ + list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \ + mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \ + net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \ + netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \ + nsyscalls$(EXEEXT) pc$(EXEEXT) \ perf_event_open_nonverbose$(EXEEXT) \ perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \ prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \ @@ -161,8 +163,9 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \ redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \ run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \ seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \ - set_ptracer_any$(EXEEXT) signal_receive$(EXEEXT) \ - sleep$(EXEEXT) stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \ + set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \ + set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \ + stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \ unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \ unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \ wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT) @@ -253,9 +256,9 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \ iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \ ipc_msg$(EXEEXT) ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) \ - ipc_shm$(EXEEXT) kcmp$(EXEEXT) kexec_file_load$(EXEEXT) \ - kexec_load$(EXEEXT) keyctl$(EXEEXT) kill$(EXEEXT) \ - lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \ + ipc_shm$(EXEEXT) kcmp$(EXEEXT) kcmp-y$(EXEEXT) \ + kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) keyctl$(EXEEXT) \ + kill$(EXEEXT) lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \ linkat$(EXEEXT) llseek$(EXEEXT) lookup_dcookie$(EXEEXT) \ lseek$(EXEEXT) lstat$(EXEEXT) lstat64$(EXEEXT) \ madvise$(EXEEXT) mbind$(EXEEXT) membarrier$(EXEEXT) \ @@ -275,19 +278,27 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ netlink_netfilter$(EXEEXT) netlink_protocol$(EXEEXT) \ netlink_route$(EXEEXT) netlink_selinux$(EXEEXT) \ netlink_sock_diag$(EXEEXT) netlink_xfrm$(EXEEXT) \ - newfstatat$(EXEEXT) nlattr$(EXEEXT) \ - nlattr_crypto_user_alg$(EXEEXT) nlattr_br_port_msg$(EXEEXT) \ - nlattr_dcbmsg$(EXEEXT) nlattr_fib_rule_hdr$(EXEEXT) \ - nlattr_ifaddrlblmsg$(EXEEXT) nlattr_ifaddrmsg$(EXEEXT) \ - nlattr_ifinfomsg$(EXEEXT) nlattr_ifla_brport$(EXEEXT) \ - nlattr_ifla_port$(EXEEXT) nlattr_ifla_xdp$(EXEEXT) \ - nlattr_inet_diag_msg$(EXEEXT) \ + newfstatat$(EXEEXT) nfnetlink_acct$(EXEEXT) \ + nfnetlink_cthelper$(EXEEXT) nfnetlink_ctnetlink$(EXEEXT) \ + nfnetlink_ctnetlink_exp$(EXEEXT) nfnetlink_cttimeout$(EXEEXT) \ + nfnetlink_nft_compat$(EXEEXT) nfnetlink_nftables$(EXEEXT) \ + nfnetlink_ipset$(EXEEXT) nfnetlink_osf$(EXEEXT) \ + nfnetlink_queue$(EXEEXT) nfnetlink_ulog$(EXEEXT) \ + nlattr$(EXEEXT) nlattr_crypto_user_alg$(EXEEXT) \ + nlattr_br_port_msg$(EXEEXT) nlattr_dcbmsg$(EXEEXT) \ + nlattr_fib_rule_hdr$(EXEEXT) nlattr_ifaddrlblmsg$(EXEEXT) \ + nlattr_ifaddrmsg$(EXEEXT) nlattr_ifinfomsg$(EXEEXT) \ + nlattr_ifla_brport$(EXEEXT) nlattr_ifla_port$(EXEEXT) \ + nlattr_ifla_xdp$(EXEEXT) nlattr_inet_diag_msg$(EXEEXT) \ nlattr_inet_diag_req_compat$(EXEEXT) \ - nlattr_inet_diag_req_v2$(EXEEXT) nlattr_ndmsg$(EXEEXT) \ + nlattr_inet_diag_req_v2$(EXEEXT) \ + nlattr_mdba_mdb_entry$(EXEEXT) \ + nlattr_mdba_router_port$(EXEEXT) nlattr_ndmsg$(EXEEXT) \ nlattr_ndtmsg$(EXEEXT) nlattr_netconfmsg$(EXEEXT) \ nlattr_netlink_diag_msg$(EXEEXT) nlattr_nlmsgerr$(EXEEXT) \ nlattr_packet_diag_msg$(EXEEXT) nlattr_rtgenmsg$(EXEEXT) \ nlattr_rtmsg$(EXEEXT) nlattr_smc_diag_msg$(EXEEXT) \ + nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \ nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \ nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \ oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \ @@ -321,7 +332,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \ sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \ sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \ sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \ - sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) select$(EXEEXT) \ + sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) \ + seccomp_get_action_avail$(EXEEXT) select$(EXEEXT) \ semop$(EXEEXT) sendfile$(EXEEXT) sendfile64$(EXEEXT) \ set_mempolicy$(EXEEXT) setdomainname$(EXEEXT) \ setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \ @@ -439,6 +451,14 @@ caps_abbrev_SOURCES = caps-abbrev.c caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT) caps_abbrev_LDADD = $(LDADD) caps_abbrev_DEPENDENCIES = libtests.a +check_sigblock_SOURCES = check_sigblock.c +check_sigblock_OBJECTS = check_sigblock.$(OBJEXT) +check_sigblock_LDADD = $(LDADD) +check_sigblock_DEPENDENCIES = libtests.a +check_sigign_SOURCES = check_sigign.c +check_sigign_OBJECTS = check_sigign.$(OBJEXT) +check_sigign_LDADD = $(LDADD) +check_sigign_DEPENDENCIES = libtests.a chmod_SOURCES = chmod.c chmod_OBJECTS = chmod.$(OBJEXT) chmod_LDADD = $(LDADD) @@ -936,6 +956,10 @@ kcmp_SOURCES = kcmp.c kcmp_OBJECTS = kcmp.$(OBJEXT) kcmp_LDADD = $(LDADD) kcmp_DEPENDENCIES = libtests.a +kcmp_y_SOURCES = kcmp-y.c +kcmp_y_OBJECTS = kcmp-y.$(OBJEXT) +kcmp_y_LDADD = $(LDADD) +kcmp_y_DEPENDENCIES = libtests.a kexec_file_load_SOURCES = kexec_file_load.c kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT) kexec_file_load_LDADD = $(LDADD) @@ -972,6 +996,10 @@ linkat_SOURCES = linkat.c linkat_OBJECTS = linkat.$(OBJEXT) linkat_LDADD = $(LDADD) linkat_DEPENDENCIES = libtests.a +list_sigaction_signum_SOURCES = list_sigaction_signum.c +list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) +list_sigaction_signum_LDADD = $(LDADD) +list_sigaction_signum_DEPENDENCIES = libtests.a llseek_SOURCES = llseek.c llseek_OBJECTS = llseek.$(OBJEXT) llseek_LDADD = $(LDADD) @@ -1192,6 +1220,50 @@ newfstatat_SOURCES = newfstatat.c newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT) newfstatat_LDADD = $(LDADD) newfstatat_DEPENDENCIES = libtests.a +nfnetlink_acct_SOURCES = nfnetlink_acct.c +nfnetlink_acct_OBJECTS = nfnetlink_acct.$(OBJEXT) +nfnetlink_acct_LDADD = $(LDADD) +nfnetlink_acct_DEPENDENCIES = libtests.a +nfnetlink_cthelper_SOURCES = nfnetlink_cthelper.c +nfnetlink_cthelper_OBJECTS = nfnetlink_cthelper.$(OBJEXT) +nfnetlink_cthelper_LDADD = $(LDADD) +nfnetlink_cthelper_DEPENDENCIES = libtests.a +nfnetlink_ctnetlink_SOURCES = nfnetlink_ctnetlink.c +nfnetlink_ctnetlink_OBJECTS = nfnetlink_ctnetlink.$(OBJEXT) +nfnetlink_ctnetlink_LDADD = $(LDADD) +nfnetlink_ctnetlink_DEPENDENCIES = libtests.a +nfnetlink_ctnetlink_exp_SOURCES = nfnetlink_ctnetlink_exp.c +nfnetlink_ctnetlink_exp_OBJECTS = nfnetlink_ctnetlink_exp.$(OBJEXT) +nfnetlink_ctnetlink_exp_LDADD = $(LDADD) +nfnetlink_ctnetlink_exp_DEPENDENCIES = libtests.a +nfnetlink_cttimeout_SOURCES = nfnetlink_cttimeout.c +nfnetlink_cttimeout_OBJECTS = nfnetlink_cttimeout.$(OBJEXT) +nfnetlink_cttimeout_LDADD = $(LDADD) +nfnetlink_cttimeout_DEPENDENCIES = libtests.a +nfnetlink_ipset_SOURCES = nfnetlink_ipset.c +nfnetlink_ipset_OBJECTS = nfnetlink_ipset.$(OBJEXT) +nfnetlink_ipset_LDADD = $(LDADD) +nfnetlink_ipset_DEPENDENCIES = libtests.a +nfnetlink_nft_compat_SOURCES = nfnetlink_nft_compat.c +nfnetlink_nft_compat_OBJECTS = nfnetlink_nft_compat.$(OBJEXT) +nfnetlink_nft_compat_LDADD = $(LDADD) +nfnetlink_nft_compat_DEPENDENCIES = libtests.a +nfnetlink_nftables_SOURCES = nfnetlink_nftables.c +nfnetlink_nftables_OBJECTS = nfnetlink_nftables.$(OBJEXT) +nfnetlink_nftables_LDADD = $(LDADD) +nfnetlink_nftables_DEPENDENCIES = libtests.a +nfnetlink_osf_SOURCES = nfnetlink_osf.c +nfnetlink_osf_OBJECTS = nfnetlink_osf.$(OBJEXT) +nfnetlink_osf_LDADD = $(LDADD) +nfnetlink_osf_DEPENDENCIES = libtests.a +nfnetlink_queue_SOURCES = nfnetlink_queue.c +nfnetlink_queue_OBJECTS = nfnetlink_queue.$(OBJEXT) +nfnetlink_queue_LDADD = $(LDADD) +nfnetlink_queue_DEPENDENCIES = libtests.a +nfnetlink_ulog_SOURCES = nfnetlink_ulog.c +nfnetlink_ulog_OBJECTS = nfnetlink_ulog.$(OBJEXT) +nfnetlink_ulog_LDADD = $(LDADD) +nfnetlink_ulog_DEPENDENCIES = libtests.a nlattr_SOURCES = nlattr.c nlattr_OBJECTS = nlattr.$(OBJEXT) nlattr_LDADD = $(LDADD) @@ -1249,6 +1321,14 @@ nlattr_inet_diag_req_v2_SOURCES = nlattr_inet_diag_req_v2.c nlattr_inet_diag_req_v2_OBJECTS = nlattr_inet_diag_req_v2.$(OBJEXT) nlattr_inet_diag_req_v2_LDADD = $(LDADD) nlattr_inet_diag_req_v2_DEPENDENCIES = libtests.a +nlattr_mdba_mdb_entry_SOURCES = nlattr_mdba_mdb_entry.c +nlattr_mdba_mdb_entry_OBJECTS = nlattr_mdba_mdb_entry.$(OBJEXT) +nlattr_mdba_mdb_entry_LDADD = $(LDADD) +nlattr_mdba_mdb_entry_DEPENDENCIES = libtests.a +nlattr_mdba_router_port_SOURCES = nlattr_mdba_router_port.c +nlattr_mdba_router_port_OBJECTS = nlattr_mdba_router_port.$(OBJEXT) +nlattr_mdba_router_port_LDADD = $(LDADD) +nlattr_mdba_router_port_DEPENDENCIES = libtests.a nlattr_ndmsg_SOURCES = nlattr_ndmsg.c nlattr_ndmsg_OBJECTS = nlattr_ndmsg.$(OBJEXT) nlattr_ndmsg_LDADD = $(LDADD) @@ -1285,6 +1365,14 @@ nlattr_smc_diag_msg_SOURCES = nlattr_smc_diag_msg.c nlattr_smc_diag_msg_OBJECTS = nlattr_smc_diag_msg.$(OBJEXT) nlattr_smc_diag_msg_LDADD = $(LDADD) nlattr_smc_diag_msg_DEPENDENCIES = libtests.a +nlattr_tc_stats_SOURCES = nlattr_tc_stats.c +nlattr_tc_stats_OBJECTS = nlattr_tc_stats.$(OBJEXT) +nlattr_tc_stats_LDADD = $(LDADD) +nlattr_tc_stats_DEPENDENCIES = libtests.a +nlattr_tca_stab_SOURCES = nlattr_tca_stab.c +nlattr_tca_stab_OBJECTS = nlattr_tca_stab.$(OBJEXT) +nlattr_tca_stab_LDADD = $(LDADD) +nlattr_tca_stab_DEPENDENCIES = libtests.a nlattr_tcamsg_SOURCES = nlattr_tcamsg.c nlattr_tcamsg_OBJECTS = nlattr_tcamsg.$(OBJEXT) nlattr_tcamsg_LDADD = $(LDADD) @@ -1696,6 +1784,10 @@ seccomp_strict_SOURCES = seccomp-strict.c seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT) seccomp_strict_LDADD = $(LDADD) seccomp_strict_DEPENDENCIES = libtests.a +seccomp_get_action_avail_SOURCES = seccomp_get_action_avail.c +seccomp_get_action_avail_OBJECTS = seccomp_get_action_avail.$(OBJEXT) +seccomp_get_action_avail_LDADD = $(LDADD) +seccomp_get_action_avail_DEPENDENCIES = libtests.a select_SOURCES = select.c select_OBJECTS = select.$(OBJEXT) select_LDADD = $(LDADD) @@ -1720,6 +1812,14 @@ set_ptracer_any_SOURCES = set_ptracer_any.c set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT) set_ptracer_any_LDADD = $(LDADD) set_ptracer_any_DEPENDENCIES = libtests.a +set_sigblock_SOURCES = set_sigblock.c +set_sigblock_OBJECTS = set_sigblock.$(OBJEXT) +set_sigblock_LDADD = $(LDADD) +set_sigblock_DEPENDENCIES = libtests.a +set_sigign_SOURCES = set_sigign.c +set_sigign_OBJECTS = set_sigign.$(OBJEXT) +set_sigign_LDADD = $(LDADD) +set_sigign_DEPENDENCIES = libtests.a setdomainname_SOURCES = setdomainname.c setdomainname_OBJECTS = setdomainname.$(OBJEXT) setdomainname_LDADD = $(LDADD) @@ -2169,10 +2269,11 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \ attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \ - btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \ - chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \ - creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \ + btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \ + chmod.c chown.c chown32.c chroot.c clock_adjtime.c \ + clock_nanosleep.c clock_xettime.c clone_parent.c \ + clone_ptrace.c copy_file_range.c count-f.c creat.c \ + delete_module.c dup.c dup2.c dup3.c epoll_create.c \ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \ @@ -2195,39 +2296,45 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \ ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \ iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \ - ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \ + ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \ - lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \ - lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \ - memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \ - mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \ - mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \ - move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \ - mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \ - munlockall.c nanosleep.c net-accept-connect.c \ - net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \ - net-yy-netlink.c net-yy-unix.c netlink_audit.c \ - netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ - netlink_kobject_uevent.c netlink_netfilter.c \ - netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ - netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ - netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \ - nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \ - nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \ - nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \ - nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \ - nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \ - nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \ - nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \ - nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \ - nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \ - oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \ - osf_utimes.c pause.c pc.c perf_event_open.c \ - perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ - personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ - pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \ - prctl-dumpable.c prctl-name.c prctl-no-args.c \ - prctl-pdeathsig.c prctl-seccomp-filter-v.c \ + lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ + llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \ + mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \ + mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \ + mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \ + mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \ + mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ + msg_control-v.c msg_name.c munlockall.c nanosleep.c \ + net-accept-connect.c net-icmp_filter.c net-sockaddr.c \ + net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \ + netlink_audit.c netlink_crypto.c netlink_generic.c \ + netlink_inet_diag.c netlink_kobject_uevent.c \ + netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ + netlink_route.c netlink_selinux.c netlink_sock_diag.c \ + netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ + nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ + nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ + nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ + nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ + nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \ + nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \ + nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \ + nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \ + nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \ + nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \ + nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \ + nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \ + nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \ + nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \ + nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \ + nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \ + oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \ + perf_event_open.c perf_event_open_nonverbose.c \ + perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \ + pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \ + ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ + prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \ preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \ @@ -2248,8 +2355,9 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \ sched_xetparam.c sched_xetscheduler.c sched_yield.c \ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ - seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \ - set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \ + seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \ + sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \ + set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \ setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \ setgroups.c setgroups32.c sethostname.c setns.c setregid.c \ setregid32.c setresgid.c setresgid32.c setresuid.c \ @@ -2275,10 +2383,11 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \ attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \ attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \ - btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \ - chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \ - creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \ + btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \ + chmod.c chown.c chown32.c chroot.c clock_adjtime.c \ + clock_nanosleep.c clock_xettime.c clone_parent.c \ + clone_ptrace.c copy_file_range.c count-f.c creat.c \ + delete_module.c dup.c dup2.c dup3.c epoll_create.c \ epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \ erestartsys.c eventfd.c execve.c execve-v.c execveat.c \ execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \ @@ -2301,39 +2410,45 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \ ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \ iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \ - ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \ + ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \ kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \ - lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \ - lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \ - memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \ - mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \ - mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \ - move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \ - mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \ - munlockall.c nanosleep.c net-accept-connect.c \ - net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \ - net-yy-netlink.c net-yy-unix.c netlink_audit.c \ - netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ - netlink_kobject_uevent.c netlink_netfilter.c \ - netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ - netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ - netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \ - nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \ - nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \ - nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \ - nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \ - nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \ - nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \ - nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \ - nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \ - nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \ - oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \ - osf_utimes.c pause.c pc.c perf_event_open.c \ - perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ - personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ - pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \ - prctl-dumpable.c prctl-name.c prctl-no-args.c \ - prctl-pdeathsig.c prctl-seccomp-filter-v.c \ + lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ + llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \ + mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \ + mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \ + mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \ + mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \ + mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ + msg_control-v.c msg_name.c munlockall.c nanosleep.c \ + net-accept-connect.c net-icmp_filter.c net-sockaddr.c \ + net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \ + netlink_audit.c netlink_crypto.c netlink_generic.c \ + netlink_inet_diag.c netlink_kobject_uevent.c \ + netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ + netlink_route.c netlink_selinux.c netlink_sock_diag.c \ + netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ + nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ + nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ + nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ + nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ + nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \ + nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \ + nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \ + nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \ + nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \ + nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \ + nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \ + nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \ + nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \ + nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \ + nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \ + nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \ + oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \ + perf_event_open.c perf_event_open_nonverbose.c \ + perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \ + pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \ + ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ + prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \ prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \ preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \ @@ -2354,8 +2469,9 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \ sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \ sched_xetparam.c sched_xetscheduler.c sched_yield.c \ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ - seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \ - set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \ + seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \ + sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \ + set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \ setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \ setgroups.c setgroups32.c sethostname.c setns.c setregid.c \ setregid32.c setresgid.c setresgid32.c setresuid.c \ @@ -2924,6 +3040,7 @@ PURE_EXECUTABLES = \ ipc_sem \ ipc_shm \ kcmp \ + kcmp-y \ kexec_file_load \ kexec_load \ keyctl \ @@ -2981,6 +3098,17 @@ PURE_EXECUTABLES = \ netlink_sock_diag \ netlink_xfrm \ newfstatat \ + nfnetlink_acct \ + nfnetlink_cthelper \ + nfnetlink_ctnetlink \ + nfnetlink_ctnetlink_exp \ + nfnetlink_cttimeout \ + nfnetlink_nft_compat \ + nfnetlink_nftables \ + nfnetlink_ipset \ + nfnetlink_osf \ + nfnetlink_queue \ + nfnetlink_ulog \ nlattr \ nlattr_crypto_user_alg \ nlattr_br_port_msg \ @@ -2995,6 +3123,8 @@ PURE_EXECUTABLES = \ nlattr_inet_diag_msg \ nlattr_inet_diag_req_compat \ nlattr_inet_diag_req_v2 \ + nlattr_mdba_mdb_entry \ + nlattr_mdba_router_port \ nlattr_ndmsg \ nlattr_ndtmsg \ nlattr_netconfmsg \ @@ -3004,6 +3134,8 @@ PURE_EXECUTABLES = \ nlattr_rtgenmsg \ nlattr_rtmsg \ nlattr_smc_diag_msg \ + nlattr_tc_stats \ + nlattr_tca_stab \ nlattr_tcamsg \ nlattr_tcmsg \ nlattr_unix_diag_msg \ @@ -3084,6 +3216,7 @@ PURE_EXECUTABLES = \ sched_xetscheduler \ sched_yield \ seccomp-filter \ + seccomp_get_action_avail \ select \ semop \ sendfile \ @@ -3253,39 +3386,47 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \ ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \ iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \ ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \ - kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \ - keyctl.gen.test kill.gen.test lchown.gen.test \ - lchown32.gen.test link.gen.test linkat.gen.test \ - lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \ - madvise.gen.test mbind.gen.test membarrier.gen.test \ - memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \ - mkdir.gen.test mkdirat.gen.test mknod.gen.test \ - mknodat.gen.test mlock.gen.test mlock2.gen.test \ - mlockall.gen.test mmap64.gen.test mmsg.gen.test \ - mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \ - mount.gen.test move_pages.gen.test mq.gen.test \ - mq_sendrecv.gen.test mq_sendrecv-read.gen.test \ - mq_sendrecv-write.gen.test msg_control.gen.test \ - msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \ - nanosleep.gen.test net-icmp_filter.gen.test \ - net-sockaddr.gen.test netlink_audit.gen.test \ - netlink_crypto.gen.test netlink_generic.gen.test \ - netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \ - netlink_protocol.gen.test netlink_route.gen.test \ - netlink_selinux.gen.test netlink_xfrm.gen.test \ - newfstatat.gen.test nlattr.gen.test \ - nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \ - nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \ - nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \ - nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \ - nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \ - nlattr_inet_diag_msg.gen.test \ + kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \ + kexec_load.gen.test keyctl.gen.test kill.gen.test \ + lchown.gen.test lchown32.gen.test link.gen.test \ + linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ + lstat64.gen.test madvise.gen.test mbind.gen.test \ + membarrier.gen.test memfd_create.gen.test \ + migrate_pages.gen.test mincore.gen.test mkdir.gen.test \ + mkdirat.gen.test mknod.gen.test mknodat.gen.test \ + mlock.gen.test mlock2.gen.test mlockall.gen.test \ + mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \ + mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \ + move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \ + mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \ + msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \ + munlockall.gen.test nanosleep.gen.test \ + net-icmp_filter.gen.test net-sockaddr.gen.test \ + netlink_audit.gen.test netlink_crypto.gen.test \ + netlink_generic.gen.test netlink_kobject_uevent.gen.test \ + netlink_netfilter.gen.test netlink_protocol.gen.test \ + netlink_route.gen.test netlink_selinux.gen.test \ + netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \ + nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \ + nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \ + nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \ + nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \ + nfnetlink_osf.gen.test nfnetlink_queue.gen.test \ + nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \ + nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \ + nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \ + nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \ + nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \ + nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \ nlattr_inet_diag_req_compat.gen.test \ - nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test \ + nlattr_inet_diag_req_v2.gen.test \ + nlattr_mdba_mdb_entry.gen.test \ + nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test \ nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test \ nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test \ nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test \ nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test \ + nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \ nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \ nlattr_unix_diag_msg.gen.test old_mmap.gen.test \ oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \ @@ -3319,20 +3460,21 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \ sched_xetattr.gen.test sched_xetparam.gen.test \ sched_xetscheduler.gen.test sched_yield.gen.test \ seccomp-filter.gen.test seccomp-filter-v.gen.test \ - select.gen.test semop.gen.test sendfile.gen.test \ - sendfile64.gen.test set_mempolicy.gen.test \ - setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \ - setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \ - setgid32.gen.test setgroups.gen.test setgroups32.gen.test \ - sethostname.gen.test setns.gen.test setregid.gen.test \ - setregid32.gen.test setresgid.gen.test setresgid32.gen.test \ - setresuid.gen.test setresuid32.gen.test setreuid.gen.test \ - setreuid32.gen.test setrlimit.gen.test setuid.gen.test \ - setuid32.gen.test shmxt.gen.test shutdown.gen.test \ - sigaction.gen.test siginfo.gen.test signal.gen.test \ - signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \ - sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \ - so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \ + seccomp_get_action_avail.gen.test select.gen.test \ + semop.gen.test sendfile.gen.test sendfile64.gen.test \ + set_mempolicy.gen.test setdomainname.gen.test \ + setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \ + setfsuid32.gen.test setgid.gen.test setgid32.gen.test \ + setgroups.gen.test setgroups32.gen.test sethostname.gen.test \ + setns.gen.test setregid.gen.test setregid32.gen.test \ + setresgid.gen.test setresgid32.gen.test setresuid.gen.test \ + setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \ + setrlimit.gen.test setuid.gen.test setuid32.gen.test \ + shmxt.gen.test shutdown.gen.test sigaction.gen.test \ + siginfo.gen.test signal.gen.test signal_receive.gen.test \ + signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \ + sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \ + so_peercred.gen.test sock_filter-v.gen.test \ socketcall.gen.test splice.gen.test stat.gen.test \ stat64.gen.test statfs.gen.test statfs64.gen.test \ statx.gen.test swap.gen.test sxetmask.gen.test \ @@ -3451,6 +3593,8 @@ MISC_TESTS = \ redirect-fds.test \ redirect.test \ restart_syscall.test \ + sigblock.test \ + sigign.test \ strace-C.test \ strace-E.test \ strace-S.test \ @@ -3692,6 +3836,14 @@ caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA @rm -f caps-abbrev$(EXEEXT) $(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS) +check_sigblock$(EXEEXT): $(check_sigblock_OBJECTS) $(check_sigblock_DEPENDENCIES) $(EXTRA_check_sigblock_DEPENDENCIES) + @rm -f check_sigblock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_sigblock_OBJECTS) $(check_sigblock_LDADD) $(LIBS) + +check_sigign$(EXEEXT): $(check_sigign_OBJECTS) $(check_sigign_DEPENDENCIES) $(EXTRA_check_sigign_DEPENDENCIES) + @rm -f check_sigign$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_sigign_OBJECTS) $(check_sigign_LDADD) $(LIBS) + chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES) @rm -f chmod$(EXEEXT) $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS) @@ -4192,6 +4344,10 @@ kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES) @rm -f kcmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS) +kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDENCIES) + @rm -f kcmp-y$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS) + kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES) @rm -f kexec_file_load$(EXEEXT) $(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS) @@ -4228,6 +4384,10 @@ linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDE @rm -f linkat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS) +list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) + @rm -f list_sigaction_signum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) + llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES) @rm -f llseek$(EXEEXT) $(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS) @@ -4452,6 +4612,50 @@ newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_ne @rm -f newfstatat$(EXEEXT) $(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS) +nfnetlink_acct$(EXEEXT): $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_DEPENDENCIES) $(EXTRA_nfnetlink_acct_DEPENDENCIES) + @rm -f nfnetlink_acct$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_LDADD) $(LIBS) + +nfnetlink_cthelper$(EXEEXT): $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_DEPENDENCIES) $(EXTRA_nfnetlink_cthelper_DEPENDENCIES) + @rm -f nfnetlink_cthelper$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_LDADD) $(LIBS) + +nfnetlink_ctnetlink$(EXEEXT): $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_DEPENDENCIES) + @rm -f nfnetlink_ctnetlink$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_LDADD) $(LIBS) + +nfnetlink_ctnetlink_exp$(EXEEXT): $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_exp_DEPENDENCIES) + @rm -f nfnetlink_ctnetlink_exp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_LDADD) $(LIBS) + +nfnetlink_cttimeout$(EXEEXT): $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_DEPENDENCIES) $(EXTRA_nfnetlink_cttimeout_DEPENDENCIES) + @rm -f nfnetlink_cttimeout$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_LDADD) $(LIBS) + +nfnetlink_ipset$(EXEEXT): $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_DEPENDENCIES) $(EXTRA_nfnetlink_ipset_DEPENDENCIES) + @rm -f nfnetlink_ipset$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_LDADD) $(LIBS) + +nfnetlink_nft_compat$(EXEEXT): $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_DEPENDENCIES) $(EXTRA_nfnetlink_nft_compat_DEPENDENCIES) + @rm -f nfnetlink_nft_compat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_LDADD) $(LIBS) + +nfnetlink_nftables$(EXEEXT): $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_DEPENDENCIES) $(EXTRA_nfnetlink_nftables_DEPENDENCIES) + @rm -f nfnetlink_nftables$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_LDADD) $(LIBS) + +nfnetlink_osf$(EXEEXT): $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_DEPENDENCIES) $(EXTRA_nfnetlink_osf_DEPENDENCIES) + @rm -f nfnetlink_osf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_LDADD) $(LIBS) + +nfnetlink_queue$(EXEEXT): $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_DEPENDENCIES) $(EXTRA_nfnetlink_queue_DEPENDENCIES) + @rm -f nfnetlink_queue$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_LDADD) $(LIBS) + +nfnetlink_ulog$(EXEEXT): $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_DEPENDENCIES) $(EXTRA_nfnetlink_ulog_DEPENDENCIES) + @rm -f nfnetlink_ulog$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_LDADD) $(LIBS) + nlattr$(EXEEXT): $(nlattr_OBJECTS) $(nlattr_DEPENDENCIES) $(EXTRA_nlattr_DEPENDENCIES) @rm -f nlattr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_OBJECTS) $(nlattr_LDADD) $(LIBS) @@ -4508,6 +4712,14 @@ nlattr_inet_diag_req_v2$(EXEEXT): $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_in @rm -f nlattr_inet_diag_req_v2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_inet_diag_req_v2_LDADD) $(LIBS) +nlattr_mdba_mdb_entry$(EXEEXT): $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_DEPENDENCIES) $(EXTRA_nlattr_mdba_mdb_entry_DEPENDENCIES) + @rm -f nlattr_mdba_mdb_entry$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_LDADD) $(LIBS) + +nlattr_mdba_router_port$(EXEEXT): $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_DEPENDENCIES) $(EXTRA_nlattr_mdba_router_port_DEPENDENCIES) + @rm -f nlattr_mdba_router_port$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_LDADD) $(LIBS) + nlattr_ndmsg$(EXEEXT): $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_DEPENDENCIES) $(EXTRA_nlattr_ndmsg_DEPENDENCIES) @rm -f nlattr_ndmsg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_LDADD) $(LIBS) @@ -4544,6 +4756,14 @@ nlattr_smc_diag_msg$(EXEEXT): $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_m @rm -f nlattr_smc_diag_msg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_msg_LDADD) $(LIBS) +nlattr_tc_stats$(EXEEXT): $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_DEPENDENCIES) $(EXTRA_nlattr_tc_stats_DEPENDENCIES) + @rm -f nlattr_tc_stats$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_LDADD) $(LIBS) + +nlattr_tca_stab$(EXEEXT): $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_DEPENDENCIES) $(EXTRA_nlattr_tca_stab_DEPENDENCIES) + @rm -f nlattr_tca_stab$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_LDADD) $(LIBS) + nlattr_tcamsg$(EXEEXT): $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_DEPENDENCIES) $(EXTRA_nlattr_tcamsg_DEPENDENCIES) @rm -f nlattr_tcamsg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_LDADD) $(LIBS) @@ -4948,6 +5168,10 @@ seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES @rm -f seccomp-strict$(EXEEXT) $(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS) +seccomp_get_action_avail$(EXEEXT): $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_DEPENDENCIES) $(EXTRA_seccomp_get_action_avail_DEPENDENCIES) + @rm -f seccomp_get_action_avail$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_LDADD) $(LIBS) + select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES) @rm -f select$(EXEEXT) $(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS) @@ -4972,6 +5196,14 @@ set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENC @rm -f set_ptracer_any$(EXEEXT) $(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS) +set_sigblock$(EXEEXT): $(set_sigblock_OBJECTS) $(set_sigblock_DEPENDENCIES) $(EXTRA_set_sigblock_DEPENDENCIES) + @rm -f set_sigblock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(set_sigblock_OBJECTS) $(set_sigblock_LDADD) $(LIBS) + +set_sigign$(EXEEXT): $(set_sigign_OBJECTS) $(set_sigign_DEPENDENCIES) $(EXTRA_set_sigign_DEPENDENCIES) + @rm -f set_sigign$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(set_sigign_OBJECTS) $(set_sigign_LDADD) $(LIBS) + setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES) @rm -f setdomainname$(EXEEXT) $(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS) @@ -5411,6 +5643,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps-abbrev.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ @@ -5535,6 +5769,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_sem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_file_load.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_load.Po@am__quote@ @@ -5571,6 +5806,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_dcookie.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@ @@ -5627,6 +5863,17 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_unix_diag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_xfrm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfstatat-newfstatat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_acct.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cthelper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink_exp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cttimeout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ipset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nft_compat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nftables.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_osf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_queue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ulog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_br_port_msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_crypto_user_alg.Po@am__quote@ @@ -5641,6 +5888,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_v2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_mdb_entry.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_router_port.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndtmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_netconfmsg.Po@am__quote@ @@ -5650,6 +5899,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtgenmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_smc_diag_msg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tc_stats.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tca_stab.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@ @@ -5751,12 +6002,15 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter-v.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setdomainname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid32.Po@am__quote@ @@ -7194,6 +7448,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7353,6 +7610,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7392,6 +7682,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src $(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7419,6 +7715,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests. $(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -7641,6 +7943,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test $(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ diff --git a/tests/check_sigblock.c b/tests/check_sigblock.c new file mode 100644 index 00000000..5637804d --- /dev/null +++ b/tests/check_sigblock.c @@ -0,0 +1,49 @@ +/* + * Check that the specified signal number is blocked/unblocked. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> + +int +main(int ac, char **av) +{ + if (ac != 3) + error_msg_and_fail("usage: check_sigblock 0|1 signum"); + + const int block = !!atoi(av[1]); + const int signum = atoi(av[2]); + sigset_t mask; + + sigemptyset(&mask); + if (sigprocmask(SIG_SETMASK, NULL, &mask)) + perror_msg_and_fail("sigprocmask"); + + return block ^ sigismember(&mask, signum); +} diff --git a/tests/check_sigign.c b/tests/check_sigign.c new file mode 100644 index 00000000..bace3170 --- /dev/null +++ b/tests/check_sigign.c @@ -0,0 +1,49 @@ +/* + * Check that the signal handler for the specified signal number is set + * to SIG_IGN/SIG_DFL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> + +int +main(int ac, char **av) +{ + if (ac != 3) + error_msg_and_fail("usage: check_sigign 0|1 signum"); + + const int ign = !!atoi(av[1]); + const int signum = atoi(av[2]); + struct sigaction act; + + if (sigaction(signum, NULL, &act)) + perror_msg_and_fail("sigaction: %s", av[2]); + + return ign ^ (act.sa_handler == SIG_IGN); +} diff --git a/tests/futex.c b/tests/futex.c index b75ab339..e1dbcb74 100644 --- a/tests/futex.c +++ b/tests/futex.c @@ -66,6 +66,7 @@ void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout, # define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \ enosys) \ do { \ + errno = 0; \ rc = syscall(__NR_futex, (uaddr), (op), (val), (timeout), \ (uaddr2), (val3)); \ /* It is here due to EPERM on WAKE_OP on AArch64 */ \ @@ -496,8 +497,16 @@ main(int argc, char *argv[]) static const struct { uint32_t val; const char *str; + + /* + * Peculiar semantics: + * * err == 0 and err2 != 0 => expect both either the absence + * of error or presence of err2 + * * err != 0 and err2 == 0 => expect err only, no success + * expected. + */ int err; - const char *errstr; + int err2; } wake_ops[] = { { 0x00000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x00fff000, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|" @@ -511,13 +520,13 @@ main(int argc, char *argv[]) { 0x30000000, "FUTEX_OP_ANDN<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x40000000, "FUTEX_OP_XOR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" }, { 0x50000000, "0x5<<28 /* FUTEX_OP_??? */|0<<12|" - "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" }, + "FUTEX_OP_CMP_EQ<<24|0", ENOSYS }, { 0x70000000, "0x7<<28 /* FUTEX_OP_??? */|0<<12|" - "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" }, + "FUTEX_OP_CMP_EQ<<24|0", ENOSYS }, { 0x80000000, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_SET<<28|0<<12|" "FUTEX_OP_CMP_EQ<<24|0" }, { 0xa0caffee, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_OR<<28|" - "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee" }, + "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee", 0, EINVAL }, { 0x01000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_NE<<24|0" }, { 0x01234567, "FUTEX_OP_SET<<28|0x234<<12|FUTEX_OP_CMP_NE<<24|" "0x567" }, @@ -526,27 +535,38 @@ main(int argc, char *argv[]) { 0x04000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0" }, { 0x05000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GE<<24|0" }, { 0x06000000, "FUTEX_OP_SET<<28|0<<12|" - "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x07000000, "FUTEX_OP_SET<<28|0<<12|" - "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x08000000, "FUTEX_OP_SET<<28|0<<12|" - "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0x0f000000, "FUTEX_OP_SET<<28|0<<12|" - "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" }, + "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS }, { 0xbadfaced, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_ANDN<<28|" "0xdfa<<12|0xa<<24 /* FUTEX_OP_CMP_??? */|0xced", - ENOSYS, "ENOSYS" }, + ENOSYS, EINVAL }, { 0xffffffff, "FUTEX_OP_OPARG_SHIFT<<28|" "0x7<<28 /* FUTEX_OP_??? */|0xfff<<12|" "0xf<<24 /* FUTEX_OP_CMP_??? */|0xfff", - ENOSYS, "ENOSYS" }, + ENOSYS, EINVAL }, }; for (i = 0; i < ARRAY_SIZE(wake_ops); i++) { for (j = 0; j < 2; j++) { CHECK_FUTEX_ENOSYS(uaddr, j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP, - VAL, i, uaddr2, wake_ops[i].val, (rc == 0)); + VAL, i, uaddr2, wake_ops[i].val, + /* + * Either one of errs is 0 or rc == 0 is not + * allowed. + */ + ((!wake_ops[i].err || !wake_ops[i].err2 || + (rc != 0)) && + ((!wake_ops[i].err && (rc == 0)) || + (wake_ops[i].err && (rc == -1) && + (errno == wake_ops[i].err)) || + (wake_ops[i].err2 && (rc == -1) && + (errno == wake_ops[i].err2))))); printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)" " = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i, uaddr2, wake_ops[i].str, sprintrc(rc)); diff --git a/tests/gen_tests.am b/tests/gen_tests.am index 583a0aeb..71e00135 100644 --- a/tests/gen_tests.am +++ b/tests/gen_tests.am @@ -1,5 +1,5 @@ # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. -GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test +GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -358,6 +358,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -517,6 +520,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -556,6 +592,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src $(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -583,6 +625,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests. $(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ @@ -805,6 +853,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test $(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ +$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + $(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in $(AM_V_GEN) $^ $@ diff --git a/tests/gen_tests.in b/tests/gen_tests.in index 8592e28b..091bbe59 100644 --- a/tests/gen_tests.in +++ b/tests/gen_tests.in @@ -143,7 +143,8 @@ ipc -a19 ipc_msg +ipc.sh ipc_sem +ipc.sh ipc_shm +ipc.sh -kcmp -a27 +kcmp -a22 +kcmp-y -a22 -y -e trace=kcmp kexec_file_load -s9 kexec_load -s9 keyctl -a31 -s10 @@ -197,6 +198,17 @@ netlink_selinux +netlink_sock_diag.test netlink_xfrm +netlink_sock_diag.test newfstatat -a32 -v -P stat.sample -P /dev/full nlattr +netlink_sock_diag.test +nfnetlink_acct +netlink_sock_diag.test +nfnetlink_cthelper +netlink_sock_diag.test +nfnetlink_ctnetlink +netlink_sock_diag.test +nfnetlink_ctnetlink_exp +netlink_sock_diag.test +nfnetlink_cttimeout +netlink_sock_diag.test +nfnetlink_ipset +netlink_sock_diag.test +nfnetlink_nft_compat +netlink_sock_diag.test +nfnetlink_nftables +netlink_sock_diag.test +nfnetlink_osf +netlink_sock_diag.test +nfnetlink_queue +netlink_sock_diag.test +nfnetlink_ulog +netlink_sock_diag.test nlattr_crypto_user_alg +netlink_sock_diag.test nlattr_br_port_msg +netlink_sock_diag.test nlattr_dcbmsg +netlink_sock_diag.test @@ -210,6 +222,8 @@ nlattr_ifla_xdp +netlink_sock_diag.test nlattr_inet_diag_msg +netlink_sock_diag.test nlattr_inet_diag_req_compat +netlink_sock_diag.test nlattr_inet_diag_req_v2 +netlink_sock_diag.test +nlattr_mdba_mdb_entry +netlink_sock_diag.test +nlattr_mdba_router_port +netlink_sock_diag.test nlattr_ndmsg +netlink_sock_diag.test nlattr_ndtmsg +netlink_sock_diag.test nlattr_netconfmsg +netlink_sock_diag.test @@ -219,6 +233,8 @@ nlattr_packet_diag_msg +netlink_sock_diag-v.sh nlattr_rtgenmsg +netlink_sock_diag.test nlattr_rtmsg +netlink_sock_diag.test nlattr_smc_diag_msg +netlink_sock_diag.test +nlattr_tc_stats +netlink_sock_diag.test +nlattr_tca_stab +netlink_sock_diag.test nlattr_tcamsg +netlink_sock_diag.test nlattr_tcmsg +netlink_sock_diag.test nlattr_unix_diag_msg +netlink_sock_diag.test @@ -293,6 +309,7 @@ sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler sched_yield -a14 seccomp-filter -e trace=seccomp seccomp-filter-v -v -e trace=seccomp +seccomp_get_action_avail -e trace=seccomp select -a36 semop -a32 -e trace=semop,semtimedop sendfile -a27 diff --git a/tests/ioctl_dm.c b/tests/ioctl_dm.c index 2f77e041..1e831dfe 100644 --- a/tests/ioctl_dm.c +++ b/tests/ioctl_dm.c @@ -54,6 +54,10 @@ # define ALIGNED_OFFSET(t_, m_) \ ALIGNED_SIZE(offsetof(t_, m_), t_) +# ifndef DM_DEV_ARM_POLL +# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl) +# endif + static const char str129[] = STR32 STR32 STR32 STR32 "6"; static const __u64 dts_sector_base = (__u64) 0xdeadca75facef157ULL; @@ -182,6 +186,7 @@ main(void) { ARG_STR(DM_TABLE_CLEAR), false }, { ARG_STR(DM_TABLE_DEPS), true }, { ARG_STR(DM_TABLE_STATUS), true }, + { ARG_STR(DM_DEV_ARM_POLL), false }, }; struct dm_ioctl *unaligned_dm_arg = diff --git a/tests/ioctl_loop.c b/tests/ioctl_loop.c index 3411a4d8..56ebd9e4 100644 --- a/tests/ioctl_loop.c +++ b/tests/ioctl_loop.c @@ -188,11 +188,11 @@ main(void) _IOC_SIZE((unsigned int) unknown_loop_cmd), (unsigned long) magic); - ioctl(-1, LOOP_SET_DIRECT_IO + 1, magic); + ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic); printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = " "-1 EBADF (%m)\n", - _IOC_NR(LOOP_SET_DIRECT_IO + 1), - _IOC_SIZE(LOOP_SET_DIRECT_IO + 1), + _IOC_NR(LOOP_SET_BLOCK_SIZE + 1), + _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1), (unsigned long) magic); ioctl(-1, LOOP_CTL_GET_FREE + 1, magic); @@ -303,6 +303,11 @@ main(void) printf("ioctl(-1, LOOP_SET_DIRECT_IO, %lu) = -1 EBADF (%m)\n", (unsigned long) magic); + /* LOOP_SET_BLOCK_SIZE */ + ioctl(-1, LOOP_SET_BLOCK_SIZE, magic); + printf("ioctl(-1, LOOP_SET_BLOCK_SIZE, %lu) = -1 EBADF (%m)\n", + (unsigned long) magic); + /* LOOP_CTL_ADD */ ioctl(-1, LOOP_CTL_ADD, magic); printf("ioctl(-1, LOOP_CTL_ADD, %d) = -1 EBADF (%m)\n", diff --git a/tests/kcmp-y.c b/tests/kcmp-y.c new file mode 100644 index 00000000..02ad90e5 --- /dev/null +++ b/tests/kcmp-y.c @@ -0,0 +1,3 @@ +#define VERBOSE_FD 1 + +#include "kcmp.c" diff --git a/tests/kcmp-y.gen.test b/tests/kcmp-y.gen.test new file mode 100755 index 00000000..065db9d0 --- /dev/null +++ b/tests/kcmp-y.gen.test @@ -0,0 +1,4 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y -a22 -y -e trace=kcmp); do not edit. +. "${srcdir=.}/init.sh" +run_strace_match_diff -a22 -y -e trace=kcmp diff --git a/tests/kcmp.c b/tests/kcmp.c index cb497c9f..60cd3003 100644 --- a/tests/kcmp.c +++ b/tests/kcmp.c @@ -1,7 +1,7 @@ /* * Check decoding of kcmp syscall. * - * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com> + * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,15 +34,67 @@ #ifdef __NR_kcmp +# include <fcntl.h> +# include <stdarg.h> +# include <stdint.h> # include <stdio.h> +# include <string.h> # include <unistd.h> -# define KCMP_FILE 0 -# define KCMP_SYSVSEM 6 +# ifndef VERBOSE_FD +# define VERBOSE_FD 0 +# endif +/* + * We prefer to use system headers in order to catch some possible deviations in + * system's headers from our perception of reality, but happy to include our own + * definitions as well. + */ +# ifdef HAVE_LINUX_KCMP_H +# include <linux/kcmp.h> +# else +# define KCMP_FILE 0 +# define KCMP_VM 1 +# define KCMP_FILES 2 +# define KCMP_FS 3 +# define KCMP_SIGHAND 4 +# define KCMP_IO 5 +# define KCMP_SYSVSEM 6 +# endif + +/* All other kcmp types have been added atomically */ +# define KCMP_EPOLL_TFD 7 + +# ifndef HAVE_STRUCT_KCMP_EPOLL_SLOT +struct kcmp_epoll_slot { + uint32_t efd; + uint32_t tfd; + uint32_t toff; +}; +# endif + +static const kernel_ulong_t kcmp_max_type = KCMP_EPOLL_TFD; + +static const char null_path[] = "/dev/null"; +static const char zero_path[] = "/dev/zero"; + +# define NULL_FD 23 +# define ZERO_FD 42 + +static void +printpidfd(const char *prefix, pid_t pid, unsigned fd) +{ + printf("%s%d", prefix, fd); +} + +/* + * Last argument is optional and is used as follows: + * * When type is KCMP_EPOLL_TFD, it signalises whether idx2 is a valid + * pointer. + */ static void do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type, - const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2) + const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2, ...) { long rc; const char *errstr; @@ -57,11 +109,37 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type, else printf("%#x /* KCMP_??? */", (int) type); - if (type == KCMP_FILE) - printf(", %u, %u", (unsigned) idx1, (unsigned) idx2); - else if (type > KCMP_SYSVSEM) + if (type == KCMP_FILE) { + printpidfd(", ", pid1, idx1); + printpidfd(", ", pid2, idx2); + } else if (type == KCMP_EPOLL_TFD) { + va_list ap; + int valid_ptr; + + va_start(ap, idx2); + valid_ptr = va_arg(ap, int); + va_end(ap); + + printpidfd(", ", pid1, idx1); + printf(", "); + + if (valid_ptr) { + struct kcmp_epoll_slot *slot = + (struct kcmp_epoll_slot *) (uintptr_t) idx2; + + printpidfd("{efd=", pid2, slot->efd); + printpidfd(", tfd=", pid2, slot->tfd); + printf(", toff=%llu}", (unsigned long long) slot->toff); + } else { + if (idx2) + printf("%#llx", (unsigned long long) idx2); + else + printf("NULL"); + } + } else if (type > kcmp_max_type) { printf(", %#llx, %#llx", (unsigned long long) idx1, (unsigned long long) idx2); + } printf(") = %s\n", errstr); } @@ -79,18 +157,71 @@ main(void) (kernel_ulong_t) 0xdec0ded3dec0ded4ULL; static const kernel_ulong_t bogus_idx2 = (kernel_ulong_t) 0xba5e1e55deadc0deULL; + static const struct kcmp_epoll_slot slot_data[] = { + { 0xdeadc0de, 0xfacef157, 0xbadc0ded }, + { NULL_FD, ZERO_FD, 0 }, + { 0, 0, 0 }, + }; + static kernel_ulong_t ptr_check = + F8ILL_KULONG_SUPPORTED ? F8ILL_KULONG_MASK : 0; + + int fd; + unsigned i; + struct kcmp_epoll_slot *slot = tail_alloc(sizeof(*slot)); + + /* Open some files to test printpidfd */ + fd = open(null_path, O_RDONLY); + if (fd < 0) + perror_msg_and_fail("open(\"%s\")", null_path); + if (fd != NULL_FD) { + if (dup2(fd, NULL_FD) < 0) + perror_msg_and_fail("dup2(fd, NULL_FD)"); + close(fd); + } + + fd = open(zero_path, O_RDONLY); + if (fd < 0) + perror_msg_and_fail("open(\"%s\")", zero_path); + if (fd != ZERO_FD) { + if (dup2(fd, ZERO_FD) < 0) + perror_msg_and_fail("dup2(fd, ZERO_FD)"); + close(fd); + } + + close(0); /* Invalid values */ do_kcmp(bogus_pid1, bogus_pid2, bogus_type, NULL, bogus_idx1, bogus_idx2); - do_kcmp(0, 0, KCMP_SYSVSEM + 1, NULL, 0, 0); + do_kcmp(F8ILL_KULONG_MASK, F8ILL_KULONG_MASK, kcmp_max_type + 1, NULL, + 0, 0); /* KCMP_FILE is the only type which has additional args */ do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1, bogus_idx2); - /* Some type without additional args */ + do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); + + /* Types without additional args */ + do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_FILES), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_FS), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_SIGHAND), bogus_idx1, bogus_idx2); + do_kcmp(-1, -1, ARG_STR(KCMP_IO), bogus_idx1, bogus_idx2); do_kcmp(-1, -1, ARG_STR(KCMP_SYSVSEM), bogus_idx1, bogus_idx2); + /* KCMP_EPOLL_TFD checks */ + do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD), + F8ILL_KULONG_MASK | 2718281828U, ptr_check, 0); + do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD), + 3141592653U, (uintptr_t) slot + 1, 0); + + for (i = 0; i < ARRAY_SIZE(slot_data); i++) { + memcpy(slot, slot_data + i, sizeof(*slot)); + + do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD, + (uintptr_t) slot, 1); + } + puts("+++ exited with 0 +++"); return 0; diff --git a/tests/kcmp.gen.test b/tests/kcmp.gen.test index da79d7c1..c073a39e 100755 --- a/tests/kcmp.gen.test +++ b/tests/kcmp.gen.test @@ -1,4 +1,4 @@ #!/bin/sh -efu -# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit. +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit. . "${srcdir=.}/init.sh" -run_strace_match_diff -a27 +run_strace_match_diff -a22 diff --git a/tests/list_sigaction_signum.c b/tests/list_sigaction_signum.c new file mode 100644 index 00000000..13a78c68 --- /dev/null +++ b/tests/list_sigaction_signum.c @@ -0,0 +1,57 @@ +/* + * List signal numbers that are valid arguments for sigaction syscall. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#include <signal.h> +#include <stdio.h> + +int +main(void) +{ + unsigned int i; + + for (i = 1; i < 32; ++i) { + static const struct sigaction ign = { .sa_handler = SIG_IGN }; + static const struct sigaction dfl = { .sa_handler = SIG_DFL }; + struct sigaction act; + + if (sigaction(i, &ign, NULL) || + sigaction(i, NULL, &act) || + ign.sa_handler != act.sa_handler || + sigaction(i, &dfl, NULL) || + sigaction(i, NULL, &act) || + dfl.sa_handler != act.sa_handler) + continue; + + printf("%u\n", i); + } + + return 0; +} diff --git a/tests/membarrier.c b/tests/membarrier.c index 330893b6..73dd3b02 100644 --- a/tests/membarrier.c +++ b/tests/membarrier.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org> + * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,10 +44,28 @@ main(void) printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n", sprintrc(-1)); if (saved_errno != ENOSYS) { - /* the test needs to be updated? */ - assert(syscall(__NR_membarrier, 0, 0) == 1); - puts("membarrier(MEMBARRIER_CMD_QUERY, 0)" - " = 0x1 (MEMBARRIER_CMD_SHARED)"); + const char *text; + int rc = syscall(__NR_membarrier, 0, 0); + + switch (rc) { + case 1: + text = "MEMBARRIER_CMD_SHARED"; + break; + case 1|8: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; + break; + case 1|8|16: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED|" + "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED"; + break; + default: + error_msg_and_fail("membarrier returned %#x, does" + " the test have to be updated?", rc); + } + printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n", + rc, text); } puts("+++ exited with 0 +++"); return 0; diff --git a/tests/memfd_create.c b/tests/memfd_create.c index 480fd177..4559b426 100644 --- a/tests/memfd_create.c +++ b/tests/memfd_create.c @@ -11,10 +11,11 @@ int main(void) { static const char text[] = "strace"; - int rc = syscall(__NR_memfd_create, text, 7); + int rc = syscall(__NR_memfd_create, text, 0xf); - printf("memfd_create(\"%s\", %s) = %d %s (%m)\n", - text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|0x4", rc, errno2name()); + printf("memfd_create(\"%s\", %s) = %s\n", + text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8", + sprintrc(rc)); puts("+++ exited with 0 +++"); return 0; diff --git a/tests/netlink_crypto.c b/tests/netlink_crypto.c index deb1644e..d15c17cf 100644 --- a/tests/netlink_crypto.c +++ b/tests/netlink_crypto.c @@ -78,9 +78,17 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = CRYPTO_MSG_DELALG; - nlh.nlmsg_flags = NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=CRYPTO_MSG_DELALG" + ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); + + nlh.nlmsg_type = CRYPTO_MSG_UPDATEALG; + nlh.nlmsg_flags = NLM_F_REPLACE; + rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u, type=CRYPTO_MSG_UPDATEALG" ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, NLM_F_REPLACE, diff --git a/tests/netlink_netfilter.c b/tests/netlink_netfilter.c index 2907c261..db2622eb 100644 --- a/tests/netlink_netfilter.c +++ b/tests/netlink_netfilter.c @@ -52,19 +52,19 @@ test_nlmsg_type(const int fd) ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); +# endif - nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | NFNL_MSG_BATCH_BEGIN; + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); - printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x" + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */" ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh.nlmsg_len, NFNL_MSG_BATCH_BEGIN, - (unsigned) sizeof(nlh), sprintrc(rc)); -# endif + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); - nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8); + nlh.nlmsg_type = 0xffff; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); - printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0" + printf("sendto(%d, {len=%u, type=0xff /* NFNL_SUBSYS_??? */<<8|0xff" ", flags=NLM_F_REQUEST, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); diff --git a/tests/netlink_route.c b/tests/netlink_route.c index 6af3b13a..a1c7d1f8 100644 --- a/tests/netlink_route.c +++ b/tests/netlink_route.c @@ -132,13 +132,12 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = RTM_DELLINK; - nlh.nlmsg_flags = NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=RTM_DELLINK" - ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}" + ", flags=NLM_F_NONREC, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh.nlmsg_len, NLM_F_REPLACE, - (unsigned) sizeof(nlh), sprintrc(rc)); + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); } static void diff --git a/tests/netlink_xfrm.c b/tests/netlink_xfrm.c index 27f62d1e..862a9f6e 100644 --- a/tests/netlink_xfrm.c +++ b/tests/netlink_xfrm.c @@ -76,9 +76,17 @@ test_nlmsg_flags(const int fd) fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); nlh.nlmsg_type = XFRM_MSG_DELSA; - nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC; rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); printf("sendto(%d, {len=%u, type=XFRM_MSG_DELSA" + ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); + + nlh.nlmsg_type = XFRM_MSG_ALLOCSPI; + nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE; + rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u, type=XFRM_MSG_ALLOCSPI" ", flags=NLM_F_ECHO|%#x, seq=0, pid=0}" ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", fd, nlh.nlmsg_len, NLM_F_REPLACE, diff --git a/tests/nfnetlink_acct.c b/tests/nfnetlink_acct.c new file mode 100644 index 00000000..52cff99a --- /dev/null +++ b/tests/nfnetlink_acct.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_acct.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|0xff /* NFNL_MSG_ACCT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_CREATE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_GET" + ", flags=NLM_F_REQUEST|NLM_F_MATCH, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_DEL; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_DEL" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H") + +#endif diff --git a/tests/nfnetlink_acct.gen.test b/tests/nfnetlink_acct.gen.test new file mode 100755 index 00000000..7db22769 --- /dev/null +++ b/tests/nfnetlink_acct.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_cthelper.c b/tests/nfnetlink_cthelper.c new file mode 100644 index 00000000..47fab768 --- /dev/null +++ b/tests/nfnetlink_cthelper.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_cthelper.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|0xff /* NFNL_MSG_CTHELPER_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_DEL; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_DEL" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H") + +#endif diff --git a/tests/nfnetlink_cthelper.gen.test b/tests/nfnetlink_cthelper.gen.test new file mode 100755 index 00000000..661c949c --- /dev/null +++ b/tests/nfnetlink_cthelper.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_ctnetlink.c b/tests/nfnetlink_ctnetlink.c new file mode 100644 index 00000000..a227f38e --- /dev/null +++ b/tests/nfnetlink_ctnetlink.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_conntrack.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H") + +#endif diff --git a/tests/nfnetlink_ctnetlink.gen.test b/tests/nfnetlink_ctnetlink.gen.test new file mode 100755 index 00000000..d4c4daaf --- /dev/null +++ b/tests/nfnetlink_ctnetlink.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_ctnetlink_exp.c b/tests/nfnetlink_ctnetlink_exp.c new file mode 100644 index 00000000..aa17cd52 --- /dev/null +++ b/tests/nfnetlink_ctnetlink_exp.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_conntrack.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|0xff /* IPCTNL_MSG_EXP_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_EXCL; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW" + ", flags=NLM_F_REQUEST|NLM_F_EXCL, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_GET" + ", flags=NLM_F_REQUEST|NLM_F_ROOT, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H") + +#endif diff --git a/tests/nfnetlink_ctnetlink_exp.gen.test b/tests/nfnetlink_ctnetlink_exp.gen.test new file mode 100755 index 00000000..a5d83f9b --- /dev/null +++ b/tests/nfnetlink_ctnetlink_exp.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_cttimeout.c b/tests/nfnetlink_cttimeout.c new file mode 100644 index 00000000..e66dc24c --- /dev/null +++ b/tests/nfnetlink_cttimeout.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_cttimeout.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|0xff /* IPCTNL_MSG_TIMEOUT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_APPEND; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW" + ", flags=NLM_F_REQUEST|NLM_F_APPEND, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ATOMIC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_GET" + ", flags=NLM_F_REQUEST|NLM_F_ATOMIC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = + NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_DELETE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_DELETE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H") + +#endif diff --git a/tests/nfnetlink_cttimeout.gen.test b/tests/nfnetlink_cttimeout.gen.test new file mode 100755 index 00000000..e197f000 --- /dev/null +++ b/tests/nfnetlink_cttimeout.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_ipset.c b/tests/nfnetlink_ipset.c new file mode 100644 index 00000000..b0d4a7d1 --- /dev/null +++ b/tests/nfnetlink_ipset.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/ipset/ip_set.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | IPSET_CMD_NONE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_IPSET<<8|IPSET_CMD_NONE" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_IPSET<<8|0xff /* IPSET_CMD_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_IPSET_IP_SET_H") + +#endif diff --git a/tests/nfnetlink_ipset.gen.test b/tests/nfnetlink_ipset.gen.test new file mode 100755 index 00000000..418437a7 --- /dev/null +++ b/tests/nfnetlink_ipset.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_nft_compat.c b/tests/nfnetlink_nft_compat.c new file mode 100644 index 00000000..072ee571 --- /dev/null +++ b/tests/nfnetlink_nft_compat.c @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nf_tables_compat.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|0xff /* NFNL_MSG_COMPAT_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H") + +#endif diff --git a/tests/nfnetlink_nft_compat.gen.test b/tests/nfnetlink_nft_compat.gen.test new file mode 100755 index 00000000..c3dc8907 --- /dev/null +++ b/tests/nfnetlink_nft_compat.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_nftables.c b/tests/nfnetlink_nftables.c new file mode 100644 index 00000000..66e5fe94 --- /dev/null +++ b/tests/nfnetlink_nftables.c @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nf_tables.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|0xff /* NFT_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +static void +test_nlmsg_flags(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + }; + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE" + ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_GETTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_GETTABLE" + ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_DELTABLE; + nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_DELTABLE" + ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + test_nlmsg_flags(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_H") + +#endif diff --git a/tests/nfnetlink_nftables.gen.test b/tests/nfnetlink_nftables.gen.test new file mode 100755 index 00000000..25e90e85 --- /dev/null +++ b/tests/nfnetlink_nftables.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_osf.c b/tests/nfnetlink_osf.c new file mode 100644 index 00000000..a6dbb7e6 --- /dev/null +++ b/tests/nfnetlink_osf.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_XT_OSF_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/ip.h> +# include <linux/tcp.h> +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/xt_osf.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | OSF_MSG_ADD; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_OSF<<8|OSF_MSG_ADD" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_OSF<<8|0xff /* OSF_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_XT_OSF_H") + +#endif diff --git a/tests/nfnetlink_osf.gen.test b/tests/nfnetlink_osf.gen.test new file mode 100755 index 00000000..2689574a --- /dev/null +++ b/tests/nfnetlink_osf.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_queue.c b/tests/nfnetlink_queue.c new file mode 100644 index 00000000..73ebd9aa --- /dev/null +++ b/tests/nfnetlink_queue.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_queue.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_QUEUE<<8|NFQNL_MSG_PACKET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_QUEUE<<8|0xff /* NFQNL_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H") + +#endif diff --git a/tests/nfnetlink_queue.gen.test b/tests/nfnetlink_queue.gen.test new file mode 100755 index 00000000..739fb17d --- /dev/null +++ b/tests/nfnetlink_queue.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nfnetlink_ulog.c b/tests/nfnetlink_ulog.c new file mode 100644 index 00000000..31eb30f1 --- /dev/null +++ b/tests/nfnetlink_ulog.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H + +# include <stdio.h> +# include <sys/socket.h> +# include "netlink.h" +# include <linux/netfilter/nfnetlink.h> +# include <linux/netfilter/nfnetlink_log.h> + +static void +test_nlmsg_type(const int fd) +{ + long rc; + struct nlmsghdr nlh = { + .nlmsg_len = sizeof(nlh), + .nlmsg_flags = NLM_F_REQUEST, + }; + + nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | NFULNL_MSG_PACKET; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ULOG<<8|NFULNL_MSG_PACKET" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); + + nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | 0xff; + rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0); + printf("sendto(%d, {len=%u" + ", type=NFNL_SUBSYS_ULOG<<8|0xff /* NFULNL_MSG_??? */" + ", flags=NLM_F_REQUEST, seq=0, pid=0}" + ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", + fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + int fd = create_nl_socket(NETLINK_NETFILTER); + + test_nlmsg_type(fd); + + puts("+++ exited with 0 +++"); + + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H") + +#endif diff --git a/tests/nfnetlink_ulog.gen.test b/tests/nfnetlink_ulog.gen.test new file mode 100755 index 00000000..850ebafc --- /dev/null +++ b/tests/nfnetlink_ulog.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nlattr_inet_diag_msg.c b/tests/nlattr_inet_diag_msg.c index 5666d74b..ccc62aed 100644 --- a/tests/nlattr_inet_diag_msg.c +++ b/tests/nlattr_inet_diag_msg.c @@ -182,6 +182,11 @@ main(void) INET_DIAG_MARK, pattern, mark, printf("%u", mark)); + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_inet_diag_msg, print_inet_diag_msg, + INET_DIAG_CLASS_ID, pattern, mark, + printf("%u", mark)); + static const uint8_t shutdown = 0xcd; TEST_NLATTR(fd, nlh0, hdrlen, init_inet_diag_msg, print_inet_diag_msg, INET_DIAG_SHUTDOWN, diff --git a/tests/nlattr_mdba_mdb_entry.c b/tests/nlattr_mdba_mdb_entry.c new file mode 100644 index 00000000..124fe1d4 --- /dev/null +++ b/tests/nlattr_mdba_mdb_entry.c @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_BR_PORT_MSG + +# include <stdio.h> +# include "test_nlattr.h" +# include <arpa/inet.h> +# include <linux/if_bridge.h> +# include <linux/rtnetlink.h> + +# ifndef MDB_TEMPORARY +# define MDB_TEMPORARY 0 +# endif +# ifndef MDBA_MDB_ENTRY_INFO +# define MDBA_MDB_ENTRY_INFO 1 +# endif +# ifndef MDBA_MDB_EATTR_TIMER +# define MDBA_MDB_EATTR_TIMER 1 +# endif + +const unsigned int hdrlen = sizeof(struct br_port_msg); + +static void +init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + unsigned int len = msg_len; + + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = len, + .nlmsg_type = RTM_GETMDB, + .nlmsg_flags = NLM_F_DUMP + ); + + struct br_port_msg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct br_port_msg, msg, + .family = AF_UNIX, + .ifindex = ifindex_lo() + ); + + struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg)); + len -= NLMSG_SPACE(hdrlen); + SET_STRUCT(struct nlattr, nla, + .nla_len = len, + .nla_type = MDBA_MDB + ); + + nla = nla + 1; + len -= NLA_HDRLEN; + SET_STRUCT(struct nlattr, nla, + .nla_len = len, + .nla_type = MDBA_MDB_ENTRY + ); +} + +static void +print_br_port_msg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {family=AF_UNIX" + ", ifindex=" IFINDEX_LO_STR "}" + ", {{nla_len=%u, nla_type=MDBA_MDB}" + ", {{nla_len=%u, nla_type=MDBA_MDB_ENTRY}", + msg_len, msg_len - NLMSG_SPACE(hdrlen), + msg_len - NLMSG_SPACE(hdrlen) - NLA_HDRLEN); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + const unsigned int nla_type = 0xffff & NLA_TYPE_MASK; + char nla_type_str[256]; + sprintf(nla_type_str, "%#x /* MDBA_MDB_ENTRY_??? */", nla_type); + TEST_NLATTR_(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2, + init_br_port_msg, print_br_port_msg, + nla_type, nla_type_str, + 4, pattern, 4, + print_quoted_hex(pattern, 4); + printf("}}")); + +# ifdef HAVE_STRUCT_BR_MDB_ENTRY + struct br_mdb_entry entry = { + .ifindex = ifindex_lo(), + .state = MDB_TEMPORARY, +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + .flags = MDB_FLAGS_OFFLOAD, +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + .vid = 0xcdef, +# endif + .addr = { + .proto = htons(AF_UNSPEC) + } + }; + + memcpy(&entry.addr.u, pattern, sizeof(entry.addr.u)); + TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen, + init_br_port_msg, print_br_port_msg, + MDBA_MDB_ENTRY_INFO, pattern, entry, 2, + printf("{ifindex=" IFINDEX_LO_STR); + printf(", state=MDB_TEMPORARY"); +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + printf(", flags=MDB_FLAGS_OFFLOAD"); +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + PRINT_FIELD_U(", ", entry, vid); +# endif + printf(", addr={u="); + print_quoted_hex(&entry.addr.u, + sizeof(entry.addr.u)); + printf(", proto=htons(AF_UNSPEC)}}")); + + static const struct nlattr nla = { + .nla_len = sizeof(nla), + .nla_type = MDBA_MDB_EATTR_TIMER + }; + char buf[NLMSG_ALIGN(sizeof(entry)) + sizeof(nla)]; + memcpy(buf, &entry, sizeof(entry)); + memcpy(buf + NLMSG_ALIGN(sizeof(entry)), &nla, sizeof(nla)); + TEST_NLATTR(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2, + init_br_port_msg, print_br_port_msg, + MDBA_MDB_ENTRY_INFO, sizeof(buf), buf, sizeof(buf), + printf("{ifindex=" IFINDEX_LO_STR); + printf(", state=MDB_TEMPORARY"); +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS + printf(", flags=MDB_FLAGS_OFFLOAD"); +# endif +# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID + PRINT_FIELD_U(", ", entry, vid); +# endif + printf(", addr={u="); + print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u)); + printf(", proto=htons(AF_UNSPEC)}}" + ", {nla_len=%u, nla_type=MDBA_MDB_EATTR_TIMER}}}", + nla.nla_len)); +# endif /* HAVE_STRUCT_BR_MDB_ENTRY */ + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG") + +#endif diff --git a/tests/nlattr_mdba_mdb_entry.gen.test b/tests/nlattr_mdba_mdb_entry.gen.test new file mode 100755 index 00000000..67253e8e --- /dev/null +++ b/tests/nlattr_mdba_mdb_entry.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nlattr_mdba_router_port.c b/tests/nlattr_mdba_router_port.c new file mode 100644 index 00000000..af908cd8 --- /dev/null +++ b/tests/nlattr_mdba_router_port.c @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_BR_PORT_MSG + +# include <stdio.h> +# include "test_nlattr.h" +# include <linux/if_bridge.h> +# include <linux/rtnetlink.h> + +# ifndef MDBA_ROUTER +# define MDBA_ROUTER 2 +# endif +# ifndef MDBA_ROUTER_PORT +# define MDBA_ROUTER_PORT 1 +# endif +# ifndef MDBA_ROUTER_PATTR_TYPE +# define MDBA_ROUTER_PATTR_TYPE 2 +# endif +# ifndef MDB_RTR_TYPE_DISABLED +# define MDB_RTR_TYPE_DISABLED 0 +# endif + +const unsigned int hdrlen = sizeof(struct br_port_msg); + +static void +init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETMDB, + .nlmsg_flags = NLM_F_DUMP + ); + + struct br_port_msg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct br_port_msg, msg, + .family = AF_UNIX, + .ifindex = ifindex_lo() + ); + + struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = MDBA_ROUTER + ); +} + +static void +print_br_port_msg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {family=AF_UNIX" + ", ifindex=" IFINDEX_LO_STR "}" + ", {{nla_len=%u, nla_type=MDBA_ROUTER}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + const uint32_t ifindex = ifindex_lo(); + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_br_port_msg, print_br_port_msg, + MDBA_ROUTER_PORT, pattern, ifindex, + printf(IFINDEX_LO_STR)); + + const uint8_t type = MDB_RTR_TYPE_DISABLED; + static const struct nlattr nla = { + .nla_len = NLA_HDRLEN + sizeof(type), + .nla_type = MDBA_ROUTER_PATTR_TYPE + }; + char buf[NLMSG_ALIGN(ifindex) + NLA_HDRLEN + sizeof(type)]; + memcpy(buf, &ifindex, sizeof(ifindex)); + memcpy(buf + NLMSG_ALIGN(ifindex), &nla, sizeof(nla)); + memcpy(buf + NLMSG_ALIGN(ifindex) + NLA_HDRLEN, &type, sizeof(type)); + TEST_NLATTR(fd, nlh0 - NLA_HDRLEN, hdrlen + NLA_HDRLEN, + init_br_port_msg, print_br_port_msg, + MDBA_ROUTER_PORT, sizeof(buf), buf, sizeof(buf), + printf(IFINDEX_LO_STR + ", {{nla_len=%u, nla_type=MDBA_ROUTER_PATTR_TYPE}" + ", MDB_RTR_TYPE_DISABLED}}", + nla.nla_len)); + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG") + +#endif diff --git a/tests/nlattr_mdba_router_port.gen.test b/tests/nlattr_mdba_router_port.gen.test new file mode 100755 index 00000000..ce9ea148 --- /dev/null +++ b/tests/nlattr_mdba_router_port.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nlattr_tc_stats.c b/tests/nlattr_tc_stats.c new file mode 100644 index 00000000..dd76cc7d --- /dev/null +++ b/tests/nlattr_tc_stats.c @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_STRUCT_GNET_STATS_BASIC + +# include <stdio.h> +# include <stddef.h> +# include "test_nlattr.h" +# include <linux/gen_stats.h> +# include <linux/rtnetlink.h> + +const unsigned int hdrlen = sizeof(struct tcmsg); + +static void +init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETQDISC, + .nlmsg_flags = NLM_F_DUMP + ); + + struct tcmsg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct tcmsg, msg, + .tcm_family = AF_UNIX, + .tcm_ifindex = ifindex_lo() + ); + + struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = TCA_STATS2 + ); +} + +static void +print_tcmsg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {tcm_family=AF_UNIX" + ", tcm_ifindex=" IFINDEX_LO_STR + ", tcm_handle=0, tcm_parent=0, tcm_info=0}" + ", {{nla_len=%u, nla_type=TCA_STATS2}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + + static const struct gnet_stats_basic sb = { + .bytes = 0xabcdebdafefeadeb, + .packets = 0xbdcdeabf + }; + char buf[offsetofend(struct gnet_stats_basic, packets)]; + memcpy(buf, &sb, sizeof(buf)); + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_BASIC, pattern, buf, + PRINT_FIELD_U("{", sb, bytes); + PRINT_FIELD_U(", ", sb, packets); + printf("}")); + +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST + static const struct gnet_stats_rate_est est = { + .bps = 0xebcdaebd, + .pps = 0xabdceade, + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_RATE_EST, pattern, est, + PRINT_FIELD_U("{", est, bps); + PRINT_FIELD_U(", ", est, pps); + printf("}")); +#endif + +#ifdef HAVE_STRUCT_GNET_STATS_QUEUE + static const struct gnet_stats_queue qstats = { + .qlen = 0xabcdeabd, + .backlog = 0xbcdaebad, + .drops = 0xcdbeaedb, + .requeues = 0xdebaefab, + .overlimits = 0xefaebade + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_QUEUE, pattern, qstats, + PRINT_FIELD_U("{", qstats, qlen); + PRINT_FIELD_U(", ", qstats, backlog); + PRINT_FIELD_U(", ", qstats, drops); + PRINT_FIELD_U(", ", qstats, requeues); + PRINT_FIELD_U(", ", qstats, overlimits); + printf("}")); +#endif + +#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64 + static const struct gnet_stats_rate_est64 est64 = { + .bps = 0xacbdcdefafecaebf, + .pps = 0xcdabeabdfeabceaf + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS_RATE_EST64, pattern, est64, + PRINT_FIELD_U("{", est64, bps); + PRINT_FIELD_U(", ", est64, pps); + printf("}")); +#endif + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("HAVE_STRUCT_GNET_STATS_BASIC") + +#endif diff --git a/tests/nlattr_tc_stats.gen.test b/tests/nlattr_tc_stats.gen.test new file mode 100755 index 00000000..72780d4a --- /dev/null +++ b/tests/nlattr_tc_stats.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nlattr_tca_stab.c b/tests/nlattr_tca_stab.c new file mode 100644 index 00000000..de6d3569 --- /dev/null +++ b/tests/nlattr_tca_stab.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com> + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#include <stdio.h> +#include "test_nlattr.h" +#include <linux/pkt_sched.h> +#include <linux/rtnetlink.h> + +#ifndef TCA_STAB +# define TCA_STAB 8 +#endif +#ifndef TCA_STAB_DATA +# define TCA_STAB_DATA 2 +#endif + +const unsigned int hdrlen = sizeof(struct tcmsg); + +static void +init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len) +{ + SET_STRUCT(struct nlmsghdr, nlh, + .nlmsg_len = msg_len, + .nlmsg_type = RTM_GETQDISC, + .nlmsg_flags = NLM_F_DUMP + ); + + struct tcmsg *const msg = NLMSG_DATA(nlh); + SET_STRUCT(struct tcmsg, msg, + .tcm_family = AF_UNIX, + .tcm_ifindex = ifindex_lo() + ); + + struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg)); + SET_STRUCT(struct nlattr, nla, + .nla_len = msg_len - NLMSG_SPACE(hdrlen), + .nla_type = TCA_STAB + ); +} + +static void +print_tcmsg(const unsigned int msg_len) +{ + printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP" + ", seq=0, pid=0}, {tcm_family=AF_UNIX" + ", tcm_ifindex=" IFINDEX_LO_STR + ", tcm_handle=0, tcm_parent=0, tcm_info=0}" + ", {{nla_len=%u, nla_type=TCA_STAB}", + msg_len, msg_len - NLMSG_SPACE(hdrlen)); +} + +static void +print_uint16(const uint16_t *p) +{ + printf("%u", *p); +} + +int +main(void) +{ + skip_if_unavailable("/proc/self/fd/"); + + const int fd = create_nl_socket(NETLINK_ROUTE); + void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen)); + + static char pattern[4096]; + fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); + +#ifdef HAVE_STRUCT_TC_SIZESPEC + static const struct tc_sizespec s = { + .cell_log = 0xab, + .size_log = 0xcd, + .cell_align = 0xefab, + .overhead = 0xcdadeefa, + .linklayer = 0xefbaafeb, + .mpu = 0xfebfaefb, + .mtu = 0xacdbefab, + .tsize = 0xbdeaabed + }; + TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STAB_BASE, pattern, s, + PRINT_FIELD_U("{", s, cell_log); + PRINT_FIELD_U(", ", s, size_log); + PRINT_FIELD_D(", ", s, cell_align); + PRINT_FIELD_D(", ", s, overhead); + PRINT_FIELD_U(", ", s, linklayer); + PRINT_FIELD_U(", ", s, mpu); + PRINT_FIELD_U(", ", s, mtu); + PRINT_FIELD_U(", ", s, tsize); + printf("}")); +#endif + + uint16_t data[2] = { 0xacbd, 0xefba }; + TEST_NESTED_NLATTR_ARRAY(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STAB_DATA, pattern, data, print_uint16); + + puts("+++ exited with 0 +++"); + return 0; +} diff --git a/tests/nlattr_tca_stab.gen.test b/tests/nlattr_tca_stab.gen.test new file mode 100755 index 00000000..14cd1a54 --- /dev/null +++ b/tests/nlattr_tca_stab.gen.test @@ -0,0 +1,3 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit. +. "${srcdir=.}/netlink_sock_diag.test" diff --git a/tests/nlattr_tcmsg.c b/tests/nlattr_tcmsg.c index 00b7ae46..32ce4790 100644 --- a/tests/nlattr_tcmsg.c +++ b/tests/nlattr_tcmsg.c @@ -29,7 +29,9 @@ #include "tests.h" #include <stdio.h> +#include <stddef.h> #include "test_nlattr.h" +#include <linux/pkt_sched.h> #include <linux/rtnetlink.h> static void @@ -80,6 +82,42 @@ main(void) 4, pattern, 4, print_quoted_hex(pattern, 4)); + static const struct tc_stats st = { + .bytes = 0xabcdcdbefeadefac, + .packets = 0xbcdeaefd, + .drops = 0xcdedafed, + .overlimits = 0xdcdbefad, + .bps = 0xefaebfad, + .pps = 0xfefbaedb, + .qlen = 0xabcdefab, + .backlog = 0xbdeabeab + }; + char buf[offsetofend(struct tc_stats, backlog)]; + memcpy(buf, &st, sizeof(buf)); + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_STATS, pattern, buf, + PRINT_FIELD_U("{", st, bytes); + PRINT_FIELD_U(", ", st, packets); + PRINT_FIELD_U(", ", st, drops); + PRINT_FIELD_U(", ", st, overlimits); + PRINT_FIELD_U(", ", st, bps); + PRINT_FIELD_U(", ", st, pps); + PRINT_FIELD_U(", ", st, qlen); + PRINT_FIELD_U(", ", st, backlog); + printf("}")); + + static const struct tc_estimator est = { + .interval = 0xcd, + .ewma_log = 0xab + }; + TEST_NLATTR_OBJECT(fd, nlh0, hdrlen, + init_tcmsg, print_tcmsg, + TCA_RATE, pattern, est, + PRINT_FIELD_D("{", est, interval); + PRINT_FIELD_U(", ", est, ewma_log); + printf("}")); + puts("+++ exited with 0 +++"); return 0; } diff --git a/tests/options-syntax.test b/tests/options-syntax.test index b4d9be70..2e459c96 100755 --- a/tests/options-syntax.test +++ b/tests/options-syntax.test @@ -80,16 +80,21 @@ check_h "invalid -s argument: '-42'" -s -42 check_h "invalid -s argument: '1073741824'" -s 1073741824 check_h "invalid -I argument: '5'" -I 5 -cat > "$EXP" << '__EOF__' -strace: must have PROG [ARGS] or -p PID -Try 'strace -h' for more information. -__EOF__ ../zeroargc "$strace_exp" /bin/true 2> "$LOG" && dump_log_and_fail_with \ 'zeroargc strace failed to handle the error properly' -match_diff "$LOG" "$EXP" || - dump_log_and_fail_with \ - 'zeroargc strace failed to print expected diagnostics' +cat > "$EXP" << __EOF__ +$strace_exp: must have PROG [ARGS] or -p PID +Try '$strace_exp -h' for more information. +__EOF__ +diff -u -- "$EXP" "$LOG" > /dev/null || { + cat > "$EXP" <<- '__EOF__' + strace: must have PROG [ARGS] or -p PID + Try 'strace -h' for more information. + __EOF__ + match_diff "$LOG" "$EXP" \ + "zeroargc $STRACE $args output mismatch" +} if [ -n "${UID-}" ]; then if [ "${UID-}" = 0 ]; then diff --git a/tests/prctl-seccomp-filter-v.c b/tests/prctl-seccomp-filter-v.c index cfd5d3dd..7a65d898 100644 --- a/tests/prctl-seccomp-filter-v.c +++ b/tests/prctl-seccomp-filter-v.c @@ -114,7 +114,7 @@ main(void) PRINT_DENY_SYSCALL(sync, EBUSY), PRINT_DENY_SYSCALL(setsid, EPERM), - printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)"); + printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)"); puts("]}) = 0"); puts("+++ exited with 0 +++"); diff --git a/tests/pure_executables.am b/tests/pure_executables.am index 9dc532a6..2cae9ae5 100644 --- a/tests/pure_executables.am +++ b/tests/pure_executables.am @@ -123,6 +123,7 @@ PURE_EXECUTABLES = \ ipc_sem \ ipc_shm \ kcmp \ + kcmp-y \ kexec_file_load \ kexec_load \ keyctl \ @@ -180,6 +181,17 @@ PURE_EXECUTABLES = \ netlink_sock_diag \ netlink_xfrm \ newfstatat \ + nfnetlink_acct \ + nfnetlink_cthelper \ + nfnetlink_ctnetlink \ + nfnetlink_ctnetlink_exp \ + nfnetlink_cttimeout \ + nfnetlink_nft_compat \ + nfnetlink_nftables \ + nfnetlink_ipset \ + nfnetlink_osf \ + nfnetlink_queue \ + nfnetlink_ulog \ nlattr \ nlattr_crypto_user_alg \ nlattr_br_port_msg \ @@ -194,6 +206,8 @@ PURE_EXECUTABLES = \ nlattr_inet_diag_msg \ nlattr_inet_diag_req_compat \ nlattr_inet_diag_req_v2 \ + nlattr_mdba_mdb_entry \ + nlattr_mdba_router_port \ nlattr_ndmsg \ nlattr_ndtmsg \ nlattr_netconfmsg \ @@ -203,6 +217,8 @@ PURE_EXECUTABLES = \ nlattr_rtgenmsg \ nlattr_rtmsg \ nlattr_smc_diag_msg \ + nlattr_tc_stats \ + nlattr_tca_stab \ nlattr_tcamsg \ nlattr_tcmsg \ nlattr_unix_diag_msg \ @@ -283,6 +299,7 @@ PURE_EXECUTABLES = \ sched_xetscheduler \ sched_yield \ seccomp-filter \ + seccomp_get_action_avail \ select \ semop \ sendfile \ diff --git a/tests/pure_executables.list b/tests/pure_executables.list index dade57b0..d98b17db 100755 --- a/tests/pure_executables.list +++ b/tests/pure_executables.list @@ -122,6 +122,7 @@ ipc_msgbuf ipc_sem ipc_shm kcmp +kcmp-y kexec_file_load kexec_load keyctl @@ -179,6 +180,17 @@ netlink_selinux netlink_sock_diag netlink_xfrm newfstatat +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_ctnetlink +nfnetlink_ctnetlink_exp +nfnetlink_cttimeout +nfnetlink_nft_compat +nfnetlink_nftables +nfnetlink_ipset +nfnetlink_osf +nfnetlink_queue +nfnetlink_ulog nlattr nlattr_crypto_user_alg nlattr_br_port_msg @@ -193,6 +205,8 @@ nlattr_ifla_xdp nlattr_inet_diag_msg nlattr_inet_diag_req_compat nlattr_inet_diag_req_v2 +nlattr_mdba_mdb_entry +nlattr_mdba_router_port nlattr_ndmsg nlattr_ndtmsg nlattr_netconfmsg @@ -202,6 +216,8 @@ nlattr_packet_diag_msg nlattr_rtgenmsg nlattr_rtmsg nlattr_smc_diag_msg +nlattr_tc_stats +nlattr_tca_stab nlattr_tcamsg nlattr_tcmsg nlattr_unix_diag_msg @@ -282,6 +298,7 @@ sched_xetparam sched_xetscheduler sched_yield seccomp-filter +seccomp_get_action_avail select semop sendfile diff --git a/tests/seccomp-filter-v.c b/tests/seccomp-filter-v.c index e419c6cb..34ab3b58 100644 --- a/tests/seccomp-filter-v.c +++ b/tests/seccomp-filter-v.c @@ -95,7 +95,7 @@ main(void) tprintf("%s", ""); static const char kill_stmt_txt[] = - "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)"; + "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)"; struct sock_filter *const filter = tail_memdup(filter_c, sizeof(filter_c)); struct sock_filter *const big_filter = @@ -136,7 +136,8 @@ main(void) prog->filter = big_filter; prog->len = BPF_MAXINSNS + 1; tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[", - "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", prog->len); + "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc", + prog->len); for (i = 0; i < BPF_MAXINSNS; ++i) { if (i) tprintf(", "); diff --git a/tests/seccomp-filter.c b/tests/seccomp-filter.c index 6e009823..7bc76560 100644 --- a/tests/seccomp-filter.c +++ b/tests/seccomp-filter.c @@ -55,12 +55,13 @@ main(void) prog->len = N; rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -1, prog); printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=%p})" - " = %ld %s (%m)\n", "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", + " = %ld %s (%m)\n", + "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc", prog->len, prog->filter, rc, errno2name()); - rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -2L, efault); + rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -4L, efault); printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n", - "0xfffffffe /* SECCOMP_FILTER_FLAG_??? */", + "0xfffffffc /* SECCOMP_FILTER_FLAG_??? */", efault, rc, errno2name()); puts("+++ exited with 0 +++"); diff --git a/tests/seccomp_get_action_avail.c b/tests/seccomp_get_action_avail.c new file mode 100644 index 00000000..ed231e17 --- /dev/null +++ b/tests/seccomp_get_action_avail.c @@ -0,0 +1,125 @@ +/* + * Check decoding of seccomp SECCOMP_GET_ACTION_AVAIL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <asm/unistd.h> + +#ifdef __NR_seccomp + +# include <stdio.h> +# include <stdint.h> +# include <unistd.h> + +# ifdef HAVE_LINUX_SECCOMP_H +# include <linux/seccomp.h> +# endif + +# ifndef SECCOMP_GET_ACTION_AVAIL +# define SECCOMP_GET_ACTION_AVAIL 2 +# endif + +static const char *errstr; + +static long +k_seccomp(const kernel_ulong_t op, const kernel_ulong_t flags, + const kernel_ulong_t args) +{ + const long rc = syscall(__NR_seccomp, op, flags, args); + errstr = sprintrc(rc); + return rc; +} + +int +main(void) +{ + TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, act); + kernel_ulong_t op = (kernel_ulong_t) 0xfacefeed00000000ULL + | SECCOMP_GET_ACTION_AVAIL; + kernel_ulong_t flags = (kernel_ulong_t) 0xdeadbeef00000000ULL; + unsigned int i; + + struct { + uint32_t val; + const char *str; + } actions [] = { + { 0, "SECCOMP_RET_KILL_THREAD" }, +# ifdef SECCOMP_RET_KILL_PROCESS + { ARG_STR(SECCOMP_RET_KILL_PROCESS) }, +# endif +# ifdef SECCOMP_RET_TRAP + { ARG_STR(SECCOMP_RET_TRAP) }, +# endif +# ifdef SECCOMP_RET_ERRNO + { ARG_STR(SECCOMP_RET_ERRNO) }, +# endif +# ifdef SECCOMP_RET_TRACE + { ARG_STR(SECCOMP_RET_TRACE) }, +# endif +# ifdef SECCOMP_RET_LOG + { ARG_STR(SECCOMP_RET_LOG) }, +# endif +# ifdef SECCOMP_RET_ALLOW + { ARG_STR(SECCOMP_RET_ALLOW) }, +# endif + { 0xffffffff, "0xffffffff /* SECCOMP_RET_??? */" } + }; + + for (i = 0; i < ARRAY_SIZE(actions); ++i) { + *act = actions[i].val; + k_seccomp(op, flags, (uintptr_t) act); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, [%s]) = %s\n", + actions[i].str, errstr); + } + + *act = actions[0].val; + + k_seccomp(op, flags, (uintptr_t) (act + 1)); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %p) = %s\n", + act + 1, errstr); + + if (F8ILL_KULONG_SUPPORTED) { + k_seccomp(op, flags, f8ill_ptr_to_kulong(act)); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %#jx) = %s\n", + (uintmax_t) f8ill_ptr_to_kulong(act), errstr); + } + + flags |= 0xcafef00d; + k_seccomp(op, flags, 0); + printf("seccomp(SECCOMP_GET_ACTION_AVAIL, %u, NULL) = %s\n", + (unsigned int) flags, errstr); + + puts("+++ exited with 0 +++"); + return 0; +} + +#else + +SKIP_MAIN_UNDEFINED("__NR_seccomp") + +#endif diff --git a/tests/seccomp_get_action_avail.gen.test b/tests/seccomp_get_action_avail.gen.test new file mode 100755 index 00000000..49974510 --- /dev/null +++ b/tests/seccomp_get_action_avail.gen.test @@ -0,0 +1,4 @@ +#!/bin/sh -efu +# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp_get_action_avail -e trace=seccomp); do not edit. +. "${srcdir=.}/init.sh" +run_strace_match_diff -e trace=seccomp diff --git a/tests/set_sigblock.c b/tests/set_sigblock.c new file mode 100644 index 00000000..4786322c --- /dev/null +++ b/tests/set_sigblock.c @@ -0,0 +1,53 @@ +/* + * Execute a command with the specified signal blocked/unblocked. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> +#include <unistd.h> + +int +main(int ac, char **av) +{ + if (ac < 4) + error_msg_and_fail("usage: set_sigblock 0|1 signum path..."); + + const int block = atoi(av[1]); + const int signum = atoi(av[2]); + sigset_t mask; + + sigemptyset(&mask); + if (sigaddset(&mask, signum)) + perror_msg_and_fail("sigaddset: %s", av[2]); + if (sigprocmask(block ? SIG_BLOCK : SIG_UNBLOCK, &mask, NULL)) + perror_msg_and_fail("sigprocmask"); + + execvp(av[3], av + 3); + perror_msg_and_fail("execvp: %s", av[3]); +} diff --git a/tests/set_sigign.c b/tests/set_sigign.c new file mode 100644 index 00000000..0319fed3 --- /dev/null +++ b/tests/set_sigign.c @@ -0,0 +1,49 @@ +/* + * Execute a command with a signal handler set to SIG_IGN/SIG_DFL. + * + * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" +#include <signal.h> +#include <stdlib.h> +#include <unistd.h> + +int +main(int ac, char **av) +{ + if (ac < 4) + error_msg_and_fail("usage: set_sigign 0|1 signum path..."); + + const int ign = atoi(av[1]); + const int signum = atoi(av[2]); + + if (signal(signum, ign ? SIG_IGN : SIG_DFL) == SIG_ERR) + perror_msg_and_fail("signal: %s", av[2]); + + execvp(av[3], av + 3); + perror_msg_and_fail("execvp: %s", av[3]); +} diff --git a/tests/sigblock.test b/tests/sigblock.test new file mode 100755 index 00000000..ddbe2dea --- /dev/null +++ b/tests/sigblock.test @@ -0,0 +1,22 @@ +#!/bin/sh + +# Check signal mask transparency. +# Starting with commit v4.17-5-gf83b49b strace is expected +# to forward the signal mask to tracees unchanged. + +. "${srcdir=.}/init.sh" + +run_prog ../list_sigaction_signum > /dev/null +saved_STRACE="$STRACE" + +for sig in $(../list_sigaction_signum); do + for block in 0 1; do + set_cmd="../set_sigblock $block $sig" + check_cmd="../check_sigblock $block $sig" + run_prog $set_cmd $check_cmd + STRACE="$set_cmd $saved_STRACE" + for i in '' -I1 -I2 -I3 -I4; do + run_strace $i -enone $check_cmd + done + done +done diff --git a/tests/sigign.test b/tests/sigign.test new file mode 100755 index 00000000..3164e72e --- /dev/null +++ b/tests/sigign.test @@ -0,0 +1,22 @@ +#!/bin/sh + +# Check signal disposition transparency. +# Starting with commit v4.17-8-ge97a66f strace is expected +# to forward the signal disposition to tracees unchanged. + +. "${srcdir=.}/init.sh" + +run_prog ../list_sigaction_signum > /dev/null +saved_STRACE="$STRACE" + +for sig in $(../list_sigaction_signum); do + for ign in 0 1; do + set_cmd="../set_sigign $ign $sig" + check_cmd="../check_sigign $ign $sig" + run_prog $set_cmd $check_cmd + STRACE="$set_cmd $saved_STRACE" + for i in '' -I1 -I2 -I3 -I4; do + run_strace $i -enone $check_cmd + done + done +done diff --git a/tests/test_nlattr.h b/tests/test_nlattr.h index 048d5475..43f467ff 100644 --- a/tests/test_nlattr.h +++ b/tests/test_nlattr.h @@ -203,14 +203,75 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) printf("]")); \ } while (0) -#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \ - init_msg_, print_msg_, \ - nla_type_, pattern_, obj_, ...) \ +#define TEST_NESTED_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, nla_type_str_, \ + pattern_, obj_, depth_, ...) \ do { \ const unsigned int plen = \ sizeof(obj_) - 1 > DEFAULT_STRLEN \ ? DEFAULT_STRLEN : (int) sizeof(obj_) - 1; \ /* len < sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + plen, (pattern_), plen, \ + print_quoted_hex((pattern_), plen); \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + /* short read of sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + sizeof(obj_), \ + (pattern_), sizeof(obj_) - 1, \ + printf("%p", RTA_DATA(TEST_NLATTR_nla)); \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + /* sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \ + (hdrlen_) + NLA_HDRLEN * depth_, \ + (init_msg_), (print_msg_), \ + (nla_type_), (nla_type_str_), \ + sizeof(obj_), \ + &(obj_), sizeof(obj_), \ + __VA_ARGS__; \ + size_t i; \ + for (i = 0; i < depth_; ++i) \ + printf("}")); \ + } while (0) + +#define TEST_NESTED_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, \ + depth_, ...) \ + TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + (pattern_), (obj_), (depth_), \ + __VA_ARGS__) + +#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, ...) \ + TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + (pattern_), (obj_), 1, \ + __VA_ARGS__) + +#define TEST_NESTED_NLATTR_ARRAY(fd_, nlh0_, hdrlen_, \ + init_msg_, print_msg_, \ + nla_type_, pattern_, obj_, print_elem_)\ + do { \ + const unsigned int plen = \ + sizeof((obj_)[0]) - 1 > DEFAULT_STRLEN \ + ? DEFAULT_STRLEN : (int) sizeof((obj_)[0]) - 1; \ + /* len < sizeof((obj_)[0]) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ (init_msg_), (print_msg_), \ @@ -218,15 +279,36 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) plen, (pattern_), plen, \ print_quoted_hex((pattern_), plen); \ printf("}")); \ + /* sizeof((obj_)[0]) < len < sizeof(obj_) */ \ + TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ + (hdrlen_) + NLA_HDRLEN, \ + (init_msg_), (print_msg_), \ + (nla_type_), #nla_type_, \ + sizeof(obj_) - 1, \ + &(obj_), sizeof(obj_) - 1, \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf("]}")); \ /* short read of sizeof(obj_) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ (init_msg_), (print_msg_), \ (nla_type_), #nla_type_, \ sizeof(obj_), \ - (pattern_), sizeof(obj_) - 1, \ - printf("%p}", \ - RTA_DATA(TEST_NLATTR_nla))); \ + &(obj_), sizeof(obj_) - 1, \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf(", %p]}", \ + RTA_DATA(TEST_NLATTR_nla) \ + + sizeof((obj_)[0]))); \ /* sizeof(obj_) */ \ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \ (hdrlen_) + NLA_HDRLEN, \ @@ -234,6 +316,11 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type) (nla_type_), #nla_type_, \ sizeof(obj_), \ &(obj_), sizeof(obj_), \ - __VA_ARGS__, \ - printf("}")); \ + printf("["); \ + size_t i; \ + for (i = 0; i < ARRAY_SIZE(obj_); ++i) { \ + if (i) printf(", "); \ + (print_elem_)(&(obj_)[i]); \ + } \ + printf("]}")); \ } while (0) diff --git a/xlat/Makemodule.am b/xlat/Makemodule.am index 357af0a6..cfcc5714 100644 --- a/xlat/Makemodule.am +++ b/xlat/Makemodule.am @@ -1,5 +1,5 @@ -XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/at_statx_sync_types.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_flags.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsockipoptions.in xlat/getsockipv6options.in xlat/hci_channels.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipccalls.in xlat/itimer_which.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/name_to_handle_at_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rwf_flags.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_states.in xlat/sock_type_flags.in xlat/socketcalls.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in -XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_flags.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsockipoptions.h xlat/getsockipv6options.h xlat/hci_channels.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipccalls.h xlat/itimer_which.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/name_to_handle_at_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_states.h xlat/sock_type_flags.h xlat/socketcalls.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h +XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/at_statx_sync_types.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_flags.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsockipoptions.in xlat/getsockipv6options.in xlat/hci_channels.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipccalls.in xlat/itimer_which.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in xlat/nf_ctnetlink_exp_msg_types.in xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in xlat/rtnl_mdba_mdb_entry_attrs.in xlat/rtnl_mdba_router_attrs.in xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_states.in xlat/sock_type_flags.in xlat/socketcalls.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in +XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_flags.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsockipoptions.h xlat/getsockipv6options.h xlat/hci_channels.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipccalls.h xlat/itimer_which.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h xlat/netlink_delete_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_states.h xlat/sock_type_flags.h xlat/socketcalls.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h $(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh @@ -314,6 +314,10 @@ $(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/mdb_flags.h: $(top_srcdir)/xlat/mdb_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/mdb_states.h: $(top_srcdir)/xlat/mdb_states.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/membarrier_cmds.h: $(top_srcdir)/xlat/membarrier_cmds.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/memfd_create_flags.h: $(top_srcdir)/xlat/memfd_create_flags.in $(top_srcdir)/xlat/gen.sh @@ -358,6 +362,8 @@ $(top_srcdir)/xlat/mtd_otp_options.h: $(top_srcdir)/xlat/mtd_otp_options.in $(to $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/mtd_type_options.h: $(top_srcdir)/xlat/mtd_type_options.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/multicast_router_types.h: $(top_srcdir)/xlat/multicast_router_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/name_to_handle_at_flags.h: $(top_srcdir)/xlat/name_to_handle_at_flags.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/neighbor_cache_entry_flags.h: $(top_srcdir)/xlat/neighbor_cache_entry_flags.in $(top_srcdir)/xlat/gen.sh @@ -366,6 +372,8 @@ $(top_srcdir)/xlat/neighbor_cache_entry_states.h: $(top_srcdir)/xlat/neighbor_ca $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_ack_flags.h: $(top_srcdir)/xlat/netlink_ack_flags.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/netlink_delete_flags.h: $(top_srcdir)/xlat/netlink_delete_flags.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_diag_attrs.h: $(top_srcdir)/xlat/netlink_diag_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_diag_show.h: $(top_srcdir)/xlat/netlink_diag_show.in $(top_srcdir)/xlat/gen.sh @@ -384,6 +392,28 @@ $(top_srcdir)/xlat/netlink_states.h: $(top_srcdir)/xlat/netlink_states.in $(top_ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/netlink_types.h: $(top_srcdir)/xlat/netlink_types.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_acct_msg_types.h: $(top_srcdir)/xlat/nf_acct_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_cthelper_msg_types.h: $(top_srcdir)/xlat/nf_cthelper_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ctnetlink_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_cttimeout_msg_types.h: $(top_srcdir)/xlat/nf_cttimeout_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ipset_msg_types.h: $(top_srcdir)/xlat/nf_ipset_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_nft_compat_msg_types.h: $(top_srcdir)/xlat/nf_nft_compat_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_nftables_msg_types.h: $(top_srcdir)/xlat/nf_nftables_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_osf_msg_types.h: $(top_srcdir)/xlat/nf_osf_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_queue_msg_types.h: $(top_srcdir)/xlat/nf_queue_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/nf_ulog_msg_types.h: $(top_srcdir)/xlat/nf_ulog_msg_types.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/nl_audit_types.h: $(top_srcdir)/xlat/nl_audit_types.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/nl_crypto_types.h: $(top_srcdir)/xlat/nl_crypto_types.in $(top_srcdir)/xlat/gen.sh @@ -524,6 +554,16 @@ $(top_srcdir)/xlat/rtnl_link_attrs.h: $(top_srcdir)/xlat/rtnl_link_attrs.in $(to $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdb_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_router_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_neigh_attrs.h: $(top_srcdir)/xlat/rtnl_neigh_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_neightbl_attrs.h: $(top_srcdir)/xlat/rtnl_neightbl_attrs.in $(top_srcdir)/xlat/gen.sh @@ -544,6 +584,10 @@ $(top_srcdir)/xlat/rtnl_tc_action_attrs.h: $(top_srcdir)/xlat/rtnl_tc_action_att $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rtnl_tc_attrs.h: $(top_srcdir)/xlat/rtnl_tc_attrs.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_tca_stab_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stab_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ +$(top_srcdir)/xlat/rtnl_tca_stats_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stats_attrs.in $(top_srcdir)/xlat/gen.sh + $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/rwf_flags.h: $(top_srcdir)/xlat/rwf_flags.in $(top_srcdir)/xlat/gen.sh $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@ $(top_srcdir)/xlat/sa_handler_values.h: $(top_srcdir)/xlat/sa_handler_values.in $(top_srcdir)/xlat/gen.sh diff --git a/xlat/arp_hardware_types.h b/xlat/arp_hardware_types.h index 45dbc5a0..200456ef 100644 --- a/xlat/arp_hardware_types.h +++ b/xlat/arp_hardware_types.h @@ -93,6 +93,9 @@ const struct xlat arp_hardware_types[] = { #if defined(ARPHRD_RAWHDLC) || (defined(HAVE_DECL_ARPHRD_RAWHDLC) && HAVE_DECL_ARPHRD_RAWHDLC) XLAT(ARPHRD_RAWHDLC), #endif +#if defined(ARPHRD_RAWIP) || (defined(HAVE_DECL_ARPHRD_RAWIP) && HAVE_DECL_ARPHRD_RAWIP) + XLAT(ARPHRD_RAWIP), +#endif #if defined(ARPHRD_TUNNEL) || (defined(HAVE_DECL_ARPHRD_TUNNEL) && HAVE_DECL_ARPHRD_TUNNEL) XLAT(ARPHRD_TUNNEL), #endif diff --git a/xlat/arp_hardware_types.in b/xlat/arp_hardware_types.in index 744a6728..e307455d 100644 --- a/xlat/arp_hardware_types.in +++ b/xlat/arp_hardware_types.in @@ -28,6 +28,7 @@ ARPHRD_CISCO ARPHRD_LAPB ARPHRD_DDCMP ARPHRD_RAWHDLC +ARPHRD_RAWIP ARPHRD_TUNNEL ARPHRD_TUNNEL6 ARPHRD_FRAD diff --git a/xlat/bpf_attach_type.h b/xlat/bpf_attach_type.h index 7dbda4b6..a98bf0f1 100644 --- a/xlat/bpf_attach_type.h +++ b/xlat/bpf_attach_type.h @@ -11,6 +11,12 @@ #if !(defined(BPF_CGROUP_SOCK_OPS) || (defined(HAVE_DECL_BPF_CGROUP_SOCK_OPS) && HAVE_DECL_BPF_CGROUP_SOCK_OPS)) # define BPF_CGROUP_SOCK_OPS 3 #endif +#if !(defined(BPF_SK_SKB_STREAM_PARSER) || (defined(HAVE_DECL_BPF_SK_SKB_STREAM_PARSER) && HAVE_DECL_BPF_SK_SKB_STREAM_PARSER)) +# define BPF_SK_SKB_STREAM_PARSER 4 +#endif +#if !(defined(BPF_SK_SKB_STREAM_VERDICT) || (defined(HAVE_DECL_BPF_SK_SKB_STREAM_VERDICT) && HAVE_DECL_BPF_SK_SKB_STREAM_VERDICT)) +# define BPF_SK_SKB_STREAM_VERDICT 5 +#endif #ifdef IN_MPERS @@ -24,6 +30,8 @@ const struct xlat bpf_attach_type[] = { XLAT(BPF_CGROUP_INET_EGRESS), XLAT(BPF_CGROUP_INET_SOCK_CREATE), XLAT(BPF_CGROUP_SOCK_OPS), + XLAT(BPF_SK_SKB_STREAM_PARSER), + XLAT(BPF_SK_SKB_STREAM_VERDICT), XLAT_END }; diff --git a/xlat/bpf_attach_type.in b/xlat/bpf_attach_type.in index 9f96467c..162e6f56 100644 --- a/xlat/bpf_attach_type.in +++ b/xlat/bpf_attach_type.in @@ -2,3 +2,5 @@ BPF_CGROUP_INET_INGRESS 0 BPF_CGROUP_INET_EGRESS 1 BPF_CGROUP_INET_SOCK_CREATE 2 BPF_CGROUP_SOCK_OPS 3 +BPF_SK_SKB_STREAM_PARSER 4 +BPF_SK_SKB_STREAM_VERDICT 5 diff --git a/xlat/bpf_map_flags.h b/xlat/bpf_map_flags.h index f7c0a492..7ec7f9b6 100644 --- a/xlat/bpf_map_flags.h +++ b/xlat/bpf_map_flags.h @@ -2,6 +2,12 @@ #if !(defined(BPF_F_NO_PREALLOC) || (defined(HAVE_DECL_BPF_F_NO_PREALLOC) && HAVE_DECL_BPF_F_NO_PREALLOC)) # define BPF_F_NO_PREALLOC 1 #endif +#if !(defined(BPF_F_NO_COMMON_LRU) || (defined(HAVE_DECL_BPF_F_NO_COMMON_LRU) && HAVE_DECL_BPF_F_NO_COMMON_LRU)) +# define BPF_F_NO_COMMON_LRU 2 +#endif +#if !(defined(BPF_F_NUMA_NODE) || (defined(HAVE_DECL_BPF_F_NUMA_NODE) && HAVE_DECL_BPF_F_NUMA_NODE)) +# define BPF_F_NUMA_NODE 4 +#endif #ifdef IN_MPERS @@ -12,6 +18,8 @@ static const struct xlat bpf_map_flags[] = { XLAT(BPF_F_NO_PREALLOC), + XLAT(BPF_F_NO_COMMON_LRU), + XLAT(BPF_F_NUMA_NODE), XLAT_END }; diff --git a/xlat/bpf_map_flags.in b/xlat/bpf_map_flags.in index 63338002..3137be4e 100644 --- a/xlat/bpf_map_flags.in +++ b/xlat/bpf_map_flags.in @@ -1 +1,3 @@ BPF_F_NO_PREALLOC 1 +BPF_F_NO_COMMON_LRU 2 +BPF_F_NUMA_NODE 4 diff --git a/xlat/bpf_map_types.h b/xlat/bpf_map_types.h index 292d9a59..55b3f553 100644 --- a/xlat/bpf_map_types.h +++ b/xlat/bpf_map_types.h @@ -41,6 +41,12 @@ #if !(defined(BPF_MAP_TYPE_HASH_OF_MAPS) || (defined(HAVE_DECL_BPF_MAP_TYPE_HASH_OF_MAPS) && HAVE_DECL_BPF_MAP_TYPE_HASH_OF_MAPS)) # define BPF_MAP_TYPE_HASH_OF_MAPS 13 #endif +#if !(defined(BPF_MAP_TYPE_DEVMAP) || (defined(HAVE_DECL_BPF_MAP_TYPE_DEVMAP) && HAVE_DECL_BPF_MAP_TYPE_DEVMAP)) +# define BPF_MAP_TYPE_DEVMAP 14 +#endif +#if !(defined(BPF_MAP_TYPE_SOCKMAP) || (defined(HAVE_DECL_BPF_MAP_TYPE_SOCKMAP) && HAVE_DECL_BPF_MAP_TYPE_SOCKMAP)) +# define BPF_MAP_TYPE_SOCKMAP 15 +#endif #ifdef IN_MPERS @@ -64,6 +70,8 @@ const struct xlat bpf_map_types[] = { XLAT(BPF_MAP_TYPE_LPM_TRIE), XLAT(BPF_MAP_TYPE_ARRAY_OF_MAPS), XLAT(BPF_MAP_TYPE_HASH_OF_MAPS), + XLAT(BPF_MAP_TYPE_DEVMAP), + XLAT(BPF_MAP_TYPE_SOCKMAP), XLAT_END }; diff --git a/xlat/bpf_map_types.in b/xlat/bpf_map_types.in index 583c0160..233ff5b2 100644 --- a/xlat/bpf_map_types.in +++ b/xlat/bpf_map_types.in @@ -12,3 +12,5 @@ BPF_MAP_TYPE_LRU_PERCPU_HASH 10 BPF_MAP_TYPE_LPM_TRIE 11 BPF_MAP_TYPE_ARRAY_OF_MAPS 12 BPF_MAP_TYPE_HASH_OF_MAPS 13 +BPF_MAP_TYPE_DEVMAP 14 +BPF_MAP_TYPE_SOCKMAP 15 diff --git a/xlat/bpf_op_jmp.h b/xlat/bpf_op_jmp.h index d43b30ec..9bb2acdc 100644 --- a/xlat/bpf_op_jmp.h +++ b/xlat/bpf_op_jmp.h @@ -26,12 +26,24 @@ const struct xlat bpf_op_jmp[] = { #if defined(BPF_JNE) || (defined(HAVE_DECL_BPF_JNE) && HAVE_DECL_BPF_JNE) XLAT(BPF_JNE), #endif +#if defined(BPF_JLT) || (defined(HAVE_DECL_BPF_JLT) && HAVE_DECL_BPF_JLT) + XLAT(BPF_JLT), +#endif +#if defined(BPF_JLE) || (defined(HAVE_DECL_BPF_JLE) && HAVE_DECL_BPF_JLE) + XLAT(BPF_JLE), +#endif #if defined(BPF_JSGT) || (defined(HAVE_DECL_BPF_JSGT) && HAVE_DECL_BPF_JSGT) XLAT(BPF_JSGT), #endif #if defined(BPF_JSGE) || (defined(HAVE_DECL_BPF_JSGE) && HAVE_DECL_BPF_JSGE) XLAT(BPF_JSGE), #endif +#if defined(BPF_JSLT) || (defined(HAVE_DECL_BPF_JSLT) && HAVE_DECL_BPF_JSLT) + XLAT(BPF_JSLT), +#endif +#if defined(BPF_JSLE) || (defined(HAVE_DECL_BPF_JSLE) && HAVE_DECL_BPF_JSLE) + XLAT(BPF_JSLE), +#endif #if defined(BPF_CALL) || (defined(HAVE_DECL_BPF_CALL) && HAVE_DECL_BPF_CALL) XLAT(BPF_CALL), #endif diff --git a/xlat/bpf_op_jmp.in b/xlat/bpf_op_jmp.in index 456c0af8..48fcb075 100644 --- a/xlat/bpf_op_jmp.in +++ b/xlat/bpf_op_jmp.in @@ -4,7 +4,11 @@ BPF_JGT BPF_JGE BPF_JSET BPF_JNE +BPF_JLT +BPF_JLE BPF_JSGT BPF_JSGE +BPF_JSLT +BPF_JSLE BPF_CALL BPF_EXIT diff --git a/xlat/bpf_prog_types.h b/xlat/bpf_prog_types.h index 4dd0a959..3e1d0e03 100644 --- a/xlat/bpf_prog_types.h +++ b/xlat/bpf_prog_types.h @@ -41,6 +41,9 @@ #if !(defined(BPF_PROG_TYPE_SOCK_OPS) || (defined(HAVE_DECL_BPF_PROG_TYPE_SOCK_OPS) && HAVE_DECL_BPF_PROG_TYPE_SOCK_OPS)) # define BPF_PROG_TYPE_SOCK_OPS 13 #endif +#if !(defined(BPF_PROG_TYPE_SK_SKB) || (defined(HAVE_DECL_BPF_PROG_TYPE_SK_SKB) && HAVE_DECL_BPF_PROG_TYPE_SK_SKB)) +# define BPF_PROG_TYPE_SK_SKB 14 +#endif #ifdef IN_MPERS @@ -64,6 +67,7 @@ const struct xlat bpf_prog_types[] = { XLAT(BPF_PROG_TYPE_LWT_OUT), XLAT(BPF_PROG_TYPE_LWT_XMIT), XLAT(BPF_PROG_TYPE_SOCK_OPS), + XLAT(BPF_PROG_TYPE_SK_SKB), XLAT_END }; diff --git a/xlat/bpf_prog_types.in b/xlat/bpf_prog_types.in index 5d7057d5..1ae02ddf 100644 --- a/xlat/bpf_prog_types.in +++ b/xlat/bpf_prog_types.in @@ -12,3 +12,4 @@ BPF_PROG_TYPE_LWT_IN 10 BPF_PROG_TYPE_LWT_OUT 11 BPF_PROG_TYPE_LWT_XMIT 12 BPF_PROG_TYPE_SOCK_OPS 13 +BPF_PROG_TYPE_SK_SKB 14 diff --git a/xlat/ethernet_protocols.h b/xlat/ethernet_protocols.h index 7b5e86c9..0ca3cad8 100644 --- a/xlat/ethernet_protocols.h +++ b/xlat/ethernet_protocols.h @@ -75,6 +75,9 @@ const struct xlat ethernet_protocols[] = { #if defined(ETH_P_8021Q) || (defined(HAVE_DECL_ETH_P_8021Q) && HAVE_DECL_ETH_P_8021Q) XLAT(ETH_P_8021Q), #endif +#if defined(ETH_P_ERSPAN) || (defined(HAVE_DECL_ETH_P_ERSPAN) && HAVE_DECL_ETH_P_ERSPAN) + XLAT(ETH_P_ERSPAN), +#endif #if defined(ETH_P_IPX) || (defined(HAVE_DECL_ETH_P_IPX) && HAVE_DECL_ETH_P_IPX) XLAT(ETH_P_IPX), #endif @@ -159,6 +162,9 @@ const struct xlat ethernet_protocols[] = { #if defined(ETH_P_HSR) || (defined(HAVE_DECL_ETH_P_HSR) && HAVE_DECL_ETH_P_HSR) XLAT(ETH_P_HSR), #endif +#if defined(ETH_P_NSH) || (defined(HAVE_DECL_ETH_P_NSH) && HAVE_DECL_ETH_P_NSH) + XLAT(ETH_P_NSH), +#endif #if defined(ETH_P_LOOPBACK) || (defined(HAVE_DECL_ETH_P_LOOPBACK) && HAVE_DECL_ETH_P_LOOPBACK) XLAT(ETH_P_LOOPBACK), #endif @@ -174,6 +180,9 @@ const struct xlat ethernet_protocols[] = { #if defined(ETH_P_EDSA) || (defined(HAVE_DECL_ETH_P_EDSA) && HAVE_DECL_ETH_P_EDSA) XLAT(ETH_P_EDSA), #endif +#if defined(ETH_P_IFE) || (defined(HAVE_DECL_ETH_P_IFE) && HAVE_DECL_ETH_P_IFE) + XLAT(ETH_P_IFE), +#endif #if defined(ETH_P_AF_IUCV) || (defined(HAVE_DECL_ETH_P_AF_IUCV) && HAVE_DECL_ETH_P_AF_IUCV) XLAT(ETH_P_AF_IUCV), #endif @@ -255,6 +264,9 @@ const struct xlat ethernet_protocols[] = { #if defined(ETH_P_XDSA) || (defined(HAVE_DECL_ETH_P_XDSA) && HAVE_DECL_ETH_P_XDSA) XLAT(ETH_P_XDSA), #endif +#if defined(ETH_P_MAP) || (defined(HAVE_DECL_ETH_P_MAP) && HAVE_DECL_ETH_P_MAP) + XLAT(ETH_P_MAP), +#endif XLAT_END }; diff --git a/xlat/ethernet_protocols.in b/xlat/ethernet_protocols.in index 522d1bee..2e4a1821 100644 --- a/xlat/ethernet_protocols.in +++ b/xlat/ethernet_protocols.in @@ -22,6 +22,7 @@ ETH_P_RARP ETH_P_ATALK ETH_P_AARP ETH_P_8021Q +ETH_P_ERSPAN ETH_P_IPX ETH_P_IPV6 ETH_P_PAUSE @@ -50,11 +51,13 @@ ETH_P_TDLS ETH_P_FIP ETH_P_80221 ETH_P_HSR +ETH_P_NSH ETH_P_LOOPBACK ETH_P_QINQ1 ETH_P_QINQ2 ETH_P_QINQ3 ETH_P_EDSA +ETH_P_IFE ETH_P_AF_IUCV ETH_P_802_3_MIN ETH_P_802_3 @@ -82,3 +85,4 @@ ETH_P_PHONET ETH_P_IEEE802154 ETH_P_CAIF ETH_P_XDSA +ETH_P_MAP diff --git a/xlat/gen.sh b/xlat/gen.sh index 06c1b17a..d5286d10 100755 --- a/xlat/gen.sh +++ b/xlat/gen.sh @@ -290,6 +290,7 @@ main() local name local jobs=0 local ncpus="$(getconf _NPROCESSORS_ONLN)" + local pids= [ "${ncpus}" -ge 1 ] || ncpus=1 @@ -300,15 +301,20 @@ main() name=${f##*/} name=${name%.in} gen_header "${f}" "${output}/${name}.h" "${name}" & + pids="$pids $!" names="${names} ${name}" : $(( jobs += 1 )) - if [ ${jobs} -ge ${ncpus} ]; then - jobs=0 - wait - fi + if [ "${jobs}" -gt "$(( ncpus * 2 ))" ]; then + read wait_pid rest + pids="$rest" + wait -n 2>/dev/null || wait "$wait_pid" + : $(( jobs -= 1 )) + fi <<- EOF + $pids + EOF done - gen_git "${output}/.gitignore" ${names} - gen_make "${output}/Makemodule.am" ${names} + gen_git "${output}/.gitignore" ${names} & + gen_make "${output}/Makemodule.am" ${names} & wait else name=${input##*/} diff --git a/xlat/inet_diag_attrs.h b/xlat/inet_diag_attrs.h index 7afbc4ef..a4833736 100644 --- a/xlat/inet_diag_attrs.h +++ b/xlat/inet_diag_attrs.h @@ -25,6 +25,7 @@ const struct xlat inet_diag_attrs[] = { XLAT(INET_DIAG_PAD), XLAT(INET_DIAG_MARK), XLAT(INET_DIAG_BBRINFO), + XLAT(INET_DIAG_CLASS_ID), XLAT_END }; diff --git a/xlat/inet_diag_attrs.in b/xlat/inet_diag_attrs.in index 17519c83..4536ebc3 100644 --- a/xlat/inet_diag_attrs.in +++ b/xlat/inet_diag_attrs.in @@ -16,3 +16,4 @@ INET_DIAG_PEERS INET_DIAG_PAD INET_DIAG_MARK INET_DIAG_BBRINFO +INET_DIAG_CLASS_ID diff --git a/xlat/inet_diag_extended_flags.h b/xlat/inet_diag_extended_flags.h index bf1bd3ff..158e4e15 100644 --- a/xlat/inet_diag_extended_flags.h +++ b/xlat/inet_diag_extended_flags.h @@ -24,6 +24,7 @@ const struct xlat inet_diag_extended_flags[] = { XLAT(1<<(INET_DIAG_PAD-1)), XLAT(1<<(INET_DIAG_MARK-1)), XLAT(1<<(INET_DIAG_BBRINFO-1)), + XLAT(1<<(INET_DIAG_CLASS_ID-1)), XLAT_END }; diff --git a/xlat/inet_diag_extended_flags.in b/xlat/inet_diag_extended_flags.in index 05be3ca4..182cac16 100644 --- a/xlat/inet_diag_extended_flags.in +++ b/xlat/inet_diag_extended_flags.in @@ -15,3 +15,4 @@ 1<<(INET_DIAG_PAD-1) 1<<(INET_DIAG_MARK-1) 1<<(INET_DIAG_BBRINFO-1) +1<<(INET_DIAG_CLASS_ID-1) diff --git a/xlat/kcmp_types.h b/xlat/kcmp_types.h index ba067f04..1b886079 100644 --- a/xlat/kcmp_types.h +++ b/xlat/kcmp_types.h @@ -20,6 +20,9 @@ #if !(defined(KCMP_SYSVSEM) || (defined(HAVE_DECL_KCMP_SYSVSEM) && HAVE_DECL_KCMP_SYSVSEM)) # define KCMP_SYSVSEM 6 #endif +#if !(defined(KCMP_EPOLL_TFD) || (defined(HAVE_DECL_KCMP_EPOLL_TFD) && HAVE_DECL_KCMP_EPOLL_TFD)) +# define KCMP_EPOLL_TFD 7 +#endif #ifdef IN_MPERS @@ -36,6 +39,7 @@ const struct xlat kcmp_types[] = { XLAT(KCMP_SIGHAND), XLAT(KCMP_IO), XLAT(KCMP_SYSVSEM), + XLAT(KCMP_EPOLL_TFD), XLAT_END }; diff --git a/xlat/kcmp_types.in b/xlat/kcmp_types.in index 4357776c..c37cf22b 100644 --- a/xlat/kcmp_types.in +++ b/xlat/kcmp_types.in @@ -5,3 +5,4 @@ KCMP_FS 3 KCMP_SIGHAND 4 KCMP_IO 5 KCMP_SYSVSEM 6 +KCMP_EPOLL_TFD 7 diff --git a/xlat/loop_cmds.h b/xlat/loop_cmds.h index 258662d3..cc8a7c93 100644 --- a/xlat/loop_cmds.h +++ b/xlat/loop_cmds.h @@ -26,6 +26,9 @@ #if !(defined(LOOP_SET_DIRECT_IO) || (defined(HAVE_DECL_LOOP_SET_DIRECT_IO) && HAVE_DECL_LOOP_SET_DIRECT_IO)) # define LOOP_SET_DIRECT_IO 0x4C08 #endif +#if !(defined(LOOP_SET_BLOCK_SIZE) || (defined(HAVE_DECL_LOOP_SET_BLOCK_SIZE) && HAVE_DECL_LOOP_SET_BLOCK_SIZE)) +# define LOOP_SET_BLOCK_SIZE 0x4C09 +#endif #if !(defined(LOOP_CTL_ADD) || (defined(HAVE_DECL_LOOP_CTL_ADD) && HAVE_DECL_LOOP_CTL_ADD)) # define LOOP_CTL_ADD 0x4C80 #endif diff --git a/xlat/loop_cmds.in b/xlat/loop_cmds.in index 6faca515..c4728af3 100644 --- a/xlat/loop_cmds.in +++ b/xlat/loop_cmds.in @@ -7,6 +7,7 @@ LOOP_GET_STATUS64 0x4C05 LOOP_CHANGE_FD 0x4C06 LOOP_SET_CAPACITY 0x4C07 LOOP_SET_DIRECT_IO 0x4C08 +LOOP_SET_BLOCK_SIZE 0x4C09 LOOP_CTL_ADD 0x4C80 LOOP_CTL_REMOVE 0x4C81 LOOP_CTL_GET_FREE 0x4C82 diff --git a/xlat/madvise_cmds.h b/xlat/madvise_cmds.h index 41aa3a55..ec5b06bc 100644 --- a/xlat/madvise_cmds.h +++ b/xlat/madvise_cmds.h @@ -59,6 +59,12 @@ const struct xlat madvise_cmds[] = { #if defined(MADV_DODUMP) || (defined(HAVE_DECL_MADV_DODUMP) && HAVE_DECL_MADV_DODUMP) XLAT(MADV_DODUMP), #endif +#if defined(MADV_WIPEONFORK) || (defined(HAVE_DECL_MADV_WIPEONFORK) && HAVE_DECL_MADV_WIPEONFORK) + XLAT(MADV_WIPEONFORK), +#endif +#if defined(MADV_KEEPONFORK) || (defined(HAVE_DECL_MADV_KEEPONFORK) && HAVE_DECL_MADV_KEEPONFORK) + XLAT(MADV_KEEPONFORK), +#endif XLAT_END }; diff --git a/xlat/madvise_cmds.in b/xlat/madvise_cmds.in index bf6b1da0..415c02f3 100644 --- a/xlat/madvise_cmds.in +++ b/xlat/madvise_cmds.in @@ -15,3 +15,5 @@ MADV_HUGEPAGE MADV_NOHUGEPAGE MADV_DONTDUMP MADV_DODUMP +MADV_WIPEONFORK +MADV_KEEPONFORK diff --git a/xlat/mdb_flags.h b/xlat/mdb_flags.h new file mode 100644 index 00000000..4340f3ea --- /dev/null +++ b/xlat/mdb_flags.h @@ -0,0 +1,17 @@ +/* Generated by ./xlat/gen.sh from ./xlat/mdb_flags.in; do not edit. */ + +#ifdef IN_MPERS + +# error static const struct xlat mdb_flags in mpers mode + +#else + +static +const struct xlat mdb_flags[] = { +#if defined(MDB_FLAGS_OFFLOAD) || (defined(HAVE_DECL_MDB_FLAGS_OFFLOAD) && HAVE_DECL_MDB_FLAGS_OFFLOAD) + XLAT(MDB_FLAGS_OFFLOAD), +#endif + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/mdb_flags.in b/xlat/mdb_flags.in new file mode 100644 index 00000000..4c2f1ed3 --- /dev/null +++ b/xlat/mdb_flags.in @@ -0,0 +1 @@ +MDB_FLAGS_OFFLOAD diff --git a/xlat/mdb_states.h b/xlat/mdb_states.h new file mode 100644 index 00000000..dd1337d1 --- /dev/null +++ b/xlat/mdb_states.h @@ -0,0 +1,20 @@ +/* Generated by ./xlat/gen.sh from ./xlat/mdb_states.in; do not edit. */ + +#ifdef IN_MPERS + +# error static const struct xlat mdb_states in mpers mode + +#else + +static +const struct xlat mdb_states[] = { +#if defined(MDB_TEMPORARY) || (defined(HAVE_DECL_MDB_TEMPORARY) && HAVE_DECL_MDB_TEMPORARY) + XLAT(MDB_TEMPORARY), +#endif +#if defined(MDB_PERMANENT) || (defined(HAVE_DECL_MDB_PERMANENT) && HAVE_DECL_MDB_PERMANENT) + XLAT(MDB_PERMANENT), +#endif + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/mdb_states.in b/xlat/mdb_states.in new file mode 100644 index 00000000..7a580b90 --- /dev/null +++ b/xlat/mdb_states.in @@ -0,0 +1,2 @@ +MDB_TEMPORARY +MDB_PERMANENT diff --git a/xlat/membarrier_cmds.h b/xlat/membarrier_cmds.h index 9d4d5187..9f1c69e3 100644 --- a/xlat/membarrier_cmds.h +++ b/xlat/membarrier_cmds.h @@ -5,6 +5,12 @@ #if !(defined(MEMBARRIER_CMD_SHARED) || (defined(HAVE_DECL_MEMBARRIER_CMD_SHARED) && HAVE_DECL_MEMBARRIER_CMD_SHARED)) # define MEMBARRIER_CMD_SHARED 1 #endif +#if !(defined(MEMBARRIER_CMD_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED)) +# define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8 +#endif +#if !(defined(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED)) +# define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16 +#endif #ifdef IN_MPERS @@ -16,6 +22,8 @@ static const struct xlat membarrier_cmds[] = { XLAT(MEMBARRIER_CMD_QUERY), XLAT(MEMBARRIER_CMD_SHARED), + XLAT(MEMBARRIER_CMD_PRIVATE_EXPEDITED), + XLAT(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED), XLAT_END }; diff --git a/xlat/membarrier_cmds.in b/xlat/membarrier_cmds.in index e087e8e3..e4fe06ac 100644 --- a/xlat/membarrier_cmds.in +++ b/xlat/membarrier_cmds.in @@ -1,2 +1,4 @@ -MEMBARRIER_CMD_QUERY 0 -MEMBARRIER_CMD_SHARED 1 +MEMBARRIER_CMD_QUERY 0 +MEMBARRIER_CMD_SHARED 1 +MEMBARRIER_CMD_PRIVATE_EXPEDITED 8 +MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16 diff --git a/xlat/memfd_create_flags.h b/xlat/memfd_create_flags.h index 9b760996..f656e6b0 100644 --- a/xlat/memfd_create_flags.h +++ b/xlat/memfd_create_flags.h @@ -5,6 +5,9 @@ #if !(defined(MFD_ALLOW_SEALING) || (defined(HAVE_DECL_MFD_ALLOW_SEALING) && HAVE_DECL_MFD_ALLOW_SEALING)) # define MFD_ALLOW_SEALING 2 #endif +#if !(defined(MFD_HUGETLB) || (defined(HAVE_DECL_MFD_HUGETLB) && HAVE_DECL_MFD_HUGETLB)) +# define MFD_HUGETLB 4 +#endif #ifdef IN_MPERS @@ -16,6 +19,7 @@ static const struct xlat memfd_create_flags[] = { XLAT(MFD_CLOEXEC), XLAT(MFD_ALLOW_SEALING), + XLAT(MFD_HUGETLB), XLAT_END }; diff --git a/xlat/memfd_create_flags.in b/xlat/memfd_create_flags.in index 04a1b47a..9dd625fb 100644 --- a/xlat/memfd_create_flags.in +++ b/xlat/memfd_create_flags.in @@ -1,2 +1,3 @@ MFD_CLOEXEC 1 MFD_ALLOW_SEALING 2 +MFD_HUGETLB 4 diff --git a/xlat/multicast_router_types.h b/xlat/multicast_router_types.h new file mode 100644 index 00000000..8c68b2f0 --- /dev/null +++ b/xlat/multicast_router_types.h @@ -0,0 +1,30 @@ +/* Generated by ./xlat/gen.sh from ./xlat/multicast_router_types.in; do not edit. */ +#if !(defined(MDB_RTR_TYPE_DISABLED) || (defined(HAVE_DECL_MDB_RTR_TYPE_DISABLED) && HAVE_DECL_MDB_RTR_TYPE_DISABLED)) +# define MDB_RTR_TYPE_DISABLED 0 +#endif +#if !(defined(MDB_RTR_TYPE_TEMP_QUERY) || (defined(HAVE_DECL_MDB_RTR_TYPE_TEMP_QUERY) && HAVE_DECL_MDB_RTR_TYPE_TEMP_QUERY)) +# define MDB_RTR_TYPE_TEMP_QUERY 1 +#endif +#if !(defined(MDB_RTR_TYPE_PERM) || (defined(HAVE_DECL_MDB_RTR_TYPE_PERM) && HAVE_DECL_MDB_RTR_TYPE_PERM)) +# define MDB_RTR_TYPE_PERM 2 +#endif +#if !(defined(MDB_RTR_TYPE_TEMP) || (defined(HAVE_DECL_MDB_RTR_TYPE_TEMP) && HAVE_DECL_MDB_RTR_TYPE_TEMP)) +# define MDB_RTR_TYPE_TEMP 3 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat multicast_router_types in mpers mode + +#else + +static +const struct xlat multicast_router_types[] = { + XLAT(MDB_RTR_TYPE_DISABLED), + XLAT(MDB_RTR_TYPE_TEMP_QUERY), + XLAT(MDB_RTR_TYPE_PERM), + XLAT(MDB_RTR_TYPE_TEMP), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/multicast_router_types.in b/xlat/multicast_router_types.in new file mode 100644 index 00000000..6a5c03c3 --- /dev/null +++ b/xlat/multicast_router_types.in @@ -0,0 +1,4 @@ +MDB_RTR_TYPE_DISABLED 0 +MDB_RTR_TYPE_TEMP_QUERY 1 +MDB_RTR_TYPE_PERM 2 +MDB_RTR_TYPE_TEMP 3 diff --git a/xlat/netlink_delete_flags.h b/xlat/netlink_delete_flags.h new file mode 100644 index 00000000..a40c7df5 --- /dev/null +++ b/xlat/netlink_delete_flags.h @@ -0,0 +1,17 @@ +/* Generated by ./xlat/gen.sh from ./xlat/netlink_delete_flags.in; do not edit. */ + +#ifdef IN_MPERS + +# error static const struct xlat netlink_delete_flags in mpers mode + +#else + +static +const struct xlat netlink_delete_flags[] = { +#if defined(NLM_F_NONREC) || (defined(HAVE_DECL_NLM_F_NONREC) && HAVE_DECL_NLM_F_NONREC) + XLAT(NLM_F_NONREC), +#endif + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/netlink_delete_flags.in b/xlat/netlink_delete_flags.in new file mode 100644 index 00000000..01af41db --- /dev/null +++ b/xlat/netlink_delete_flags.in @@ -0,0 +1 @@ +NLM_F_NONREC diff --git a/xlat/nf_acct_msg_types.h b/xlat/nf_acct_msg_types.h new file mode 100644 index 00000000..d20681a6 --- /dev/null +++ b/xlat/nf_acct_msg_types.h @@ -0,0 +1,34 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_acct_msg_types.in; do not edit. */ +#if !(defined(NFNL_MSG_ACCT_NEW) || (defined(HAVE_DECL_NFNL_MSG_ACCT_NEW) && HAVE_DECL_NFNL_MSG_ACCT_NEW)) +# define NFNL_MSG_ACCT_NEW 0 +#endif +#if !(defined(NFNL_MSG_ACCT_GET) || (defined(HAVE_DECL_NFNL_MSG_ACCT_GET) && HAVE_DECL_NFNL_MSG_ACCT_GET)) +# define NFNL_MSG_ACCT_GET 1 +#endif +#if !(defined(NFNL_MSG_ACCT_GET_CTRZERO) || (defined(HAVE_DECL_NFNL_MSG_ACCT_GET_CTRZERO) && HAVE_DECL_NFNL_MSG_ACCT_GET_CTRZERO)) +# define NFNL_MSG_ACCT_GET_CTRZERO 2 +#endif +#if !(defined(NFNL_MSG_ACCT_DEL) || (defined(HAVE_DECL_NFNL_MSG_ACCT_DEL) && HAVE_DECL_NFNL_MSG_ACCT_DEL)) +# define NFNL_MSG_ACCT_DEL 3 +#endif +#if !(defined(NFNL_MSG_ACCT_OVERQUOTA) || (defined(HAVE_DECL_NFNL_MSG_ACCT_OVERQUOTA) && HAVE_DECL_NFNL_MSG_ACCT_OVERQUOTA)) +# define NFNL_MSG_ACCT_OVERQUOTA 4 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_acct_msg_types in mpers mode + +#else + +static +const struct xlat nf_acct_msg_types[] = { + XLAT(NFNL_MSG_ACCT_NEW), + XLAT(NFNL_MSG_ACCT_GET), + XLAT(NFNL_MSG_ACCT_GET_CTRZERO), + XLAT(NFNL_MSG_ACCT_DEL), + XLAT(NFNL_MSG_ACCT_OVERQUOTA), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_acct_msg_types.in b/xlat/nf_acct_msg_types.in new file mode 100644 index 00000000..3384ee0d --- /dev/null +++ b/xlat/nf_acct_msg_types.in @@ -0,0 +1,5 @@ +NFNL_MSG_ACCT_NEW 0 +NFNL_MSG_ACCT_GET 1 +NFNL_MSG_ACCT_GET_CTRZERO 2 +NFNL_MSG_ACCT_DEL 3 +NFNL_MSG_ACCT_OVERQUOTA 4 diff --git a/xlat/nf_cthelper_msg_types.h b/xlat/nf_cthelper_msg_types.h new file mode 100644 index 00000000..3b3ee1bf --- /dev/null +++ b/xlat/nf_cthelper_msg_types.h @@ -0,0 +1,26 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_cthelper_msg_types.in; do not edit. */ +#if !(defined(NFNL_MSG_CTHELPER_NEW) || (defined(HAVE_DECL_NFNL_MSG_CTHELPER_NEW) && HAVE_DECL_NFNL_MSG_CTHELPER_NEW)) +# define NFNL_MSG_CTHELPER_NEW 0 +#endif +#if !(defined(NFNL_MSG_CTHELPER_GET) || (defined(HAVE_DECL_NFNL_MSG_CTHELPER_GET) && HAVE_DECL_NFNL_MSG_CTHELPER_GET)) +# define NFNL_MSG_CTHELPER_GET 1 +#endif +#if !(defined(NFNL_MSG_CTHELPER_DEL) || (defined(HAVE_DECL_NFNL_MSG_CTHELPER_DEL) && HAVE_DECL_NFNL_MSG_CTHELPER_DEL)) +# define NFNL_MSG_CTHELPER_DEL 2 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_cthelper_msg_types in mpers mode + +#else + +static +const struct xlat nf_cthelper_msg_types[] = { + XLAT(NFNL_MSG_CTHELPER_NEW), + XLAT(NFNL_MSG_CTHELPER_GET), + XLAT(NFNL_MSG_CTHELPER_DEL), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_cthelper_msg_types.in b/xlat/nf_cthelper_msg_types.in new file mode 100644 index 00000000..bbee697a --- /dev/null +++ b/xlat/nf_cthelper_msg_types.in @@ -0,0 +1,3 @@ +NFNL_MSG_CTHELPER_NEW 0 +NFNL_MSG_CTHELPER_GET 1 +NFNL_MSG_CTHELPER_DEL 2 diff --git a/xlat/nf_ctnetlink_exp_msg_types.h b/xlat/nf_ctnetlink_exp_msg_types.h new file mode 100644 index 00000000..4988dd37 --- /dev/null +++ b/xlat/nf_ctnetlink_exp_msg_types.h @@ -0,0 +1,30 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_ctnetlink_exp_msg_types.in; do not edit. */ +#if !(defined(IPCTNL_MSG_EXP_NEW) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_NEW) && HAVE_DECL_IPCTNL_MSG_EXP_NEW)) +# define IPCTNL_MSG_EXP_NEW 0 +#endif +#if !(defined(IPCTNL_MSG_EXP_GET) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_GET) && HAVE_DECL_IPCTNL_MSG_EXP_GET)) +# define IPCTNL_MSG_EXP_GET 1 +#endif +#if !(defined(IPCTNL_MSG_EXP_DELETE) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_DELETE) && HAVE_DECL_IPCTNL_MSG_EXP_DELETE)) +# define IPCTNL_MSG_EXP_DELETE 2 +#endif +#if !(defined(IPCTNL_MSG_EXP_GET_STATS_CPU) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_GET_STATS_CPU) && HAVE_DECL_IPCTNL_MSG_EXP_GET_STATS_CPU)) +# define IPCTNL_MSG_EXP_GET_STATS_CPU 3 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_ctnetlink_exp_msg_types in mpers mode + +#else + +static +const struct xlat nf_ctnetlink_exp_msg_types[] = { + XLAT(IPCTNL_MSG_EXP_NEW), + XLAT(IPCTNL_MSG_EXP_GET), + XLAT(IPCTNL_MSG_EXP_DELETE), + XLAT(IPCTNL_MSG_EXP_GET_STATS_CPU), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_ctnetlink_exp_msg_types.in b/xlat/nf_ctnetlink_exp_msg_types.in new file mode 100644 index 00000000..8236e066 --- /dev/null +++ b/xlat/nf_ctnetlink_exp_msg_types.in @@ -0,0 +1,4 @@ +IPCTNL_MSG_EXP_NEW 0 +IPCTNL_MSG_EXP_GET 1 +IPCTNL_MSG_EXP_DELETE 2 +IPCTNL_MSG_EXP_GET_STATS_CPU 3 diff --git a/xlat/nf_ctnetlink_msg_types.h b/xlat/nf_ctnetlink_msg_types.h new file mode 100644 index 00000000..8b61e44b --- /dev/null +++ b/xlat/nf_ctnetlink_msg_types.h @@ -0,0 +1,46 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_ctnetlink_msg_types.in; do not edit. */ +#if !(defined(IPCTNL_MSG_CT_NEW) || (defined(HAVE_DECL_IPCTNL_MSG_CT_NEW) && HAVE_DECL_IPCTNL_MSG_CT_NEW)) +# define IPCTNL_MSG_CT_NEW 0 +#endif +#if !(defined(IPCTNL_MSG_CT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET) && HAVE_DECL_IPCTNL_MSG_CT_GET)) +# define IPCTNL_MSG_CT_GET 1 +#endif +#if !(defined(IPCTNL_MSG_CT_DELETE) || (defined(HAVE_DECL_IPCTNL_MSG_CT_DELETE) && HAVE_DECL_IPCTNL_MSG_CT_DELETE)) +# define IPCTNL_MSG_CT_DELETE 2 +#endif +#if !(defined(IPCTNL_MSG_CT_GET_CTRZERO) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_CTRZERO) && HAVE_DECL_IPCTNL_MSG_CT_GET_CTRZERO)) +# define IPCTNL_MSG_CT_GET_CTRZERO 3 +#endif +#if !(defined(IPCTNL_MSG_CT_GET_STATS_CPU) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_STATS_CPU) && HAVE_DECL_IPCTNL_MSG_CT_GET_STATS_CPU)) +# define IPCTNL_MSG_CT_GET_STATS_CPU 4 +#endif +#if !(defined(IPCTNL_MSG_CT_GET_STATS) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_STATS) && HAVE_DECL_IPCTNL_MSG_CT_GET_STATS)) +# define IPCTNL_MSG_CT_GET_STATS 5 +#endif +#if !(defined(IPCTNL_MSG_CT_GET_DYING) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_DYING) && HAVE_DECL_IPCTNL_MSG_CT_GET_DYING)) +# define IPCTNL_MSG_CT_GET_DYING 6 +#endif +#if !(defined(IPCTNL_MSG_CT_GET_UNCONFIRMED) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_UNCONFIRMED) && HAVE_DECL_IPCTNL_MSG_CT_GET_UNCONFIRMED)) +# define IPCTNL_MSG_CT_GET_UNCONFIRMED 7 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_ctnetlink_msg_types in mpers mode + +#else + +static +const struct xlat nf_ctnetlink_msg_types[] = { + XLAT(IPCTNL_MSG_CT_NEW), + XLAT(IPCTNL_MSG_CT_GET), + XLAT(IPCTNL_MSG_CT_DELETE), + XLAT(IPCTNL_MSG_CT_GET_CTRZERO), + XLAT(IPCTNL_MSG_CT_GET_STATS_CPU), + XLAT(IPCTNL_MSG_CT_GET_STATS), + XLAT(IPCTNL_MSG_CT_GET_DYING), + XLAT(IPCTNL_MSG_CT_GET_UNCONFIRMED), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_ctnetlink_msg_types.in b/xlat/nf_ctnetlink_msg_types.in new file mode 100644 index 00000000..2dab1690 --- /dev/null +++ b/xlat/nf_ctnetlink_msg_types.in @@ -0,0 +1,8 @@ +IPCTNL_MSG_CT_NEW 0 +IPCTNL_MSG_CT_GET 1 +IPCTNL_MSG_CT_DELETE 2 +IPCTNL_MSG_CT_GET_CTRZERO 3 +IPCTNL_MSG_CT_GET_STATS_CPU 4 +IPCTNL_MSG_CT_GET_STATS 5 +IPCTNL_MSG_CT_GET_DYING 6 +IPCTNL_MSG_CT_GET_UNCONFIRMED 7 diff --git a/xlat/nf_cttimeout_msg_types.h b/xlat/nf_cttimeout_msg_types.h new file mode 100644 index 00000000..9c7b5513 --- /dev/null +++ b/xlat/nf_cttimeout_msg_types.h @@ -0,0 +1,34 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_cttimeout_msg_types.in; do not edit. */ +#if !(defined(IPCTNL_MSG_TIMEOUT_NEW) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_NEW) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_NEW)) +# define IPCTNL_MSG_TIMEOUT_NEW 0 +#endif +#if !(defined(IPCTNL_MSG_TIMEOUT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_GET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_GET)) +# define IPCTNL_MSG_TIMEOUT_GET 1 +#endif +#if !(defined(IPCTNL_MSG_TIMEOUT_DELETE) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DELETE) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DELETE)) +# define IPCTNL_MSG_TIMEOUT_DELETE 2 +#endif +#if !(defined(IPCTNL_MSG_TIMEOUT_DEFAULT_SET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_SET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_SET)) +# define IPCTNL_MSG_TIMEOUT_DEFAULT_SET 3 +#endif +#if !(defined(IPCTNL_MSG_TIMEOUT_DEFAULT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_GET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_GET)) +# define IPCTNL_MSG_TIMEOUT_DEFAULT_GET 4 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_cttimeout_msg_types in mpers mode + +#else + +static +const struct xlat nf_cttimeout_msg_types[] = { + XLAT(IPCTNL_MSG_TIMEOUT_NEW), + XLAT(IPCTNL_MSG_TIMEOUT_GET), + XLAT(IPCTNL_MSG_TIMEOUT_DELETE), + XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_SET), + XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_GET), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_cttimeout_msg_types.in b/xlat/nf_cttimeout_msg_types.in new file mode 100644 index 00000000..bf6c5293 --- /dev/null +++ b/xlat/nf_cttimeout_msg_types.in @@ -0,0 +1,5 @@ +IPCTNL_MSG_TIMEOUT_NEW 0 +IPCTNL_MSG_TIMEOUT_GET 1 +IPCTNL_MSG_TIMEOUT_DELETE 2 +IPCTNL_MSG_TIMEOUT_DEFAULT_SET 3 +IPCTNL_MSG_TIMEOUT_DEFAULT_GET 4 diff --git a/xlat/nf_ipset_msg_types.h b/xlat/nf_ipset_msg_types.h new file mode 100644 index 00000000..b6b32bb8 --- /dev/null +++ b/xlat/nf_ipset_msg_types.h @@ -0,0 +1,92 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_ipset_msg_types.in; do not edit. */ +#if !(defined(IPSET_CMD_NONE) || (defined(HAVE_DECL_IPSET_CMD_NONE) && HAVE_DECL_IPSET_CMD_NONE)) +# define IPSET_CMD_NONE 0 +#endif +#if !(defined(IPSET_CMD_PROTOCOL) || (defined(HAVE_DECL_IPSET_CMD_PROTOCOL) && HAVE_DECL_IPSET_CMD_PROTOCOL)) +# define IPSET_CMD_PROTOCOL 1 +#endif +#if !(defined(IPSET_CMD_CREATE) || (defined(HAVE_DECL_IPSET_CMD_CREATE) && HAVE_DECL_IPSET_CMD_CREATE)) +# define IPSET_CMD_CREATE 2 +#endif +#if !(defined(IPSET_CMD_DESTROY) || (defined(HAVE_DECL_IPSET_CMD_DESTROY) && HAVE_DECL_IPSET_CMD_DESTROY)) +# define IPSET_CMD_DESTROY 3 +#endif +#if !(defined(IPSET_CMD_FLUSH) || (defined(HAVE_DECL_IPSET_CMD_FLUSH) && HAVE_DECL_IPSET_CMD_FLUSH)) +# define IPSET_CMD_FLUSH 4 +#endif +#if !(defined(IPSET_CMD_RENAME) || (defined(HAVE_DECL_IPSET_CMD_RENAME) && HAVE_DECL_IPSET_CMD_RENAME)) +# define IPSET_CMD_RENAME 5 +#endif +#if !(defined(IPSET_CMD_SWAP) || (defined(HAVE_DECL_IPSET_CMD_SWAP) && HAVE_DECL_IPSET_CMD_SWAP)) +# define IPSET_CMD_SWAP 6 +#endif +#if !(defined(IPSET_CMD_LIST) || (defined(HAVE_DECL_IPSET_CMD_LIST) && HAVE_DECL_IPSET_CMD_LIST)) +# define IPSET_CMD_LIST 7 +#endif +#if !(defined(IPSET_CMD_SAVE) || (defined(HAVE_DECL_IPSET_CMD_SAVE) && HAVE_DECL_IPSET_CMD_SAVE)) +# define IPSET_CMD_SAVE 8 +#endif +#if !(defined(IPSET_CMD_ADD) || (defined(HAVE_DECL_IPSET_CMD_ADD) && HAVE_DECL_IPSET_CMD_ADD)) +# define IPSET_CMD_ADD 9 +#endif +#if !(defined(IPSET_CMD_DEL) || (defined(HAVE_DECL_IPSET_CMD_DEL) && HAVE_DECL_IPSET_CMD_DEL)) +# define IPSET_CMD_DEL 10 +#endif +#if !(defined(IPSET_CMD_TEST) || (defined(HAVE_DECL_IPSET_CMD_TEST) && HAVE_DECL_IPSET_CMD_TEST)) +# define IPSET_CMD_TEST 11 +#endif +#if !(defined(IPSET_CMD_HEADER) || (defined(HAVE_DECL_IPSET_CMD_HEADER) && HAVE_DECL_IPSET_CMD_HEADER)) +# define IPSET_CMD_HEADER 12 +#endif +#if !(defined(IPSET_CMD_TYPE) || (defined(HAVE_DECL_IPSET_CMD_TYPE) && HAVE_DECL_IPSET_CMD_TYPE)) +# define IPSET_CMD_TYPE 13 +#endif +#if !(defined(IPSET_CMD_RESTORE) || (defined(HAVE_DECL_IPSET_CMD_RESTORE) && HAVE_DECL_IPSET_CMD_RESTORE)) +# define IPSET_CMD_RESTORE 14 +#endif +#if !(defined(IPSET_CMD_HELP) || (defined(HAVE_DECL_IPSET_CMD_HELP) && HAVE_DECL_IPSET_CMD_HELP)) +# define IPSET_CMD_HELP 15 +#endif +#if !(defined(IPSET_CMD_VERSION) || (defined(HAVE_DECL_IPSET_CMD_VERSION) && HAVE_DECL_IPSET_CMD_VERSION)) +# define IPSET_CMD_VERSION 16 +#endif +#if !(defined(IPSET_CMD_QUIT) || (defined(HAVE_DECL_IPSET_CMD_QUIT) && HAVE_DECL_IPSET_CMD_QUIT)) +# define IPSET_CMD_QUIT 17 +#endif +#if !(defined(IPSET_CMD_COMMIT) || (defined(HAVE_DECL_IPSET_CMD_COMMIT) && HAVE_DECL_IPSET_CMD_COMMIT)) +# define IPSET_CMD_COMMIT 18 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_ipset_msg_types in mpers mode + +#else + +static +const struct xlat nf_ipset_msg_types[] = { + XLAT(IPSET_CMD_NONE), + XLAT(IPSET_CMD_PROTOCOL), + XLAT(IPSET_CMD_CREATE), + XLAT(IPSET_CMD_DESTROY), + XLAT(IPSET_CMD_FLUSH), + XLAT(IPSET_CMD_RENAME), + XLAT(IPSET_CMD_SWAP), + XLAT(IPSET_CMD_LIST), + XLAT(IPSET_CMD_SAVE), + XLAT(IPSET_CMD_ADD), + XLAT(IPSET_CMD_DEL), + XLAT(IPSET_CMD_TEST), + XLAT(IPSET_CMD_HEADER), + XLAT(IPSET_CMD_TYPE), + + XLAT(IPSET_CMD_RESTORE), + XLAT(IPSET_CMD_HELP), + XLAT(IPSET_CMD_VERSION), + XLAT(IPSET_CMD_QUIT), + + XLAT(IPSET_CMD_COMMIT), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_ipset_msg_types.in b/xlat/nf_ipset_msg_types.in new file mode 100644 index 00000000..a61d9064 --- /dev/null +++ b/xlat/nf_ipset_msg_types.in @@ -0,0 +1,21 @@ +IPSET_CMD_NONE 0 +IPSET_CMD_PROTOCOL 1 +IPSET_CMD_CREATE 2 +IPSET_CMD_DESTROY 3 +IPSET_CMD_FLUSH 4 +IPSET_CMD_RENAME 5 +IPSET_CMD_SWAP 6 +IPSET_CMD_LIST 7 +IPSET_CMD_SAVE 8 +IPSET_CMD_ADD 9 +IPSET_CMD_DEL 10 +IPSET_CMD_TEST 11 +IPSET_CMD_HEADER 12 +IPSET_CMD_TYPE 13 + +IPSET_CMD_RESTORE 14 +IPSET_CMD_HELP 15 +IPSET_CMD_VERSION 16 +IPSET_CMD_QUIT 17 + +IPSET_CMD_COMMIT 18 diff --git a/xlat/nf_nft_compat_msg_types.h b/xlat/nf_nft_compat_msg_types.h new file mode 100644 index 00000000..11346783 --- /dev/null +++ b/xlat/nf_nft_compat_msg_types.h @@ -0,0 +1,18 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_nft_compat_msg_types.in; do not edit. */ +#if !(defined(NFNL_MSG_COMPAT_GET) || (defined(HAVE_DECL_NFNL_MSG_COMPAT_GET) && HAVE_DECL_NFNL_MSG_COMPAT_GET)) +# define NFNL_MSG_COMPAT_GET 0 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_nft_compat_msg_types in mpers mode + +#else + +static +const struct xlat nf_nft_compat_msg_types[] = { + XLAT(NFNL_MSG_COMPAT_GET), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_nft_compat_msg_types.in b/xlat/nf_nft_compat_msg_types.in new file mode 100644 index 00000000..e2f7da1c --- /dev/null +++ b/xlat/nf_nft_compat_msg_types.in @@ -0,0 +1 @@ +NFNL_MSG_COMPAT_GET 0 diff --git a/xlat/nf_nftables_msg_types.h b/xlat/nf_nftables_msg_types.h new file mode 100644 index 00000000..8a1a6def --- /dev/null +++ b/xlat/nf_nftables_msg_types.h @@ -0,0 +1,102 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_nftables_msg_types.in; do not edit. */ +#if !(defined(NFT_MSG_NEWTABLE) || (defined(HAVE_DECL_NFT_MSG_NEWTABLE) && HAVE_DECL_NFT_MSG_NEWTABLE)) +# define NFT_MSG_NEWTABLE 0 +#endif +#if !(defined(NFT_MSG_GETTABLE) || (defined(HAVE_DECL_NFT_MSG_GETTABLE) && HAVE_DECL_NFT_MSG_GETTABLE)) +# define NFT_MSG_GETTABLE 1 +#endif +#if !(defined(NFT_MSG_DELTABLE) || (defined(HAVE_DECL_NFT_MSG_DELTABLE) && HAVE_DECL_NFT_MSG_DELTABLE)) +# define NFT_MSG_DELTABLE 2 +#endif +#if !(defined(NFT_MSG_NEWCHAIN) || (defined(HAVE_DECL_NFT_MSG_NEWCHAIN) && HAVE_DECL_NFT_MSG_NEWCHAIN)) +# define NFT_MSG_NEWCHAIN 3 +#endif +#if !(defined(NFT_MSG_GETCHAIN) || (defined(HAVE_DECL_NFT_MSG_GETCHAIN) && HAVE_DECL_NFT_MSG_GETCHAIN)) +# define NFT_MSG_GETCHAIN 4 +#endif +#if !(defined(NFT_MSG_DELCHAIN) || (defined(HAVE_DECL_NFT_MSG_DELCHAIN) && HAVE_DECL_NFT_MSG_DELCHAIN)) +# define NFT_MSG_DELCHAIN 5 +#endif +#if !(defined(NFT_MSG_NEWRULE) || (defined(HAVE_DECL_NFT_MSG_NEWRULE) && HAVE_DECL_NFT_MSG_NEWRULE)) +# define NFT_MSG_NEWRULE 6 +#endif +#if !(defined(NFT_MSG_GETRULE) || (defined(HAVE_DECL_NFT_MSG_GETRULE) && HAVE_DECL_NFT_MSG_GETRULE)) +# define NFT_MSG_GETRULE 7 +#endif +#if !(defined(NFT_MSG_DELRULE) || (defined(HAVE_DECL_NFT_MSG_DELRULE) && HAVE_DECL_NFT_MSG_DELRULE)) +# define NFT_MSG_DELRULE 8 +#endif +#if !(defined(NFT_MSG_NEWSET) || (defined(HAVE_DECL_NFT_MSG_NEWSET) && HAVE_DECL_NFT_MSG_NEWSET)) +# define NFT_MSG_NEWSET 9 +#endif +#if !(defined(NFT_MSG_GETSET) || (defined(HAVE_DECL_NFT_MSG_GETSET) && HAVE_DECL_NFT_MSG_GETSET)) +# define NFT_MSG_GETSET 10 +#endif +#if !(defined(NFT_MSG_DELSET) || (defined(HAVE_DECL_NFT_MSG_DELSET) && HAVE_DECL_NFT_MSG_DELSET)) +# define NFT_MSG_DELSET 11 +#endif +#if !(defined(NFT_MSG_NEWSETELEM) || (defined(HAVE_DECL_NFT_MSG_NEWSETELEM) && HAVE_DECL_NFT_MSG_NEWSETELEM)) +# define NFT_MSG_NEWSETELEM 12 +#endif +#if !(defined(NFT_MSG_GETSETELEM) || (defined(HAVE_DECL_NFT_MSG_GETSETELEM) && HAVE_DECL_NFT_MSG_GETSETELEM)) +# define NFT_MSG_GETSETELEM 13 +#endif +#if !(defined(NFT_MSG_DELSETELEM) || (defined(HAVE_DECL_NFT_MSG_DELSETELEM) && HAVE_DECL_NFT_MSG_DELSETELEM)) +# define NFT_MSG_DELSETELEM 14 +#endif +#if !(defined(NFT_MSG_NEWGEN) || (defined(HAVE_DECL_NFT_MSG_NEWGEN) && HAVE_DECL_NFT_MSG_NEWGEN)) +# define NFT_MSG_NEWGEN 15 +#endif +#if !(defined(NFT_MSG_GETGEN) || (defined(HAVE_DECL_NFT_MSG_GETGEN) && HAVE_DECL_NFT_MSG_GETGEN)) +# define NFT_MSG_GETGEN 16 +#endif +#if !(defined(NFT_MSG_TRACE) || (defined(HAVE_DECL_NFT_MSG_TRACE) && HAVE_DECL_NFT_MSG_TRACE)) +# define NFT_MSG_TRACE 17 +#endif +#if !(defined(NFT_MSG_NEWOBJ) || (defined(HAVE_DECL_NFT_MSG_NEWOBJ) && HAVE_DECL_NFT_MSG_NEWOBJ)) +# define NFT_MSG_NEWOBJ 18 +#endif +#if !(defined(NFT_MSG_GETOBJ) || (defined(HAVE_DECL_NFT_MSG_GETOBJ) && HAVE_DECL_NFT_MSG_GETOBJ)) +# define NFT_MSG_GETOBJ 19 +#endif +#if !(defined(NFT_MSG_DELOBJ) || (defined(HAVE_DECL_NFT_MSG_DELOBJ) && HAVE_DECL_NFT_MSG_DELOBJ)) +# define NFT_MSG_DELOBJ 20 +#endif +#if !(defined(NFT_MSG_GETOBJ_RESET) || (defined(HAVE_DECL_NFT_MSG_GETOBJ_RESET) && HAVE_DECL_NFT_MSG_GETOBJ_RESET)) +# define NFT_MSG_GETOBJ_RESET 21 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_nftables_msg_types in mpers mode + +#else + +static +const struct xlat nf_nftables_msg_types[] = { + XLAT(NFT_MSG_NEWTABLE), + XLAT(NFT_MSG_GETTABLE), + XLAT(NFT_MSG_DELTABLE), + XLAT(NFT_MSG_NEWCHAIN), + XLAT(NFT_MSG_GETCHAIN), + XLAT(NFT_MSG_DELCHAIN), + XLAT(NFT_MSG_NEWRULE), + XLAT(NFT_MSG_GETRULE), + XLAT(NFT_MSG_DELRULE), + XLAT(NFT_MSG_NEWSET), + XLAT(NFT_MSG_GETSET), + XLAT(NFT_MSG_DELSET), + XLAT(NFT_MSG_NEWSETELEM), + XLAT(NFT_MSG_GETSETELEM), + XLAT(NFT_MSG_DELSETELEM), + XLAT(NFT_MSG_NEWGEN), + XLAT(NFT_MSG_GETGEN), + XLAT(NFT_MSG_TRACE), + XLAT(NFT_MSG_NEWOBJ), + XLAT(NFT_MSG_GETOBJ), + XLAT(NFT_MSG_DELOBJ), + XLAT(NFT_MSG_GETOBJ_RESET), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_nftables_msg_types.in b/xlat/nf_nftables_msg_types.in new file mode 100644 index 00000000..eb1e773d --- /dev/null +++ b/xlat/nf_nftables_msg_types.in @@ -0,0 +1,22 @@ +NFT_MSG_NEWTABLE 0 +NFT_MSG_GETTABLE 1 +NFT_MSG_DELTABLE 2 +NFT_MSG_NEWCHAIN 3 +NFT_MSG_GETCHAIN 4 +NFT_MSG_DELCHAIN 5 +NFT_MSG_NEWRULE 6 +NFT_MSG_GETRULE 7 +NFT_MSG_DELRULE 8 +NFT_MSG_NEWSET 9 +NFT_MSG_GETSET 10 +NFT_MSG_DELSET 11 +NFT_MSG_NEWSETELEM 12 +NFT_MSG_GETSETELEM 13 +NFT_MSG_DELSETELEM 14 +NFT_MSG_NEWGEN 15 +NFT_MSG_GETGEN 16 +NFT_MSG_TRACE 17 +NFT_MSG_NEWOBJ 18 +NFT_MSG_GETOBJ 19 +NFT_MSG_DELOBJ 20 +NFT_MSG_GETOBJ_RESET 21 diff --git a/xlat/nf_osf_msg_types.h b/xlat/nf_osf_msg_types.h new file mode 100644 index 00000000..f5661efa --- /dev/null +++ b/xlat/nf_osf_msg_types.h @@ -0,0 +1,22 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_osf_msg_types.in; do not edit. */ +#if !(defined(OSF_MSG_ADD) || (defined(HAVE_DECL_OSF_MSG_ADD) && HAVE_DECL_OSF_MSG_ADD)) +# define OSF_MSG_ADD 0 +#endif +#if !(defined(OSF_MSG_REMOVE) || (defined(HAVE_DECL_OSF_MSG_REMOVE) && HAVE_DECL_OSF_MSG_REMOVE)) +# define OSF_MSG_REMOVE 1 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_osf_msg_types in mpers mode + +#else + +static +const struct xlat nf_osf_msg_types[] = { + XLAT(OSF_MSG_ADD), + XLAT(OSF_MSG_REMOVE), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_osf_msg_types.in b/xlat/nf_osf_msg_types.in new file mode 100644 index 00000000..636c9323 --- /dev/null +++ b/xlat/nf_osf_msg_types.in @@ -0,0 +1,2 @@ +OSF_MSG_ADD 0 +OSF_MSG_REMOVE 1 diff --git a/xlat/nf_queue_msg_types.h b/xlat/nf_queue_msg_types.h new file mode 100644 index 00000000..7b4f4a43 --- /dev/null +++ b/xlat/nf_queue_msg_types.h @@ -0,0 +1,30 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_queue_msg_types.in; do not edit. */ +#if !(defined(NFQNL_MSG_PACKET) || (defined(HAVE_DECL_NFQNL_MSG_PACKET) && HAVE_DECL_NFQNL_MSG_PACKET)) +# define NFQNL_MSG_PACKET 0 +#endif +#if !(defined(NFQNL_MSG_VERDICT) || (defined(HAVE_DECL_NFQNL_MSG_VERDICT) && HAVE_DECL_NFQNL_MSG_VERDICT)) +# define NFQNL_MSG_VERDICT 1 +#endif +#if !(defined(NFQNL_MSG_CONFIG) || (defined(HAVE_DECL_NFQNL_MSG_CONFIG) && HAVE_DECL_NFQNL_MSG_CONFIG)) +# define NFQNL_MSG_CONFIG 2 +#endif +#if !(defined(NFQNL_MSG_VERDICT_BATCH) || (defined(HAVE_DECL_NFQNL_MSG_VERDICT_BATCH) && HAVE_DECL_NFQNL_MSG_VERDICT_BATCH)) +# define NFQNL_MSG_VERDICT_BATCH 3 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_queue_msg_types in mpers mode + +#else + +static +const struct xlat nf_queue_msg_types[] = { + XLAT(NFQNL_MSG_PACKET), + XLAT(NFQNL_MSG_VERDICT), + XLAT(NFQNL_MSG_CONFIG), + XLAT(NFQNL_MSG_VERDICT_BATCH), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_queue_msg_types.in b/xlat/nf_queue_msg_types.in new file mode 100644 index 00000000..65c7bdd9 --- /dev/null +++ b/xlat/nf_queue_msg_types.in @@ -0,0 +1,4 @@ +NFQNL_MSG_PACKET 0 +NFQNL_MSG_VERDICT 1 +NFQNL_MSG_CONFIG 2 +NFQNL_MSG_VERDICT_BATCH 3 diff --git a/xlat/nf_ulog_msg_types.h b/xlat/nf_ulog_msg_types.h new file mode 100644 index 00000000..b0ab0513 --- /dev/null +++ b/xlat/nf_ulog_msg_types.h @@ -0,0 +1,22 @@ +/* Generated by ./xlat/gen.sh from ./xlat/nf_ulog_msg_types.in; do not edit. */ +#if !(defined(NFULNL_MSG_PACKET) || (defined(HAVE_DECL_NFULNL_MSG_PACKET) && HAVE_DECL_NFULNL_MSG_PACKET)) +# define NFULNL_MSG_PACKET 0 +#endif +#if !(defined(NFULNL_MSG_CONFIG) || (defined(HAVE_DECL_NFULNL_MSG_CONFIG) && HAVE_DECL_NFULNL_MSG_CONFIG)) +# define NFULNL_MSG_CONFIG 1 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat nf_ulog_msg_types in mpers mode + +#else + +static +const struct xlat nf_ulog_msg_types[] = { + XLAT(NFULNL_MSG_PACKET), + XLAT(NFULNL_MSG_CONFIG), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/nf_ulog_msg_types.in b/xlat/nf_ulog_msg_types.in new file mode 100644 index 00000000..13ff42f2 --- /dev/null +++ b/xlat/nf_ulog_msg_types.in @@ -0,0 +1,2 @@ +NFULNL_MSG_PACKET 0 +NFULNL_MSG_CONFIG 1 diff --git a/xlat/rtnl_mdba_mdb_attrs.h b/xlat/rtnl_mdba_mdb_attrs.h new file mode 100644 index 00000000..f714dbdf --- /dev/null +++ b/xlat/rtnl_mdba_mdb_attrs.h @@ -0,0 +1,22 @@ +/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_mdb_attrs.in; do not edit. */ +#if !(defined(MDBA_MDB_UNSPEC) || (defined(HAVE_DECL_MDBA_MDB_UNSPEC) && HAVE_DECL_MDBA_MDB_UNSPEC)) +# define MDBA_MDB_UNSPEC 0 +#endif +#if !(defined(MDBA_MDB_ENTRY) || (defined(HAVE_DECL_MDBA_MDB_ENTRY) && HAVE_DECL_MDBA_MDB_ENTRY)) +# define MDBA_MDB_ENTRY 1 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat rtnl_mdba_mdb_attrs in mpers mode + +#else + +static +const struct xlat rtnl_mdba_mdb_attrs[] = { + XLAT(MDBA_MDB_UNSPEC), + XLAT(MDBA_MDB_ENTRY), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/rtnl_mdba_mdb_attrs.in b/xlat/rtnl_mdba_mdb_attrs.in new file mode 100644 index 00000000..7ff5cce3 --- /dev/null +++ b/xlat/rtnl_mdba_mdb_attrs.in @@ -0,0 +1,2 @@ +MDBA_MDB_UNSPEC 0 +MDBA_MDB_ENTRY 1 diff --git a/xlat/rtnl_mdba_mdb_eattr_attrs.h b/xlat/rtnl_mdba_mdb_eattr_attrs.h new file mode 100644 index 00000000..ce3b3bcd --- /dev/null +++ b/xlat/rtnl_mdba_mdb_eattr_attrs.h @@ -0,0 +1,22 @@ +/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_mdb_eattr_attrs.in; do not edit. */ +#if !(defined(MDBA_MDB_EATTR_UNSPEC) || (defined(HAVE_DECL_MDBA_MDB_EATTR_UNSPEC) && HAVE_DECL_MDBA_MDB_EATTR_UNSPEC)) +# define MDBA_MDB_EATTR_UNSPEC 0 +#endif +#if !(defined(MDBA_MDB_EATTR_TIMER) || (defined(HAVE_DECL_MDBA_MDB_EATTR_TIMER) && HAVE_DECL_MDBA_MDB_EATTR_TIMER)) +# define MDBA_MDB_EATTR_TIMER 1 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat rtnl_mdba_mdb_eattr_attrs in mpers mode + +#else + +static +const struct xlat rtnl_mdba_mdb_eattr_attrs[] = { + XLAT(MDBA_MDB_EATTR_UNSPEC), + XLAT(MDBA_MDB_EATTR_TIMER), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/rtnl_mdba_mdb_eattr_attrs.in b/xlat/rtnl_mdba_mdb_eattr_attrs.in new file mode 100644 index 00000000..c7c1b7b3 --- /dev/null +++ b/xlat/rtnl_mdba_mdb_eattr_attrs.in @@ -0,0 +1,2 @@ +MDBA_MDB_EATTR_UNSPEC 0 +MDBA_MDB_EATTR_TIMER 1 diff --git a/xlat/rtnl_mdba_mdb_entry_attrs.h b/xlat/rtnl_mdba_mdb_entry_attrs.h new file mode 100644 index 00000000..198374a7 --- /dev/null +++ b/xlat/rtnl_mdba_mdb_entry_attrs.h @@ -0,0 +1,22 @@ +/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_mdb_entry_attrs.in; do not edit. */ +#if !(defined(MDBA_MDB_ENTRY_UNSPEC) || (defined(HAVE_DECL_MDBA_MDB_ENTRY_UNSPEC) && HAVE_DECL_MDBA_MDB_ENTRY_UNSPEC)) +# define MDBA_MDB_ENTRY_UNSPEC 0 +#endif +#if !(defined(MDBA_MDB_ENTRY_INFO) || (defined(HAVE_DECL_MDBA_MDB_ENTRY_INFO) && HAVE_DECL_MDBA_MDB_ENTRY_INFO)) +# define MDBA_MDB_ENTRY_INFO 1 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat rtnl_mdba_mdb_entry_attrs in mpers mode + +#else + +static +const struct xlat rtnl_mdba_mdb_entry_attrs[] = { + XLAT(MDBA_MDB_ENTRY_UNSPEC), + XLAT(MDBA_MDB_ENTRY_INFO), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/rtnl_mdba_mdb_entry_attrs.in b/xlat/rtnl_mdba_mdb_entry_attrs.in new file mode 100644 index 00000000..52b18d69 --- /dev/null +++ b/xlat/rtnl_mdba_mdb_entry_attrs.in @@ -0,0 +1,2 @@ +MDBA_MDB_ENTRY_UNSPEC 0 +MDBA_MDB_ENTRY_INFO 1 diff --git a/xlat/rtnl_mdba_router_attrs.h b/xlat/rtnl_mdba_router_attrs.h new file mode 100644 index 00000000..2efe5e39 --- /dev/null +++ b/xlat/rtnl_mdba_router_attrs.h @@ -0,0 +1,22 @@ +/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_router_attrs.in; do not edit. */ +#if !(defined(MDBA_ROUTER_UNSPEC) || (defined(HAVE_DECL_MDBA_ROUTER_UNSPEC) && HAVE_DECL_MDBA_ROUTER_UNSPEC)) +# define MDBA_ROUTER_UNSPEC 0 +#endif +#if !(defined(MDBA_ROUTER_PORT) || (defined(HAVE_DECL_MDBA_ROUTER_PORT) && HAVE_DECL_MDBA_ROUTER_PORT)) +# define MDBA_ROUTER_PORT 1 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat rtnl_mdba_router_attrs in mpers mode + +#else + +static +const struct xlat rtnl_mdba_router_attrs[] = { + XLAT(MDBA_ROUTER_UNSPEC), + XLAT(MDBA_ROUTER_PORT), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/rtnl_mdba_router_attrs.in b/xlat/rtnl_mdba_router_attrs.in new file mode 100644 index 00000000..21dfeaa3 --- /dev/null +++ b/xlat/rtnl_mdba_router_attrs.in @@ -0,0 +1,2 @@ +MDBA_ROUTER_UNSPEC 0 +MDBA_ROUTER_PORT 1 diff --git a/xlat/rtnl_mdba_router_pattr_attrs.h b/xlat/rtnl_mdba_router_pattr_attrs.h new file mode 100644 index 00000000..b364d31d --- /dev/null +++ b/xlat/rtnl_mdba_router_pattr_attrs.h @@ -0,0 +1,26 @@ +/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_router_pattr_attrs.in; do not edit. */ +#if !(defined(MDBA_ROUTER_PATTR_UNSPEC) || (defined(HAVE_DECL_MDBA_ROUTER_PATTR_UNSPEC) && HAVE_DECL_MDBA_ROUTER_PATTR_UNSPEC)) +# define MDBA_ROUTER_PATTR_UNSPEC 0 +#endif +#if !(defined(MDBA_ROUTER_PATTR_TIMER) || (defined(HAVE_DECL_MDBA_ROUTER_PATTR_TIMER) && HAVE_DECL_MDBA_ROUTER_PATTR_TIMER)) +# define MDBA_ROUTER_PATTR_TIMER 1 +#endif +#if !(defined(MDBA_ROUTER_PATTR_TYPE) || (defined(HAVE_DECL_MDBA_ROUTER_PATTR_TYPE) && HAVE_DECL_MDBA_ROUTER_PATTR_TYPE)) +# define MDBA_ROUTER_PATTR_TYPE 2 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat rtnl_mdba_router_pattr_attrs in mpers mode + +#else + +static +const struct xlat rtnl_mdba_router_pattr_attrs[] = { + XLAT(MDBA_ROUTER_PATTR_UNSPEC), + XLAT(MDBA_ROUTER_PATTR_TIMER), + XLAT(MDBA_ROUTER_PATTR_TYPE), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/rtnl_mdba_router_pattr_attrs.in b/xlat/rtnl_mdba_router_pattr_attrs.in new file mode 100644 index 00000000..901e4f2f --- /dev/null +++ b/xlat/rtnl_mdba_router_pattr_attrs.in @@ -0,0 +1,3 @@ +MDBA_ROUTER_PATTR_UNSPEC 0 +MDBA_ROUTER_PATTR_TIMER 1 +MDBA_ROUTER_PATTR_TYPE 2 diff --git a/xlat/rtnl_tca_stab_attrs.h b/xlat/rtnl_tca_stab_attrs.h new file mode 100644 index 00000000..8e01f14a --- /dev/null +++ b/xlat/rtnl_tca_stab_attrs.h @@ -0,0 +1,26 @@ +/* Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_stab_attrs.in; do not edit. */ +#if !(defined(TCA_STAB_UNSPEC) || (defined(HAVE_DECL_TCA_STAB_UNSPEC) && HAVE_DECL_TCA_STAB_UNSPEC)) +# define TCA_STAB_UNSPEC 0 +#endif +#if !(defined(TCA_STAB_BASE) || (defined(HAVE_DECL_TCA_STAB_BASE) && HAVE_DECL_TCA_STAB_BASE)) +# define TCA_STAB_BASE 1 +#endif +#if !(defined(TCA_STAB_DATA) || (defined(HAVE_DECL_TCA_STAB_DATA) && HAVE_DECL_TCA_STAB_DATA)) +# define TCA_STAB_DATA 2 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat rtnl_tca_stab_attrs in mpers mode + +#else + +static +const struct xlat rtnl_tca_stab_attrs[] = { + XLAT(TCA_STAB_UNSPEC), + XLAT(TCA_STAB_BASE), + XLAT(TCA_STAB_DATA), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/rtnl_tca_stab_attrs.in b/xlat/rtnl_tca_stab_attrs.in new file mode 100644 index 00000000..dd3d6efc --- /dev/null +++ b/xlat/rtnl_tca_stab_attrs.in @@ -0,0 +1,3 @@ +TCA_STAB_UNSPEC 0 +TCA_STAB_BASE 1 +TCA_STAB_DATA 2 diff --git a/xlat/rtnl_tca_stats_attrs.h b/xlat/rtnl_tca_stats_attrs.h new file mode 100644 index 00000000..87a7ee4d --- /dev/null +++ b/xlat/rtnl_tca_stats_attrs.h @@ -0,0 +1,42 @@ +/* Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_stats_attrs.in; do not edit. */ +#if !(defined(TCA_STATS_UNSPEC) || (defined(HAVE_DECL_TCA_STATS_UNSPEC) && HAVE_DECL_TCA_STATS_UNSPEC)) +# define TCA_STATS_UNSPEC 0 +#endif +#if !(defined(TCA_STATS_BASIC) || (defined(HAVE_DECL_TCA_STATS_BASIC) && HAVE_DECL_TCA_STATS_BASIC)) +# define TCA_STATS_BASIC 1 +#endif +#if !(defined(TCA_STATS_RATE_EST) || (defined(HAVE_DECL_TCA_STATS_RATE_EST) && HAVE_DECL_TCA_STATS_RATE_EST)) +# define TCA_STATS_RATE_EST 2 +#endif +#if !(defined(TCA_STATS_QUEUE) || (defined(HAVE_DECL_TCA_STATS_QUEUE) && HAVE_DECL_TCA_STATS_QUEUE)) +# define TCA_STATS_QUEUE 3 +#endif +#if !(defined(TCA_STATS_APP) || (defined(HAVE_DECL_TCA_STATS_APP) && HAVE_DECL_TCA_STATS_APP)) +# define TCA_STATS_APP 4 +#endif +#if !(defined(TCA_STATS_RATE_EST64) || (defined(HAVE_DECL_TCA_STATS_RATE_EST64) && HAVE_DECL_TCA_STATS_RATE_EST64)) +# define TCA_STATS_RATE_EST64 5 +#endif +#if !(defined(TCA_STATS_PAD) || (defined(HAVE_DECL_TCA_STATS_PAD) && HAVE_DECL_TCA_STATS_PAD)) +# define TCA_STATS_PAD 6 +#endif + +#ifdef IN_MPERS + +# error static const struct xlat rtnl_tca_stats_attrs in mpers mode + +#else + +static +const struct xlat rtnl_tca_stats_attrs[] = { + XLAT(TCA_STATS_UNSPEC), + XLAT(TCA_STATS_BASIC), + XLAT(TCA_STATS_RATE_EST), + XLAT(TCA_STATS_QUEUE), + XLAT(TCA_STATS_APP), + XLAT(TCA_STATS_RATE_EST64), + XLAT(TCA_STATS_PAD), + XLAT_END +}; + +#endif /* !IN_MPERS */ diff --git a/xlat/rtnl_tca_stats_attrs.in b/xlat/rtnl_tca_stats_attrs.in new file mode 100644 index 00000000..807e7fe6 --- /dev/null +++ b/xlat/rtnl_tca_stats_attrs.in @@ -0,0 +1,7 @@ +TCA_STATS_UNSPEC 0 +TCA_STATS_BASIC 1 +TCA_STATS_RATE_EST 2 +TCA_STATS_QUEUE 3 +TCA_STATS_APP 4 +TCA_STATS_RATE_EST64 5 +TCA_STATS_PAD 6 diff --git a/xlat/seccomp_filter_flags.h b/xlat/seccomp_filter_flags.h index 5c0decd5..ad1bede2 100644 --- a/xlat/seccomp_filter_flags.h +++ b/xlat/seccomp_filter_flags.h @@ -2,6 +2,9 @@ #if !(defined(SECCOMP_FILTER_FLAG_TSYNC) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC) && HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC)) # define SECCOMP_FILTER_FLAG_TSYNC 1 #endif +#if !(defined(SECCOMP_FILTER_FLAG_LOG) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_LOG) && HAVE_DECL_SECCOMP_FILTER_FLAG_LOG)) +# define SECCOMP_FILTER_FLAG_LOG 2 +#endif #ifdef IN_MPERS @@ -12,6 +15,7 @@ static const struct xlat seccomp_filter_flags[] = { XLAT(SECCOMP_FILTER_FLAG_TSYNC), + XLAT(SECCOMP_FILTER_FLAG_LOG), XLAT_END }; diff --git a/xlat/seccomp_filter_flags.in b/xlat/seccomp_filter_flags.in index 83482d00..439f3813 100644 --- a/xlat/seccomp_filter_flags.in +++ b/xlat/seccomp_filter_flags.in @@ -1 +1,2 @@ SECCOMP_FILTER_FLAG_TSYNC 1 +SECCOMP_FILTER_FLAG_LOG 2 diff --git a/xlat/seccomp_ops.h b/xlat/seccomp_ops.h index 3fd0dc66..b6f0e2a3 100644 --- a/xlat/seccomp_ops.h +++ b/xlat/seccomp_ops.h @@ -5,6 +5,9 @@ #if !(defined(SECCOMP_SET_MODE_FILTER) || (defined(HAVE_DECL_SECCOMP_SET_MODE_FILTER) && HAVE_DECL_SECCOMP_SET_MODE_FILTER)) # define SECCOMP_SET_MODE_FILTER 1 #endif +#if !(defined(SECCOMP_GET_ACTION_AVAIL) || (defined(HAVE_DECL_SECCOMP_GET_ACTION_AVAIL) && HAVE_DECL_SECCOMP_GET_ACTION_AVAIL)) +# define SECCOMP_GET_ACTION_AVAIL 2 +#endif #ifdef IN_MPERS @@ -16,6 +19,7 @@ static const struct xlat seccomp_ops[] = { XLAT(SECCOMP_SET_MODE_STRICT), XLAT(SECCOMP_SET_MODE_FILTER), + XLAT(SECCOMP_GET_ACTION_AVAIL), XLAT_END }; diff --git a/xlat/seccomp_ops.in b/xlat/seccomp_ops.in index c3320af7..e2d3fef2 100644 --- a/xlat/seccomp_ops.in +++ b/xlat/seccomp_ops.in @@ -1,2 +1,3 @@ SECCOMP_SET_MODE_STRICT 0 SECCOMP_SET_MODE_FILTER 1 +SECCOMP_GET_ACTION_AVAIL 2 diff --git a/xlat/seccomp_ret_action.h b/xlat/seccomp_ret_action.h index 2d416099..79376411 100644 --- a/xlat/seccomp_ret_action.h +++ b/xlat/seccomp_ret_action.h @@ -1,28 +1,36 @@ /* Generated by ./xlat/gen.sh from ./xlat/seccomp_ret_action.in; do not edit. */ - -#ifdef IN_MPERS - -# error static const struct xlat seccomp_ret_action in mpers mode - -#else - -static -const struct xlat seccomp_ret_action[] = { -#if defined(SECCOMP_RET_KILL) || (defined(HAVE_DECL_SECCOMP_RET_KILL) && HAVE_DECL_SECCOMP_RET_KILL) - XLAT(SECCOMP_RET_KILL), +#if !(defined(SECCOMP_RET_KILL_PROCESS) || (defined(HAVE_DECL_SECCOMP_RET_KILL_PROCESS) && HAVE_DECL_SECCOMP_RET_KILL_PROCESS)) +# define SECCOMP_RET_KILL_PROCESS 0x80000000U #endif -#if defined(SECCOMP_RET_TRAP) || (defined(HAVE_DECL_SECCOMP_RET_TRAP) && HAVE_DECL_SECCOMP_RET_TRAP) - XLAT(SECCOMP_RET_TRAP), +#if !(defined(SECCOMP_RET_KILL_THREAD) || (defined(HAVE_DECL_SECCOMP_RET_KILL_THREAD) && HAVE_DECL_SECCOMP_RET_KILL_THREAD)) +# define SECCOMP_RET_KILL_THREAD 0 #endif -#if defined(SECCOMP_RET_ERRNO) || (defined(HAVE_DECL_SECCOMP_RET_ERRNO) && HAVE_DECL_SECCOMP_RET_ERRNO) - XLAT(SECCOMP_RET_ERRNO), +#if !(defined(SECCOMP_RET_TRAP) || (defined(HAVE_DECL_SECCOMP_RET_TRAP) && HAVE_DECL_SECCOMP_RET_TRAP)) +# define SECCOMP_RET_TRAP 0x00030000U #endif -#if defined(SECCOMP_RET_TRACE) || (defined(HAVE_DECL_SECCOMP_RET_TRACE) && HAVE_DECL_SECCOMP_RET_TRACE) - XLAT(SECCOMP_RET_TRACE), +#if !(defined(SECCOMP_RET_ERRNO) || (defined(HAVE_DECL_SECCOMP_RET_ERRNO) && HAVE_DECL_SECCOMP_RET_ERRNO)) +# define SECCOMP_RET_ERRNO 0x00050000U #endif -#if defined(SECCOMP_RET_ALLOW) || (defined(HAVE_DECL_SECCOMP_RET_ALLOW) && HAVE_DECL_SECCOMP_RET_ALLOW) - XLAT(SECCOMP_RET_ALLOW), +#if !(defined(SECCOMP_RET_TRACE) || (defined(HAVE_DECL_SECCOMP_RET_TRACE) && HAVE_DECL_SECCOMP_RET_TRACE)) +# define SECCOMP_RET_TRACE 0x7ff00000U #endif +#if !(defined(SECCOMP_RET_LOG) || (defined(HAVE_DECL_SECCOMP_RET_LOG) && HAVE_DECL_SECCOMP_RET_LOG)) +# define SECCOMP_RET_LOG 0x7ffc0000U +#endif +#if !(defined(SECCOMP_RET_ALLOW) || (defined(HAVE_DECL_SECCOMP_RET_ALLOW) && HAVE_DECL_SECCOMP_RET_ALLOW)) +# define SECCOMP_RET_ALLOW 0x7fff0000U +#endif + +#ifndef IN_MPERS + +const struct xlat seccomp_ret_action[] = { + XLAT(SECCOMP_RET_KILL_PROCESS), + XLAT(SECCOMP_RET_KILL_THREAD), + XLAT(SECCOMP_RET_TRAP), + XLAT(SECCOMP_RET_ERRNO), + XLAT(SECCOMP_RET_TRACE), + XLAT(SECCOMP_RET_LOG), + XLAT(SECCOMP_RET_ALLOW), XLAT_END }; diff --git a/xlat/seccomp_ret_action.in b/xlat/seccomp_ret_action.in index 6212dcb6..6253448a 100644 --- a/xlat/seccomp_ret_action.in +++ b/xlat/seccomp_ret_action.in @@ -1,5 +1,7 @@ -SECCOMP_RET_KILL -SECCOMP_RET_TRAP -SECCOMP_RET_ERRNO -SECCOMP_RET_TRACE -SECCOMP_RET_ALLOW +SECCOMP_RET_KILL_PROCESS 0x80000000U +SECCOMP_RET_KILL_THREAD 0 +SECCOMP_RET_TRAP 0x00030000U +SECCOMP_RET_ERRNO 0x00050000U +SECCOMP_RET_TRACE 0x7ff00000U +SECCOMP_RET_LOG 0x7ffc0000U +SECCOMP_RET_ALLOW 0x7fff0000U diff --git a/xlat/socketlayers.h b/xlat/socketlayers.h index 5e486c38..dc96902b 100644 --- a/xlat/socketlayers.h +++ b/xlat/socketlayers.h @@ -104,6 +104,9 @@ #if !(defined(SOL_KCM) || (defined(HAVE_DECL_SOL_KCM) && HAVE_DECL_SOL_KCM)) # define SOL_KCM 281 #endif +#if !(defined(SOL_TLS) || (defined(HAVE_DECL_SOL_TLS) && HAVE_DECL_SOL_TLS)) +# define SOL_TLS 282 +#endif #ifndef IN_MPERS @@ -143,6 +146,7 @@ const struct xlat socketlayers[] = { XLAT(SOL_ALG), XLAT(SOL_NFC), XLAT(SOL_KCM), + XLAT(SOL_TLS), XLAT_END }; diff --git a/xlat/socketlayers.in b/xlat/socketlayers.in index 7b0b86e3..dc80c588 100644 --- a/xlat/socketlayers.in +++ b/xlat/socketlayers.in @@ -33,3 +33,4 @@ SOL_CAIF 278 SOL_ALG 279 SOL_NFC 280 SOL_KCM 281 +SOL_TLS 282 diff --git a/xlat/sockoptions.h b/xlat/sockoptions.h index 20a7e6d8..6e991555 100644 --- a/xlat/sockoptions.h +++ b/xlat/sockoptions.h @@ -185,6 +185,9 @@ const struct xlat sockoptions[] = { #if defined(SO_PEERGROUPS) || (defined(HAVE_DECL_SO_PEERGROUPS) && HAVE_DECL_SO_PEERGROUPS) XLAT(SO_PEERGROUPS), #endif +#if defined(SO_ZEROCOPY) || (defined(HAVE_DECL_SO_ZEROCOPY) && HAVE_DECL_SO_ZEROCOPY) + XLAT(SO_ZEROCOPY), +#endif #if defined(SO_ALLRAW) || (defined(HAVE_DECL_SO_ALLRAW) && HAVE_DECL_SO_ALLRAW) XLAT(SO_ALLRAW), diff --git a/xlat/sockoptions.in b/xlat/sockoptions.in index 24717950..2c1195fd 100644 --- a/xlat/sockoptions.in +++ b/xlat/sockoptions.in @@ -57,6 +57,7 @@ SO_MEMINFO SO_INCOMING_NAPI_ID SO_COOKIE SO_PEERGROUPS +SO_ZEROCOPY SO_ALLRAW SO_ICS diff --git a/xlat/socktcpoptions.h b/xlat/socktcpoptions.h index 3bc6f53a..836f3e24 100644 --- a/xlat/socktcpoptions.h +++ b/xlat/socktcpoptions.h @@ -98,6 +98,12 @@ const struct xlat socktcpoptions[] = { #if defined(TCP_FASTOPEN_CONNECT) || (defined(HAVE_DECL_TCP_FASTOPEN_CONNECT) && HAVE_DECL_TCP_FASTOPEN_CONNECT) XLAT(TCP_FASTOPEN_CONNECT), #endif +#if defined(TCP_ULP) || (defined(HAVE_DECL_TCP_ULP) && HAVE_DECL_TCP_ULP) + XLAT(TCP_ULP), +#endif +#if defined(TCP_MD5SIG_EXT) || (defined(HAVE_DECL_TCP_MD5SIG_EXT) && HAVE_DECL_TCP_MD5SIG_EXT) + XLAT(TCP_MD5SIG_EXT), +#endif XLAT_END }; diff --git a/xlat/socktcpoptions.in b/xlat/socktcpoptions.in index 6de28f36..747b184c 100644 --- a/xlat/socktcpoptions.in +++ b/xlat/socktcpoptions.in @@ -28,3 +28,5 @@ TCP_SAVE_SYN TCP_SAVED_SYN TCP_REPAIR_WINDOW TCP_FASTOPEN_CONNECT +TCP_ULP +TCP_MD5SIG_EXT diff --git a/xlat/uffd_api_features.h b/xlat/uffd_api_features.h index 5c856f48..2ea3a9e8 100644 --- a/xlat/uffd_api_features.h +++ b/xlat/uffd_api_features.h @@ -29,8 +29,11 @@ const struct xlat uffd_api_features[] = { #if defined(UFFD_FEATURE_EVENT_UNMAP) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_UNMAP) && HAVE_DECL_UFFD_FEATURE_EVENT_UNMAP) XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_UNMAP), #endif -#if defined(UFFD_FEATURE_EVENT_EXIT) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_EXIT) && HAVE_DECL_UFFD_FEATURE_EVENT_EXIT) - XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_EXIT), +#if defined(UFFD_FEATURE_SIGBUS) || (defined(HAVE_DECL_UFFD_FEATURE_SIGBUS) && HAVE_DECL_UFFD_FEATURE_SIGBUS) + XLAT_TYPE(uint64_t, UFFD_FEATURE_SIGBUS), +#endif +#if defined(UFFD_FEATURE_THREAD_ID) || (defined(HAVE_DECL_UFFD_FEATURE_THREAD_ID) && HAVE_DECL_UFFD_FEATURE_THREAD_ID) + XLAT_TYPE(uint64_t, UFFD_FEATURE_THREAD_ID), #endif XLAT_END }; diff --git a/xlat/uffd_api_features.in b/xlat/uffd_api_features.in index 8b1ea974..b9a9a29d 100644 --- a/xlat/uffd_api_features.in +++ b/xlat/uffd_api_features.in @@ -6,4 +6,5 @@ UFFD_FEATURE_EVENT_REMOVE UFFD_FEATURE_MISSING_HUGETLBFS UFFD_FEATURE_MISSING_SHMEM UFFD_FEATURE_EVENT_UNMAP -UFFD_FEATURE_EVENT_EXIT +UFFD_FEATURE_SIGBUS +UFFD_FEATURE_THREAD_ID |