From 587d1d56630bd7e193ffe50834e57431454d1003 Mon Sep 17 00:00:00 2001 From: Eugene Syromyatnikov Date: Sun, 19 Aug 2018 21:33:26 +0200 Subject: [PATCH 042/293] netlink_smc_diag: decode SMC_DIAG_SHUTDOWN attribute value * xlat/sock_shutdown_flags.in: New file. * netlink_smc_diag.c: Include "xlat/sock_shutdown_flags.h". (decode_smc_diag_shutdown): New function. (smc_diag_msg_nla_decoders) <[SMC_DIAG_SHUTDOWN]>: Use decode_smc_diag_shutdown. * tests/nlattr_smc_diag_msg.c: Add checks for SMC_DIAG_SHUTDOWN. --- netlink_smc_diag.c | 17 ++++++++++++++++- xlat/sock_shutdown_flags.in | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 xlat/sock_shutdown_flags.in diff --git a/netlink_smc_diag.c b/netlink_smc_diag.c index b9293a9..0248712 100644 --- a/netlink_smc_diag.c +++ b/netlink_smc_diag.c @@ -49,6 +49,7 @@ # include "xlat/smc_diag_mode.h" # include "xlat/smc_link_group_roles.h" # include "xlat/smc_states.h" +# include "xlat/sock_shutdown_flags.h" DECL_NETLINK_DIAG_DECODER(decode_smc_diag_req) { @@ -149,6 +150,20 @@ decode_smc_diag_lgrinfo(struct tcb *const tcp, } static bool +decode_smc_diag_shutdown(struct tcb *const tcp, + const kernel_ulong_t addr, + const unsigned int len, + const void *const opaque_data) +{ + const struct decode_nla_xlat_opts opts = { + ARRSZ_PAIR(sock_shutdown_flags), "???_SHUTDOWN", + .size = 1, + }; + + return decode_nla_flags(tcp, addr, len, &opts); +} + +static bool decode_smc_diag_dmbinfo(struct tcb *const tcp, const kernel_ulong_t addr, const unsigned int len, @@ -201,7 +216,7 @@ decode_smc_diag_fallback(struct tcb *const tcp, static const nla_decoder_t smc_diag_msg_nla_decoders[] = { [SMC_DIAG_CONNINFO] = decode_smc_diag_conninfo, [SMC_DIAG_LGRINFO] = decode_smc_diag_lgrinfo, - [SMC_DIAG_SHUTDOWN] = decode_nla_u8, + [SMC_DIAG_SHUTDOWN] = decode_smc_diag_shutdown, [SMC_DIAG_DMBINFO] = decode_smc_diag_dmbinfo, [SMC_DIAG_FALLBACK] = decode_smc_diag_fallback, }; diff --git a/xlat/sock_shutdown_flags.in b/xlat/sock_shutdown_flags.in new file mode 100644 index 0000000..ff7d432 --- /dev/null +++ b/xlat/sock_shutdown_flags.in @@ -0,0 +1,2 @@ +RCV_SHUTDOWN 1 +SEND_SHUTDOWN 2 -- 1.7.12.4