]> granicus.if.org Git - strace/log
strace
7 years agotests: move DEFAULT_STRLEN macro to tests.h
Dmitry V. Levin [Mon, 3 Jul 2017 15:14:54 +0000 (15:14 +0000)]
tests: move DEFAULT_STRLEN macro to tests.h

* tests/tests.h [!DEFAULT_STRLEN] (DEFAULT_STRLEN): New macro.
* tests/mincore.c (DEFAULT_STRLEN): Remove.
* tests/mmsg_name.c: Likewise.
* tests/msg_control.c: Likewise.
* tests/netlink_protocol.c: Likewise.
* tests/nlattr.c: Likewise.
* tests/nlattr_inet_diag_msg.c: Likewise.
* tests/nlattr_netlink_diag_msg.c: Likewise.
* tests/nlattr_unix_diag_msg.c: Likewise.
* tests/printstr.c: Likewise.
* tests/xattr.c: Likewise.
* tests/execve.c: Likewise.
(main): Initialize str_a and str_b arrays at run time.
* tests/execveat.c: Likewise.

Suggested-by: JingPiao Chen <chenjingpiao@gmail.com>
7 years agotests: use unified diff in order to improve test log readability
Eugene Syromyatnikov [Sun, 2 Jul 2017 18:03:09 +0000 (21:03 +0300)]
tests: use unified diff in order to improve test log readability

* tests/init.sh (match_diff): Add -u option to the diff invocation.

7 years agoFix error diagnostics in case of zero argc
Dmitry V. Levin [Sun, 2 Jul 2017 10:01:22 +0000 (10:01 +0000)]
Fix error diagnostics in case of zero argc

* strace.c (init): Adjust argc along with argv,
check that adjusted argc is sane.
* tests/zeroargc.c: New file.
* tests/.gitignore: Add zeroargc.
* tests/Makefile.am (check_PROGRAMS): Likewise.
* tests/options-syntax.test: Check strace error diagnostics
in case of zero argc.

7 years agoUse program_invocation_name instead of a local progname variable
Dmitry V. Levin [Sun, 2 Jul 2017 00:31:50 +0000 (00:31 +0000)]
Use program_invocation_name instead of a local progname variable

Emulate program_invocation_name only if it is not provided by libc.

* configure.ac: Check for program_invocation_name variable.
* strace.c (progname): Remove.
[!HAVE_PROGRAM_INVOCATION_NAME] (program_invocation_name): New variable.
(verror_msg, error_msg_and_help): Use it instead of progname.
(init): Initialize program_invocation_name instead of progname.

7 years agoIntroduce generic STRINGIFY and STRINGIFY_VAL macros
Dmitry V. Levin [Sun, 2 Jul 2017 00:11:31 +0000 (00:11 +0000)]
Introduce generic STRINGIFY and STRINGIFY_VAL macros

* macros.h (STRINGIFY, STRINGIFY_VAL): New macros.
* mpers_type.h: Include "macros.h".
[IN_MPERS] (STRINGIFY): Remove.
* tests/sockname.c (TEST_SYSCALL_STR__, TEST_SYSCALL_STR_): Remove.
(TEST_SYSCALL_STR): Use STRINGIFY_VAL.

Co-authored-by: Victor Krapivensky <krapivenskiy.va@phystech.edu>
7 years agoIntroduce macros.h
Dmitry V. Levin [Sun, 2 Jul 2017 00:11:31 +0000 (00:11 +0000)]
Introduce macros.h

Introduce a separate header file for generic macros shared between
strace and its tests.  Start this unification with ARRAY_SIZE macro.

* defs.h: Include "macros.h".
(ARRAY_SIZE): Move ...
* macros.h: ... to new file.
* Makefile.am (strace_SOURCES): Add it.
* tests/tests.h: Include "macros.h".
(ARRAY_SIZE): Remove.  All callers updated.

7 years agoquota: use PRINT_FIELD_FLAGS
Dmitry V. Levin [Sat, 1 Jul 2017 20:08:39 +0000 (20:08 +0000)]
quota: use PRINT_FIELD_FLAGS

* quota.c (struct xfs_dqblk): Change d_flags field's type from int8_t
to uint8_t.
(decode_cmd_data): Use PRINT_FIELD_FLAGS.

7 years agoUnify different generic PRINT_FIELD_* implementations
Dmitry V. Levin [Sat, 1 Jul 2017 13:14:49 +0000 (13:14 +0000)]
Unify different generic PRINT_FIELD_* implementations

Create a new header print_fields.h and move generic PRINT_FIELD_*
macros there.

* print_fields.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* netlink_sock_diag.c: Include "print_fields.h".
(PRINT_FIELD_U, PRINT_FIELD_X, PRINT_FIELD_COOKIE, PRINT_FIELD_FLAGS,
PRINT_FIELD_XVAL): Move to print_fields.h file.
* quota.c: Include "print_fields.h".
(PRINT_FIELD_D): Move to print_fields.h file.
(PRINT_FIELD_U, PRINT_FIELD_X): Remove.
* statx.c: Include "print_fields.h".
(PRINT_FIELD_U): Remove.
(SYS_FUNC(statx)): Update PRINT_FIELD_U callers.
* tests/quotactl.h: Include "print_fields.h".
* tests/quotactl-xfs.c: Update callers of PRINT_FIELD_* macros.
* tests/quotactl.c: Likewise.
(PRINT_FIELD_D, PRINT_FIELD_U, PRINT_FIELD_X): Remove.
* tests/test_nlattr.h: Include "print_fields.h".
(PRINT_FIELD_U, PRINT_FIELD_X): Remove.
* tests/xstatx.c: Include "print_fields.h".
(PRINT_FIELD_U): Remove.
(print_stat): Update PRINT_FIELD_U callers.
* tests/tests.h [!STRACE_PRINTF] (STRACE_PRINTF): Define to printf.

7 years agoarc: fix wrong access to "sp" member in user_regs_struct
Eugeniy Paltsev [Fri, 30 Jun 2017 13:14:14 +0000 (16:14 +0300)]
arc: fix wrong access to "sp" member in user_regs_struct

"sp" register is a member of "scratch" structure (which is nested
in user_regs_struct)

* linux/arc/arch_regs.c: Replace .sp with .scratch.sp .

Fixes: v4.16-31-g134042a5 ("arc: export arc_sp_ptr")
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoaarch64, tile: replace struct ucontext with ucontext_t
Khem Raj [Wed, 28 Jun 2017 18:43:07 +0000 (11:43 -0700)]
aarch64, tile: replace struct ucontext with ucontext_t

glibc >= 2.26 has dropped the tag struct ucontext from ucontext_t type.

* linux/arm/arch_sigreturn.c (arch_sigreturn) [AARCH64]: Replace
struct ucontext with ucontext_t.
* linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agotests: enhance nlattr_unix_diag_msg test
Dmitry V. Levin [Sat, 1 Jul 2017 00:05:39 +0000 (00:05 +0000)]
tests: enhance nlattr_unix_diag_msg test

* tests/nlattr_unix_diag_msg.c: Include "test_nlattr.h".
(test_unix_diag_vfs, test_unix_diag_icons, test_unix_diag_rqlen):
Remove.
(init_unix_diag_msg): Add const qualifier to arguments and variables.
(print_unix_diag_msg, print_uint): New functions.
(main): Use them and macros from test_nlattr.h file.

7 years agotests: check decoding of netlink unix_diag_msg attributes
JingPiao Chen [Wed, 28 Jun 2017 01:40:07 +0000 (09:40 +0800)]
tests: check decoding of netlink unix_diag_msg attributes

* tests/nlattr_unix_diag_msg.c: New file.
* tests/gen_tests.in (nlattr_unix_diag_msg): New entry.
* tests/pure_executables.list: Add nlattr_unix_diag_msg.
* tests/.gitignore: Likewise.

7 years agonetlink_sock_diag: ensure that structure field names are printed properly
Dmitry V. Levin [Sat, 1 Jul 2017 00:01:01 +0000 (00:01 +0000)]
netlink_sock_diag: ensure that structure field names are printed properly

* netlink_sock_diag.c (decode_unix_diag_vfs, decode_unix_diag_rqlen):
Use PRINT_FIELD_U to print structure fields.

7 years agonetlink_sock_diag: add const qualifiers
Dmitry V. Levin [Sat, 1 Jul 2017 00:01:01 +0000 (00:01 +0000)]
netlink_sock_diag: add const qualifiers

Add const qualifiers to auto variables and function arguments.
This change does not affect the code generated by the compiler,
the purpose of these "const" qualifiers is to highlight the intent.

* netlink_sock_diag.c (decode_unix_diag_vfs, decode_unix_diag_inode,
decode_unix_diag_rqlen): Add const qualifier to tcp, addr, and len
arguments.

7 years agonetlink: decode AF_UNIX unix_diag_msg attributes
JingPiao Chen [Wed, 28 Jun 2017 01:40:06 +0000 (09:40 +0800)]
netlink: decode AF_UNIX unix_diag_msg attributes

* netlink_sock_diag.c (unix_diag_msg_nla_decoders): New array.
(decode_unix_diag_msg): Use it.
* linux/unix_diag.h (unix_diag_vfs, unix_diag_rqlen): New structures.

7 years agotests: enhance nlattr_netlink_diag_msg test
Dmitry V. Levin [Fri, 30 Jun 2017 21:38:49 +0000 (21:38 +0000)]
tests: enhance nlattr_netlink_diag_msg test

* tests/nlattr_netlink_diag_msg.c: Include "test_nlattr.h".
(test_netlink_diag_groups, test_netlink_diag_rx_ring,
test_netlink_diag_flags): Remove.
(init_netlink_diag_msg): Add const qualifier to arguments and variables.
(print_netlink_diag_msg, print_xlong): New functions.
(main): Use them and macros from test_nlattr.h file.

7 years agotests: check decoding of netlink_diag_msg attributes
JingPiao Chen [Wed, 28 Jun 2017 01:40:05 +0000 (09:40 +0800)]
tests: check decoding of netlink_diag_msg attributes

* tests/nlattr_netlink_diag_msg.c: New file.
* tests/gen_tests.in (nlattr_netlink_diag_msg): New entry.
* tests/pure_executables.list: Add nlattr_netlink_diag_msg.
* tests/.gitignore: Likewise.

7 years agonetlink_sock_diag: ensure that structure field names are printed properly
Dmitry V. Levin [Fri, 30 Jun 2017 21:38:49 +0000 (21:38 +0000)]
netlink_sock_diag: ensure that structure field names are printed properly

* netlink_sock_diag.c (decode_netlink_diag_ring): Use PRINT_FIELD_U
to print structure fields.

7 years agonetlink_sock_diag: add const qualifiers
Dmitry V. Levin [Fri, 30 Jun 2017 21:38:49 +0000 (21:38 +0000)]
netlink_sock_diag: add const qualifiers

Add const qualifiers to auto variables and function arguments.
This change does not affect the code generated by the compiler,
the purpose of these "const" qualifiers is to highlight the intent.

* netlink_sock_diag.c (print_group, decode_netlink_diag_groups,
decode_netlink_diag_ring, decode_netlink_diag_flags): Add const
qualifier to tcp, addr, and len arguments.

7 years agonetlink: decode AF_NETLINK netlink_diag_msg attributes
JingPiao Chen [Wed, 28 Jun 2017 01:40:04 +0000 (09:40 +0800)]
netlink: decode AF_NETLINK netlink_diag_msg attributes

* linux/netlink_diag.h (netlink_diag_ring): New structure.
(NDIAG_FLAG_*): New macros.
* netlink_sock_diag.c: Include "xlat/netlink_socket_flags.h".
(print_group, decode_netlink_diag_groups, decode_netlink_diag_ring,
decode_netlink_diag_flags): New functions.
(netlink_diag_msg_nla_decoders): New array.
(decode_netlink_diag_msg): Use it.
* xlat/netlink_socket_flags.in: New file.

7 years agonetlink_sock_diag: print inet_diag_sockid.idiag_if as an interface index
Dmitry V. Levin [Fri, 30 Jun 2017 21:38:49 +0000 (21:38 +0000)]
netlink_sock_diag: print inet_diag_sockid.idiag_if as an interface index

* netlink_sock_diag.c (print_inet_diag_sockid): Print idiag_if field
using print_ifindex.
* tests/nlattr_inet_diag_msg.c: Include <net/if.h>.
(IFINDEX_LO): New macro.
(init_inet_diag_msg): Set inet_diag_sockid.idiag_if field.
(print_inet_diag_msg): Update expected output.

7 years agotests: check decoding of several standard netlink attributes
Dmitry V. Levin [Fri, 30 Jun 2017 21:38:49 +0000 (21:38 +0000)]
tests: check decoding of several standard netlink attributes

* tests/nlattr_inet_diag_msg.c (main): Check decoding of uint32_t,
uint8_t, and zero-terminated string attributes.

Co-authored-by: JingPiao Chen <chenjingpiao@gmail.com>
7 years agotests: enhance nlattr_inet_diag_msg test
Dmitry V. Levin [Fri, 30 Jun 2017 21:38:49 +0000 (21:38 +0000)]
tests: enhance nlattr_inet_diag_msg test

* tests/test_nlattr.h: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
* tests/nlattr_inet_diag_msg.c: Include "test_nlattr.h".
(test_inet_diag_meminfo, test_inet_diag_vegasinfo,
test_inet_diag_dctcpinfo, test_inet_diag_bbrinfo): Remove.
(address): New variable.
(init_inet_diag_msg): Remove "address" argument, add const qualifier
to all remaining arguments.
(print_inet_diag_msg, print_uint): New functions.
(main): Use macros from test_nlattr.h file.

7 years agotests: check decoding of netlink inet_diag_msg attributes
JingPiao Chen [Wed, 28 Jun 2017 01:40:02 +0000 (09:40 +0800)]
tests: check decoding of netlink inet_diag_msg attributes

* tests/nlattr_inet_diag_msg.c: New file.
* tests/gen_tests.in (nlattr_inet_diag_msg): New entry.
* tests/pure_executables.list: Add nlattr_inet_diag_msg.
* tests/.gitignore: Likewise.

7 years agonetlink_sock_diag: ensure that structure field names are printed properly
Dmitry V. Levin [Thu, 29 Jun 2017 09:22:52 +0000 (09:22 +0000)]
netlink_sock_diag: ensure that structure field names are printed properly

* netlink_sock_diag.c (PRINT_FIELD_X): New macro.
(decode_inet_diag_meminfo, decode_tcpvegas_info, decode_tcp_dctcp_info,
decode_tcp_bbr_info): Use it and PRINT_FIELD_U to print structure
fields.

7 years agonetlink_sock_diag: add const qualifiers
Dmitry V. Levin [Wed, 28 Jun 2017 01:40:01 +0000 (01:40 +0000)]
netlink_sock_diag: add const qualifiers

Add const qualifiers to auto variables and function arguments.
This change does not affect the code generated by the compiler,
the purpose of these "const" qualifiers is to highlight the intent.

* netlink_sock_diag.c (print_meminfo, decode_meminfo,
decode_inet_diag_meminfo, decode_tcpvegas_info, decode_tcp_dctcp_info,
decode_tcp_bbr_info): Add const qualifier to tcp, addr, and len
arguments.

7 years agonetlink: decode AF_INET inet_diag_msg attributes
JingPiao Chen [Wed, 28 Jun 2017 01:40:01 +0000 (09:40 +0800)]
netlink: decode AF_INET inet_diag_msg attributes

* linux/inet_diag.h (inet_diag_meminfo, tcpvegas_info,
tcp_dctcp_info, tcp_bbr_info): New structures.
* linux/sock_diag.h (SK_MEMINFO_VARS): New macro.
* netlink_sock_diag.c: Include  <linux/sock_diag.h>.
(print_meminfo, decode_meminfo, decode_inet_diag_meminfo,
decode_tcpvegas_info, decode_tcp_dctcp_info, decode_tcp_bbr_info):
New functions.
(inet_diag_msg_nla_decoders): New array.
(decode_inet_diag_msg): Use it.

7 years agonlattr: add const qualifiers to auto variables and function arguments
Dmitry V. Levin [Wed, 28 Jun 2017 01:40:00 +0000 (01:40 +0000)]
nlattr: add const qualifiers to auto variables and function arguments

This change does not affect the code generated by the compiler,
the purpose of these "const" qualifiers is to highlight the intent.

* nlattr.c (decode_nlattr_with_data, decode_nla_str, decode_nla_strn,
decode_nla_##name): Add const qualifier to tcp, addr, and len arguments.

7 years agonetlink: introduce nla_decoder_t to parse netlink attributes data
JingPiao Chen [Wed, 28 Jun 2017 01:40:00 +0000 (09:40 +0800)]
netlink: introduce nla_decoder_t to parse netlink attributes data

* nlattr.h (nla_decoder_t): New typedef.
(DECL_NLA): New macro.
(decode_nlattr): Add decoders, size and opaque_data argument.
* nlattr.c: (decode_nlattr_with_data): Likewise.
(decode_nla_*): New functions.
* netlink_sock_diag.c (decode_inet_diag_req_compat)
(decode_inet_diag_req_v2, decode_inet_diag_msg)
(decode_netlink_diag_msg, (decode_packet_diag_msg)
(decode_smc_diag_msg, decode_unix_diag_msg): Add decoders,
size and opaque_data arguments. All callers updated.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: add a basic netlink attribute parser of AF_SMC diag
JingPiao Chen [Tue, 27 Jun 2017 10:10:06 +0000 (18:10 +0800)]
netlink: add a basic netlink attribute parser of AF_SMC diag

* netlink_sock_diag.c: Include "xlat/smc_diag_attrs.h".
(decode_smc_diag_msg): Use decode_nlattr.
* xlat/smc_diag_attrs.in: New file.

7 years agonetlink: add a basic netlink attribute parser of AF_INET diag
JingPiao Chen [Tue, 27 Jun 2017 10:10:05 +0000 (18:10 +0800)]
netlink: add a basic netlink attribute parser of AF_INET diag

* linux/inet_diag.h (INET_DIAG_REQ_*): New enum.
* netlink_sock_diag.c: Include "xlat/inet_diag_attrs.h"
and "xlat/inet_diag_req_attrs.h".
(decode_inet_diag_req_compat, decode_inet_diag_req_v2,
 decode_inet_diag_msg): Use decode_nlattr.
* xlat/inet_diag_attrs.in: New file.
* xlat/inet_diag_req_attrs.in: Likewise.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: add a basic netlink attribute parser of AF_PACKET diag
JingPiao Chen [Tue, 27 Jun 2017 10:10:04 +0000 (18:10 +0800)]
netlink: add a basic netlink attribute parser of AF_PACKET diag

* linux/packet_diag.h (PACKET_DIAG_*): New enum.
* netlink_sock_diag.c: Include "xlat/packet_diag_attrs.h".
(decode_packet_diag_msg): Use decode_nlattr.
* xlat/packet_diag_attrs.in: New file.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: add a basic netlink attribute parser of AF_NETLINK diag
JingPiao Chen [Tue, 27 Jun 2017 10:10:03 +0000 (18:10 +0800)]
netlink: add a basic netlink attribute parser of AF_NETLINK diag

* linux/netlink_diag.h (NETLINK_DIAG_*): New enum.
* netlink_sock_diag.c: Include "xlat/netlink_diag_attrs.h".
(decode_netlink_diag_msg): Use decode_nlattr.
* xlat/netlink_diag_attrs.in: New file.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink_sock_diag: ensure that structure field names are printed properly
Dmitry V. Levin [Tue, 27 Jun 2017 23:07:37 +0000 (23:07 +0000)]
netlink_sock_diag: ensure that structure field names are printed properly

* netlink_sock_diag.c (PRINT_FIELD_U, PRINT_FIELD_COOKIE,
PRINT_FIELD_FLAGS, PRINT_FIELD_XVAL): New macros.
(decode_unix_diag_req, decode_unix_diag_msg, decode_netlink_diag_req,
decode_netlink_diag_msg, decode_packet_diag_req, decode_packet_diag_msg,
print_inet_diag_sockid, decode_inet_diag_req_compat,
decode_inet_diag_req_v2, decode_inet_diag_msg, decode_smc_diag_req,
decode_smc_diag_msg): Use them to print structure fields.

7 years agoUpdate ioctl entries from linux v4.12-rc7
Gleb Fotengauer-Malinovskiy [Wed, 28 Jun 2017 17:49:00 +0000 (20:49 +0300)]
Update ioctl entries from linux v4.12-rc7

* linux/32/ioctls_inc_align16.h: Update from linux v4.12-rc7
(with f7a320ff commit applied on top) 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.
* NEWS: Mention this.

7 years agomaint: fix ioctls_sym.sh premature termination
Gleb Fotengauer-Malinovskiy [Wed, 28 Jun 2017 17:39:54 +0000 (20:39 +0300)]
maint: fix ioctls_sym.sh premature termination

When the list of headers do not fit into the command line, xargs splits
it into several lists and then passes them to grep.  If no headers from
a list match the grep pattern, grep exits with a non-zero status that
causes xargs to exit with a non-zero status, too.

* maint/ioctls_sym.sh: Use "find -exec +" instead of xargs,
ignore its exit status.

7 years agotests: introduce NLMSG_ATTR macro
JingPiao Chen [Tue, 27 Jun 2017 08:18:23 +0000 (16:18 +0800)]
tests: introduce NLMSG_ATTR macro

* tests/tests.h (NLMSG_ATTR): New macro.
* tests/nlattr.c (test_nlattr, test_nla_type): Use it.

7 years agonetlink: pass NLMSG_DONE messages to family specific payload decoders
JingPiao Chen [Tue, 27 Jun 2017 08:16:56 +0000 (16:16 +0800)]
netlink: pass NLMSG_DONE messages to family specific payload decoders

While many NLMSG_DONE messages indeed have payload containing
just one integer, there are exceptions. Handle this by passing
payloads of NLMSG_DONE messages to family specific netlink
payload decoders.

* netlink.c (print_nlmsghdr): Do not skip family detection
for nlmsg_type == NLMSG_DONE.
(decode_nlmsg_type): Skip family specific type decoders
for type == NLMSG_DONE.
(decode_nlmsg_flags): Skip family specific decoding of flags
for type == NLMSG_DONE.
(decode_netlink_sock_diag): Skip for nlmsg_type == NLMSG_DONE.

7 years agoUnexport die_out_of_memory
Dmitry V. Levin [Mon, 26 Jun 2017 22:41:28 +0000 (22:41 +0000)]
Unexport die_out_of_memory

Print more specific error diagnostics than a generic "Out of memory"
when an error happens outside xmalloc.c.

* defs.h (die_out_of_memory): Remove prototype.
* strace.c (strace_popen, init): Call perror_msg_and_die instead
of die_out_of_memory.
* unwind.c (unwind_tcb_init): Likewise.
* xmalloc.c (die_out_of_memory): Add static qualifier.

7 years agoCheck -s argument early
Dmitry V. Levin [Mon, 26 Jun 2017 22:30:19 +0000 (22:30 +0000)]
Check -s argument early

* util.c (printstr_ex): Move the check that -s argument
does not exceed -1U / 4 ...
* strace.c (init): ... here.
* tests/options-syntax.test: Check it.

7 years agoInclude "netlink.h" instead of <linux/netlink.h>
Dmitry V. Levin [Sun, 25 Jun 2017 00:40:29 +0000 (00:40 +0000)]
Include "netlink.h" instead of <linux/netlink.h>

* net.c: Include "netlink.h" instead of <linux/netlink.h>.
* sockaddr.c: Likewise.
* tests/create_nl_socket.c: Likewise.
* tests/net-sockaddr.c: Likewise.
* tests/netlink_audit.c: Likewise.
* tests/netlink_generic.c: Likewise.
* tests/netlink_inet_diag.c: Likewise.
* tests/netlink_netfilter.c: Likewise.
* tests/netlink_route.c: Likewise.
* tests/netlink_selinux.c: Likewise.
* tests/netlink_xfrm.c: Likewise.
* tests/net-yy-netlink.c: Include "netlink.h" instead
of <linux/netlink.h>, remove fallback definition of NETLINK_SOCK_DIAG.
* tests/netlink_netlink_diag.c: Likewise.
* tests/netlink_protocol.c: Likewise.
* tests/netlink_sock_diag.c: Likewise.
* tests/netlink_unix_diag.c: Likewise.
* tests/nlattr.c: Likewise.

7 years agonetlink: provide a fallback definition of NETLINK_SOCK_DIAG
Dmitry V. Levin [Sat, 24 Jun 2017 22:25:28 +0000 (22:25 +0000)]
netlink: provide a fallback definition of NETLINK_SOCK_DIAG

Add a fallback definition of NETLINK_SOCK_DIAG to netlink.h
instead of adding these fallback definitions to every file.

* netlink.h: Provide a fallback definition of NETLINK_SOCK_DIAG.
* socketutils.c: Include "netlink.h" instead of <linux/netlink.h>,
remove fallback definition of NETLINK_SOCK_DIAG.

7 years agoUpdate prctl ARCH_* constants
Dmitry V. Levin [Fri, 23 Jun 2017 00:31:49 +0000 (00:31 +0000)]
Update prctl ARCH_* constants

* xlat/archvals.in: Add ARCH_GET_CPUID and ARCH_SET_CPUID
introduced by linux kernel commit v4.12-rc1~153^2~2.

7 years agoUpdate V4L2_* constants
Dmitry V. Levin [Thu, 22 Jun 2017 21:48:00 +0000 (21:48 +0000)]
Update V4L2_* constants

* xlat/v4l2_buf_types.in: Add V4L2_BUF_TYPE_META_CAPTURE introduced
by linux kernel commit v4.12-rc1~85^2~71.
* xlat/v4l2_device_capabilities_flags.in: Add V4L2_CAP_META_CAPTURE
introduced by the same commit.
* xlat/v4l2_control_flags.in: Add V4L2_CTRL_FLAG_HAS_PAYLOAD,
V4L2_CTRL_FLAG_EXECUTE_ON_WRITE, and V4L2_CTRL_FLAG_MODIFY_LAYOUT
introduced by linux kernel commits v3.17-rc1~112^2~363,
v4.1-rc1~59^2~1^2~63, and v4.12-rc1~85^2~62, respectively.
* xlat/v4l2_control_types.in: Add V4L2_CTRL_TYPE_U8, V4L2_CTRL_TYPE_U16,
and V4L2_CTRL_TYPE_U32 introduced by linux kernel commits
v3.17-rc1~112^2~343 and v3.17-rc1~112^2~112.

7 years agoUpdate SCTP_* constants
Dmitry V. Levin [Thu, 22 Jun 2017 21:42:00 +0000 (21:42 +0000)]
Update SCTP_* constants

* xlat/socksctpoptions.in: Add SCTP_ENABLE_STREAM_RESET,
SCTP_RESET_STREAMS, SCTP_RESET_ASSOC, SCTP_ADD_STREAMS,
SCTP_RECONFIG_SUPPORTED, and SCTP_PR_STREAM_STATUS introduced
by linux kernel commits v4.11-rc1~124^2~387^2~1, v4.11-rc1~124^2~387^2,
v4.11-rc1~124^2~166^2~2, v4.11-rc1~124^2~166^2, v4.12-rc1~64^3~469^2,
and v4.12-rc1~64^3~276, respectively.

7 years agoUpdate RTM_* constants
Dmitry V. Levin [Thu, 22 Jun 2017 18:36:35 +0000 (18:36 +0000)]
Update RTM_* constants

* xlat/nl_route_types.in: Add RTM_DELNETCONF introduced
by linux kernel commit v4.12-rc1~64^3~312^2~6.

7 years agoUpdate NDIAG_SHOW_* constants
Dmitry V. Levin [Thu, 22 Jun 2017 18:31:49 +0000 (18:31 +0000)]
Update NDIAG_SHOW_* constants

* linux/netlink_diag.h (NDIAG_SHOW_FLAGS): New constant introduced
by linux kernel commit v4.12-rc1~64^3~260.
* xlat/netlink_diag_show.in: Add it.

7 years agoUpdate KEYCTL_* constants
Dmitry V. Levin [Thu, 22 Jun 2017 18:23:08 +0000 (18:23 +0000)]
Update KEYCTL_* constants

* xlat/keyctl_commands.in: Add KEYCTL_RESTRICT_KEYRING introduced
by linux kernel commit v4.12-rc1~123^2~7^2~2^2~3.

7 years agoUpdate ARPHRD_* constants
Dmitry V. Levin [Thu, 22 Jun 2017 18:18:05 +0000 (18:18 +0000)]
Update ARPHRD_* constants

* xlat/arp_hardware_types.in: Add ARPHRD_VSOCKMON introduced
by linux kernel commit v4.12-rc1~129^2~118^2~2.

7 years agoUpdate SO_* constants
Dmitry V. Levin [Thu, 22 Jun 2017 18:08:24 +0000 (18:08 +0000)]
Update SO_* constants

* xlat/sockoptions.in: Add SO_MEMINFO, SO_INCOMING_NAPI_ID,
and SO_COOKIE introduced by linux kernel commits v4.12-rc1~64^3~389,
v4.12-rc1~64^3~341^2, and v4.12-rc1~64^3~221^2~1, respectively.

7 years agotests: check more corner cases of nlattr decoding
Dmitry V. Levin [Wed, 21 Jun 2017 10:37:02 +0000 (10:37 +0000)]
tests: check more corner cases of nlattr decoding

* tests/nlattr.c (test_nlattr): Check decoding in case of invalid
struct nlattr.nla_len.

7 years agotests: check decoding of netlink attribute
JingPiao Chen [Wed, 21 Jun 2017 16:24:24 +0000 (00:24 +0800)]
tests: check decoding of netlink attribute

* tests/nlattr.c: New file.
* tests/gen_tests.in (nlattr): New entry.
* tests/pure_executables.list: Add nlattr.
* tests/.gitignore: Likewise.

7 years agonetlink: introduce a basic netlink attributes parser
JingPiao Chen [Wed, 21 Jun 2017 16:24:23 +0000 (00:24 +0800)]
netlink: introduce a basic netlink attributes parser

* linux/unix_diag.h (UNIX_DIAG_*): New enum.
* nlattr.c: New file.
* nlattr.h: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* netlink_sock_diag.c: Include "nlattr.h" and "xlat/unix_diag_attrs.h".
(decode_unix_diag_msg): Use decode_nlattr.
* xlat/unix_diag_attrs.in: New file.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: introduce netlink.h
JingPiao Chen [Wed, 21 Jun 2017 16:24:22 +0000 (00:24 +0800)]
netlink: introduce netlink.h

* netlink.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* netlink_sock_diag.c: Include "netlink.h",
remove <sys/socket.h> and <linux/netlink.h>.
* netlink.c: Likewise.
(NLMSG_HDRLEN): Move to netlink.h.
* tests/netlink_protocol.c: Replace <linux/netlink.h> with "netlink.h".
* tests/netlink_sock_diag.c: Likewise.

7 years agotests: add SET_STRUCT macro to tests.h
Dmitry V. Levin [Tue, 20 Jun 2017 17:41:59 +0000 (17:41 +0000)]
tests: add SET_STRUCT macro to tests.h

* tests/netlink_sock_diag.c (INIT_STRUCT): Rename to SET_STRUCT,
all callers updated.  Move ...
* tests/tests.h: ... here.

7 years agotests: fix potential unaligned access in netlink_sock_diag.test
Dmitry V. Levin [Mon, 19 Jun 2017 21:36:47 +0000 (21:36 +0000)]
tests: fix potential unaligned access in netlink_sock_diag.test

Despite our efforts made to avoid unaligned access, gcc appears to be
generating instructions that might cause unaligned access when copying
structures to unaligned addresses.

Fix this issue by replacing copying of structures to unaligned addresses
with memcpy calls.

* tests/netlink_sock_diag.c (INIT_STRUCT): New macro.
(test_odd_family_req, test_odd_family_msg, test_unix_diag_req,
test_unix_diag_msg, test_netlink_diag_req, test_netlink_diag_msg,
test_packet_diag_req, test_packet_diag_msg, test_inet_diag_sockid,
test_inet_diag_req, test_inet_diag_req_v2, test_inet_diag_msg,
test_smc_diag_req, test_smc_diag_msg): Use it to initialize potentially
unaligned struct nlmsghdr.  Do not access nlh->nlmsg_len.

7 years agotests: check decoding of NETLINK_GENERIC message types
Masatake YAMATO [Tue, 13 Jun 2017 08:26:45 +0000 (17:26 +0900)]
tests: check decoding of NETLINK_GENERIC message types

* tests/netlink_generic.c: New file.
* tests/gen_tests.in (netlink_generic): New entry.
* tests/pure_executables.list: Add netlink_generic.
* tests/.gitignore: Likewise.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agonetlink: add decoding of NETLINK_GENERIC protocol families
Masatake YAMATO [Tue, 13 Jun 2017 08:26:44 +0000 (17:26 +0900)]
netlink: add decoding of NETLINK_GENERIC protocol families

NETLINK_GENERIC is a protocol stacked on netlink protocol.

When a NETLINK_GENERIC subsystem registers its "family" name in the
kernel at run time, an integer value associated with this name is
assigned by the kernel.  This integer value is specified in struct
nlmsghdr.nlmsg_type of subsequent communications with the
NETLINK_GENERIC subsystem.

This change implements decoding of NETLINK_GENERIC message types in
symbolic form, for example:

  $ ./strace -yy -e 'sendto' ip tcp_metrics > /dev/null
  sendto(4<NETLINK:[GENERIC:12345]>, {{len=20, type=tcp_metrics, ...
  +++ exited with 0 +++

Note that type= specifying the NETLINK_GENERIC protocol family
is decoded properly.

* netlink.c (decode_nlmsg_type_generic): New function.
(nlmsg_types): Add NETLINK_GENERIC entry.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agosocketutils: build a dynamic xlat table for NETLINK_GENERIC decoding
Masatake YAMATO [Tue, 13 Jun 2017 08:26:43 +0000 (17:26 +0900)]
socketutils: build a dynamic xlat table for NETLINK_GENERIC decoding

* configure.ac (AC_CHECK_HEADERS): Add linux/genetlink.h.
* defs.h (genl_families_xlat): New prototype.
* socketutils.c [HAVE_LINUX_GENETLINK_H]: Include <linux/genetlink.h>.
[HAVE_LINUX_GENETLINK_H] (genl_send_dump_families,
genl_parse_families_response): New helper functions.
(genl_families_xlat): New function for building the xlat table
for NETLINK_GENERIC decoding.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agodyxlat: new interface for building xlat tables dynamically
Masatake YAMATO [Tue, 13 Jun 2017 08:26:41 +0000 (17:26 +0900)]
dyxlat: new interface for building xlat tables dynamically

xlat tables are usually generated at build time.

printxval is suitable for printing struct nlmsghdr.nlmsg_type for
NETLINK_GENERIC protocol.  However, the corresponding xlat table
cannot be defined at build time because the values are registered
by the kernel at run time.

This change introduces dyxlat functions for building xlat tables
dynamically.  The primary use case is decoding nlmsg_type but this
interface can be used for other purposes.

* defs.h (struct dyxlat): New opaque data type.
(dyxlat_alloc, dyxlat_free, dyxlat_add_pair): New function declarations.
* dyxlat.c: New file.
* Makefile.am (strace_SOURCES): Add it.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoIntroduce xstrndup function
Masatake YAMATO [Tue, 13 Jun 2017 08:26:42 +0000 (17:26 +0900)]
Introduce xstrndup function

* configure.ac (AC_CHECK_FUNCS): Add strndup.
* defs.h (xstrndup): New prototype.
* xmalloc.c (xstrndup): New function.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agonetlink: do not print extra braces around payloadless nlmsghdr
Dmitry V. Levin [Sun, 18 Jun 2017 21:43:39 +0000 (21:43 +0000)]
netlink: do not print extra braces around payloadless nlmsghdr

* netlink.c (decode_nlmsghdr_with_payload): Print braces before
print_nlmsghdr and after decode_payload iff decode_payload is invoked.
* tests/netlink_audit.c (test_nlmsg_type): Update expected output.
* tests/netlink_netfilter.c: Likewise.
* tests/netlink_selinux.c: Likewise.
* tests/netlink_protocol.c (send_query): Likewise.
* tests/netlink_route.c (test_nlmsg_type, test_nlmsg_flags): Likewise.
* tests/netlink_sock_diag.c: Likewise.
* tests/netlink_xfrm.c: Likewise.

7 years agoStrip argument name of type "struct tcb *" from function prototypes
Dmitry V. Levin [Sat, 17 Jun 2017 22:29:52 +0000 (22:29 +0000)]
Strip argument name of type "struct tcb *" from function prototypes

"struct tcb *" was used in most prototypes along with "struct tcb *tcp",
this change converts the latter form to the former for consistency.

7 years agoFix a few spacing style issues
Dmitry V. Levin [Sat, 17 Jun 2017 22:23:09 +0000 (22:23 +0000)]
Fix a few spacing style issues

Reported by kernel's checkpatch.pl script.

7 years agoStrip redundant trailing semicolons
Dmitry V. Levin [Sat, 17 Jun 2017 21:47:57 +0000 (21:47 +0000)]
Strip redundant trailing semicolons

Strip trailing semicolons from macro definitions.
Strip extra semicolons from statements terminations.

Reported by kernel's checkpatch.pl script.

7 years agoFix macros encosure in a do/while loop
Dmitry V. Levin [Sat, 17 Jun 2017 21:47:57 +0000 (21:47 +0000)]
Fix macros encosure in a do/while loop

Enclose macros with multiple statements and macros starting
with "if" statement in a do/while loop.
Do not enclose single statement macros in a do/while loop.

Reported by kernel's checkpatch.pl script.

7 years agoUse __func__ instead of gcc specific __FUNCTION__
Dmitry V. Levin [Sat, 17 Jun 2017 20:39:26 +0000 (20:39 +0000)]
Use __func__ instead of gcc specific __FUNCTION__

Reported by kernel's checkpatch.pl script.

7 years agoFix a few initialization style issues
Dmitry V. Levin [Sat, 17 Jun 2017 19:20:11 +0000 (19:20 +0000)]
Fix a few initialization style issues

Do not initialise statics and globals to 0, NULL, or false.

Reported by kernel's checkpatch.pl script.

7 years agoFix function prototypes with unspecified arguments
Dmitry V. Levin [Sat, 17 Jun 2017 19:08:36 +0000 (19:08 +0000)]
Fix function prototypes with unspecified arguments

Change functions declared as taking unspecified number of arguments
of unspecified type to functions that take no arguments.

Reported by kernel's checkpatch.pl script.

7 years agoFix a few sizeof style issues
Dmitry V. Levin [Sat, 17 Jun 2017 18:49:58 +0000 (18:49 +0000)]
Fix a few sizeof style issues

Reported by kernel's checkpatch.pl script.

7 years agoFix a few misspellings in comments
Dmitry V. Levin [Fri, 16 Jun 2017 22:54:04 +0000 (22:54 +0000)]
Fix a few misspellings in comments

Reported by kernel's checkpatch.pl script.

7 years agoprint_mreq: remove superfluous print_quoted_string calls
Dmitry V. Levin [Fri, 16 Jun 2017 00:00:42 +0000 (00:00 +0000)]
print_mreq: remove superfluous print_quoted_string calls

The string returned by inet_ntoa(3) has IPv4 dotted-decimal notation,
no need to quote it.

* net.c (print_mreq): Remove print_quoted_string calls.

7 years agotests: check decoding of incomplete SCM_TIMESTAMP* control messages
Dmitry V. Levin [Thu, 15 Jun 2017 17:00:34 +0000 (17:00 +0000)]
tests: check decoding of incomplete SCM_TIMESTAMP* control messages

* tests/msg_control.c (test_scm_timestamp, test_scm_timestampns,
test_scm_timestamping): Check decoding of incomplete control messages.

7 years agomsghdr: print SCM_TIMESTAMP* control messages
Miroslav Lichvar [Thu, 15 Jun 2017 14:02:40 +0000 (16:02 +0200)]
msghdr: print SCM_TIMESTAMP* control messages

Add support for printing control messages containing software and/or
hardware timestamps, which are typically enabled by NTP and PTP
implementations.

* print_timeval.c (print_struct_timeval_data_size): New mpers printer.
* print_timespec.c (print_struct_timespec_data_size,
print_struct_timespec_array_data_size): Likewise.
* msghdr.c (print_scm_timestamp, print_scm_timestampns,
print_scm_timestamping): New functions.
(cmsg_socket_printers): Add them.
* NEWS: Mention this change.
* tests/msg_control.c: Include "xlat.h" and "xlat/scmvals.h".
(test_scm_timestamp, test_scm_timestampns, test_scm_timestamping):
New functions.
(test_sol_socket): Use them.

Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agotests: check decoding of NETLINK_SOCK_DIAG AF_SMC messages
JingPiao Chen [Tue, 13 Jun 2017 05:49:46 +0000 (13:49 +0800)]
tests: check decoding of NETLINK_SOCK_DIAG AF_SMC messages

* tests/netlink_sock_diag.c: Include <linux/smc_diag.h>.
(SMC_ACTIVE): New macro.
(test_smc_diag_req, test_smc_diag_msg): New functions.
(main): Use them.

7 years agonetlink: add a basic socket diag parser of AF_SMC messages
JingPiao Chen [Tue, 13 Jun 2017 05:38:27 +0000 (13:38 +0800)]
netlink: add a basic socket diag parser of AF_SMC messages

* linux/smc_diag.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* netlink_sock_diag.c: Include <linux/smc_diag.h>,
"xlat/smc_diag_extended_flags.h" and "xlat/smc_states.h".
(decode_smc_diag_req, decode_smc_diag_msg): New functions.
(diag_decoders): Add AF_SMC.
* xlat/smc_diag_extended_flags.in: New file.
* xlat/smc_states.in: Likewise.

7 years agotests: check decoding of NETLINK_SOCK_DIAG AF_INET messages
JingPiao Chen [Tue, 13 Jun 2017 05:28:02 +0000 (13:28 +0800)]
tests: check decoding of NETLINK_SOCK_DIAG AF_INET messages

* tests/netlink_sock_diag.c: Include <arpa/inet.h>
and <linux/inet_diag.h>.
(test_inet_diag_sockid, test_inet_diag_req, test_inet_diag_req_v2,
test_inet_diag_msg): New functions.
(mian): Use them.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: add a basic socket diag parser of AF_INET and AF_INET6 messages
JingPiao Chen [Tue, 13 Jun 2017 04:43:31 +0000 (12:43 +0800)]
netlink: add a basic socket diag parser of AF_INET and AF_INET6 messages

* defs.h (inet_protocols): New xlat prototype.
* linux/inet_diag.h (inet_diag_req): New structure.
(INET_DIAG_*): New enum.
* netlink_sock_diag.c: Include <arpa/inet.h>, <linux/inet_diag.h>
and "xlat/inet_diag_extended_flags.h".
(print_inet_diag_sockid, decode_inet_diag_req_compat)
(decode_inet_diag_req_v2, decode_inet_diag_req)
(decode_inet_diag_msg): New functions.
(diag_decoders): Add AF_INET and AF_INET6;
* xlat/inet_diag_extended_flags.in: New file.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agoIntroduce print_inet_addr
Dmitry V. Levin [Thu, 15 Jun 2017 21:02:14 +0000 (21:02 +0000)]
Introduce print_inet_addr

* defs.h (print_inet_addr): New prototype.
* sockaddr.c (print_inet_addr): New function.
(print_sockaddr_data_in6): Use it.
* net.c (print_mreq6): Likewise.
* tests/ip_mreq.c (main): Update expected output.

7 years agotests: check decoding of NETLINK_SOCK_DIAG AF_PACKET messages
JingPiao Chen [Tue, 13 Jun 2017 03:58:25 +0000 (11:58 +0800)]
tests: check decoding of NETLINK_SOCK_DIAG AF_PACKET messages

* tests/netlink_sock_diag.c: Include <linux/if_ether.h>
and <linux/packet_diag.h>.
(test_packet_diag_req, test_packet_diag_msg): New functions.
(main): Use them.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: add a basic socket diag parser of AF_PACKET messages
JingPiao Chen [Tue, 13 Jun 2017 03:50:15 +0000 (11:50 +0800)]
netlink: add a basic socket diag parser of AF_PACKET messages

* linux/packet_diag.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* defs.h (ethernet_protocols): New xlat prototype.
* netlink_sock_diag.c: Include <linux/packet_diag.h>
and "xlat/packet_diag_show.h".
(decode_packet_diag_req, decode_packet_diag_msg): New functions.
(diag_decoders): Add AF_PACKET.
* xlat/packet_diag_show.in: New file.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agotests: check decoding of NETLINK_SOCK_DIAG AF_NETLINK messages
JingPiao Chen [Tue, 13 Jun 2017 03:22:14 +0000 (11:22 +0800)]
tests: check decoding of NETLINK_SOCK_DIAG AF_NETLINK messages

* tests/netlink_sock_diag.c: Include <linux/netlink_diag.h>.
(test_netlink_diag_req, test_netlink_diag_msg): New functions.
(main): Use them.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: add a basic socket diag parser of AF_NETLINK messages
JingPiao Chen [Tue, 13 Jun 2017 02:32:55 +0000 (10:32 +0800)]
netlink: add a basic socket diag parser of AF_NETLINK messages

* linux/netlink_diag.h (NDIAG_SHOW_GROUPS, NDIAG_SHOW_RING_CFG):
New macros.
* netlink_sock_diag.c: Include <linux/netlink_diag.h>,
"xlat/netlink_diag_show.h" and "xlat/netlink_states.h".
(decode_netlink_diag_req, decode_netlink_diag_msg): New functions.
(diag_decoders): Add AF_NETLINK.
* xlat/netlink_diag_show.in: New file.
* xlat/netlink_states.in: Likewise.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agotests: check decoding of NETLINK_SOCK_DIAG AF_UNIX messages
Dmitry V. Levin [Sat, 10 Jun 2017 22:07:54 +0000 (22:07 +0000)]
tests: check decoding of NETLINK_SOCK_DIAG AF_UNIX messages

* tests/netlink_sock_diag.c: Include <netinet/tcp.h>
and <linux/unix_diag.h>.
(test_odd_family_req, test_odd_family_msg, test_unix_diag_req,
test_unix_diag_msg): New functions.
(main): Use them.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
Co-authored-by: JingPiao Chen <chenjingpiao@gmail.com>
7 years agonetlink: add a basic socket diag parser of AF_UNIX messages
Dmitry V. Levin [Sat, 10 Jun 2017 22:07:54 +0000 (22:07 +0000)]
netlink: add a basic socket diag parser of AF_UNIX messages

* defs.h (socktypes): New xlat prototype.
* linux/unix_diag.h (UDIAG_SHOW_VFS, UDIAG_SHOW_ICONS, UDIAG_SHOW_RQLEN,
UDIAG_SHOW_MEMINFO): New macros.
* netlink_sock_diag.c: Include <sys/socket.h>, <linux/netlink.h>,
<linux/unix_diag.h>, "xlat/tcp_states.h", "xlat/tcp_state_flags.h",
and "xlat/unix_diag_show.h".
(decode_unix_diag_req, decode_unix_diag_msg): New functions.
(netlink_diag_decoder_t): New typedef.
(diag_decoders): New array.
(decode_netlink_sock_diag): Use it.
* xlat/tcp_state_flags.in: New file.
* xlat/tcp_states.in: Likewise.
* xlat/unix_diag_show.in: Likewise.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
Co-authored-by: JingPiao Chen <chenjingpiao@gmail.com>
7 years agonetlink: introduce family specific payload decoders
Dmitry V. Levin [Fri, 9 Jun 2017 23:06:42 +0000 (23:06 +0000)]
netlink: introduce family specific payload decoders

* defs.h (netlink_decoder_t): New typedef.
(DECL_NETLINK): New macro.
(decode_netlink_sock_diag): New prototype.
* netlink.c (netlink_decoders): New array.
(decode_payload): Use it to invoke netlink family specific decoders.
* netlink_sock_diag.c: New file.
* Makefile.am (strace_SOURCES): Add it.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
Co-authored-by: JingPiao Chen <chenjingpiao@gmail.com>
7 years agoUpdate SCM_* constants
Dmitry V. Levin [Thu, 15 Jun 2017 00:27:30 +0000 (00:27 +0000)]
Update SCM_* constants

* xlat/scmvals.in: Add SCM_TIMESTAMP, SCM_TIMESTAMPNS, SCM_TIMESTAMPING,
SCM_WIFI_STATUS, and SCM_TIMESTAMPING_OPT_STATS.

7 years agonetlink: refactor decode_nlmsg_type
Dmitry V. Levin [Wed, 14 Jun 2017 23:32:45 +0000 (23:32 +0000)]
netlink: refactor decode_nlmsg_type

* netlink.c (decode_nlmsg_type_default, decode_nlmsg_type_netfilter):
New functions.
(nlmsg_types_decoder_t): New typedef.
(nlmsg_types): Add decoder field.
(decode_nlmsg_type): Use it.

7 years agotests: extend printstr test
JingPiao Chen [Wed, 14 Jun 2017 03:54:16 +0000 (11:54 +0800)]
tests: extend printstr test

* tests/printstr.c (main): Add a case for short read.

7 years agov4l2: fix preprocessor checks
Dmitry V. Levin [Tue, 13 Jun 2017 21:00:04 +0000 (21:00 +0000)]
v4l2: fix preprocessor checks

Fix checks for struct v4l2_window.global_alpha and struct
v4l2_sdr_format.buffersize.

* v4l2.c (print_v4l2_format_fmt): Do not assume that
HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA and
HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE are defined.
* tests/ioctl_v4l2.c (init_v4l2_format, dprint_ioctl_v4l2): Likewise.

7 years agoMove xlat related functions to a separate file
Dmitry V. Levin [Mon, 12 Jun 2017 15:41:54 +0000 (15:41 +0000)]
Move xlat related functions to a separate file

* util.c (xlookup, xlat_bsearch_compare, xlat_search, printxvals,
printxval_searchn, addflags, sprintflags, printflags_ex): Move ...
* xlat.c: ... to this new file.
* Makefile.am (strace_SOURCES): Add it.

7 years agosocketeutils: extend receive_responses further
Masatake YAMATO [Sun, 11 Jun 2017 07:42:28 +0000 (16:42 +0900)]
socketeutils: extend receive_responses further

This is the second patch in series of implementing NETLINK_GENERIC
protocol decoder.

This change allows passing of opaque user data to the callback function.

* socketutils.c (receive_responses): Change the type of proto_name
argument from "const char *" to "void *" to allow passing
of arbitrary data to the callback function.
Rename proto_name to opaque_data, make it the last argument.
Pass it to the callback function as the last argument.
(inet_parse_response, unix_parse_response, netlink_parse_response):
Change the type of proto_name argument from "const char *" to "void *",
rename it to opaque_data, make it the last argument.
Introduce a local variable proto_name to convert the type
of opaque_data argument from "void *" to "const char *".
(unix_get, inet_get, netlink_get): Cast the protocol name from
"const char *" to "void *" for passing to the callback function.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agosocketeutils: extend receive_responses to handle other netlink types
Masatake YAMATO [Sun, 11 Jun 2017 07:42:27 +0000 (16:42 +0900)]
socketeutils: extend receive_responses to handle other netlink types

This is the first patch in series of implementing NETLINK_GENERIC
protocol decoder.

receive_responses was written for decoding kernel responses of type
SOCK_DIAG_BY_FAMILY, other types were ignored.

This change makes the type of netlink response a parameter
so the function can be used for other types of communication.

* socketutils.c (receive_responses): add a new parameter
expected_msg_type to handle types other than SOCK_DIAG_BY_FAMILY.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agotests: fix typo
JingPiao Chen [Mon, 12 Jun 2017 15:33:00 +0000 (23:33 +0800)]
tests: fix typo

* tests/dup3.c (SKIP_MAIN_UNDEFINED): Remove duplicated &&.

7 years agoIntroduce printflags_ex function
Dmitry V. Levin [Thu, 8 Jun 2017 22:15:58 +0000 (22:15 +0000)]
Introduce printflags_ex function

Add printflags_ex extension over printflags64 that, similar
to printxvals, takes a NULL-terminated sequence of xlat pointers.

* defs.h (printflags_ex): New prototype.
(printflags64): Turn into a thin wrapper around printflags_ex.
* netlink.c (decode_nlmsg_flags): Use printflags_ex.
* util.c (printflags_ex): New function.
(printflags64): Remove.
* xlat/netlink_get_flags.in: Remove entries listed
in xlat/netlink_flags.in file.
* xlat/netlink_new_flags.in: Likewise.

7 years agotests: add check for decoding netlink get and new flags
JingPiao Chen [Wed, 7 Jun 2017 15:35:19 +0000 (23:35 +0800)]
tests: add check for decoding netlink get and new flags

* tests/netlink_route.c (test_nlmsg_flags): New function, checks
decoding of NETLINK_ROUTE get and new flags.
(main): Use it.
* tests/netlink_sock_diag.c (test_nlmsg_flags): New function, checks
decoding of NETLINK_SOCK_DIAG get flags.
(main): Use it.
* tests/netlink_xfrm.c: (test_nlmsg_flags): New function, checks
decoding of NETLINK_XFRM get and new flags.
(main): Use it.

7 years agonetlink: implement generic nlmsg_flags decoding
JingPiao Chen [Thu, 8 Jun 2017 01:02:22 +0000 (09:02 +0800)]
netlink: implement generic nlmsg_flags decoding

* netlink.c: Include "xlat/netlink_get_flags.h"
and "xlat/netlink_new_flags.h".
(decode_nlmsg_flags): New function.
(print_nlmsghdr): Use it.
* xlat/netlink_get_flags.in: New file.
* xlat/netlink_new_flags.in: Likewise.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoxlat: provide fallback definitions for XFRM_MSG_* constants
Dmitry V. Levin [Tue, 6 Jun 2017 20:25:26 +0000 (20:25 +0000)]
xlat: provide fallback definitions for XFRM_MSG_* constants

Some of XFRM_MSG_* constants were introduced later than the header file
where they are defined.

* xlat/nl_xfrm_types.in: Add default values for constants.

7 years agosyscall.c: split trace_syscall() into 6 functions
Victor Krapivensky [Mon, 5 Jun 2017 19:19:07 +0000 (22:19 +0300)]
syscall.c: split trace_syscall() into 6 functions

This change removes the trace_syscall function.  Now, the code that uses
syscall.c trace functions is expected to check whether it is a syscall
entry or exit (with entering(tcp)/exiting(tcp)) itself, and then make
an appropriate sequence of function calls.

* defs.h: Update comment on TCB_INSYSCALL.
(trace_syscall): Remove prototype.
(syscall_entering_decode, syscall_entering_trace,
syscall_entering_finish, syscall_exiting_decode, syscall_exiting_trace,
syscall_exiting_finish): New prototypes.
* strace.c (trace_syscall): New static replacement for old trace_syscall.
* syscall.c (trace_syscall): Remove.
(trace_syscall_entering): Split into ...
(syscall_entering_decode, syscall_entering_trace,
syscall_entering_finish): ... new functions.
(trace_syscall_exiting): Split into ...
(syscall_exiting_decode, syscall_exiting_trace,
syscall_exiting_finish): ... new functions.

7 years agotests: guard against missing linux/netfilter/nfnetlink.h
Dmitry V. Levin [Mon, 5 Jun 2017 13:59:56 +0000 (13:59 +0000)]
tests: guard against missing linux/netfilter/nfnetlink.h

nfnetlink was introduced in linux by commit v2.6.14-rc1~1035^2~217,
add a guard for the case when system headers are not fresh enough.

* configure.ac (AC_CHECK_HEADERS): Add linux/netfilter/nfnetlink.h.
* tests/netlink_netfilter.c: Check for HAVE_LINUX_NETFILTER_NFNETLINK_H.