(root)/
strace-6.5/
src/
rtnl_nsid.c
       1  /*
       2   * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
       3   * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
       4   * Copyright (c) 2016-2021 The strace developers.
       5   * All rights reserved.
       6   *
       7   * SPDX-License-Identifier: LGPL-2.1-or-later
       8   */
       9  
      10  #include "defs.h"
      11  #include "netlink_route.h"
      12  #include "nlattr.h"
      13  
      14  #include "netlink.h"
      15  #include <linux/rtnetlink.h>
      16  
      17  #include "xlat/rtnl_nsid_attrs.h"
      18  
      19  static const nla_decoder_t nsid_nla_decoders[] = {
      20  	[NETNSA_NSID]		= decode_nla_s32,
      21  	[NETNSA_PID]		= decode_nla_u32,
      22  	[NETNSA_FD]		= decode_nla_fd,
      23  	[NETNSA_TARGET_NSID]	= decode_nla_s32,
      24  	[NETNSA_CURRENT_NSID]	= decode_nla_s32
      25  };
      26  
      27  DECL_NETLINK_ROUTE_DECODER(decode_nsid)
      28  {
      29  	struct rtgenmsg rtgenmsg = { .rtgen_family = family };
      30  
      31  	tprint_struct_begin();
      32  	PRINT_FIELD_XVAL(rtgenmsg, rtgen_family, addrfams, "AF_???");
      33  	tprint_struct_end();
      34  
      35  	const size_t offset = NLMSG_ALIGN(sizeof(rtgenmsg));
      36  	if (len > offset) {
      37  		tprint_array_next();
      38  		decode_nlattr(tcp, addr + offset, len - offset,
      39  			      rtnl_nsid_attrs, "NETNSA_???",
      40  			      nsid_nla_decoders,
      41  			      ARRAY_SIZE(nsid_nla_decoders), NULL);
      42  	}
      43  }