struct xfrm_userpolicy_id {
	struct xfrm_selector       sel;                  /*     0    56 */
	__u32                      index;                /*    56     4 */
	__u8                       dir;                  /*    60     1 */

	/* size: 64, cachelines: 1 */
	/* padding: 3 */
};	/* definitions: 1 */

struct xfrm_userpolicy_info {
	struct xfrm_selector       sel;                  /*     0    56 */
	struct xfrm_lifetime_cfg   lft;                  /*    56    64 */
	/* --- cacheline 1 boundary (64 bytes) was 56 bytes ago --- */
	struct xfrm_lifetime_cur   curlft;               /*   120    32 */
	/* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */
	__u32                      priority;             /*   152     4 */
	__u32                      index;                /*   156     4 */
	__u8                       dir;                  /*   160     1 */
	__u8                       action;               /*   161     1 */
	__u8                       flags;                /*   162     1 */
	__u8                       share;                /*   163     1 */

	/* size: 164, cachelines: 3 */
	/* last cacheline: 36 bytes */
};	/* definitions: 1 */

struct xfrm_usersa_id {
	xfrm_address_t             daddr;                /*     0    16 */
	__be32                     spi;                  /*    16     4 */
	__u16                      family;               /*    20     2 */
	__u8                       proto;                /*    22     1 */

	/* size: 24, cachelines: 1 */
	/* padding: 1 */
	/* last cacheline: 24 bytes */
};	/* definitions: 1 */

struct xfrm_usersa_info {
	struct xfrm_selector       sel;                  /*     0    56 */
	struct xfrm_id             id;                   /*    56    24 */

	/* XXX last struct has 3 bytes of padding */

	/* --- cacheline 1 boundary (64 bytes) was 16 bytes ago --- */
	xfrm_address_t             saddr;                /*    80    16 */
	struct xfrm_lifetime_cfg   lft;                  /*    96    64 */
	/* --- cacheline 2 boundary (128 bytes) was 32 bytes ago --- */
	struct xfrm_lifetime_cur   curlft;               /*   160    32 */
	/* --- cacheline 3 boundary (192 bytes) --- */
	struct xfrm_stats          stats;                /*   192    12 */
	__u32                      seq;                  /*   204     4 */
	__u32                      reqid;                /*   208     4 */
	__u16                      family;               /*   212     2 */
	__u8                       mode;                 /*   214     1 */
	__u8                       replay_window;        /*   215     1 */
	__u8                       flags;                /*   216     1 */

	/* size: 220, cachelines: 4 */
	/* padding: 3 */
	/* paddings: 1, sum paddings: 3 */
	/* last cacheline: 28 bytes */
};	/* definitions: 1 */

struct xfrm_encap_tmpl {
	__u16                      encap_type;           /*     0     2 */
	__be16                     encap_sport;          /*     2     2 */
	__be16                     encap_dport;          /*     4     2 */

	/* XXX 2 bytes hole, try to pack */

	xfrm_address_t             encap_oa;             /*     8    16 */

	/* size: 24, cachelines: 1 */
	/* sum members: 22, holes: 1, sum holes: 2 */
	/* last cacheline: 24 bytes */
};	/* definitions: 1 */

struct xfrm_user_tmpl {
	struct xfrm_id             id;                   /*     0    24 */

	/* XXX last struct has 3 bytes of padding */

	__u16                      family;               /*    24     2 */

	/* XXX 2 bytes hole, try to pack */

	xfrm_address_t             saddr;                /*    28    16 */
	__u32                      reqid;                /*    44     4 */
	__u8                       mode;                 /*    48     1 */
	__u8                       share;                /*    49     1 */
	__u8                       optional;             /*    50     1 */

	/* XXX 1 byte hole, try to pack */

	__u32                      aalgos;               /*    52     4 */
	__u32                      ealgos;               /*    56     4 */
	__u32                      calgos;               /*    60     4 */
	/* --- cacheline 1 boundary (64 bytes) --- */

	/* size: 64, cachelines: 1 */
	/* sum members: 61, holes: 2, sum holes: 3 */
	/* paddings: 1, sum paddings: 3 */
};	/* definitions: 1 */

struct xfrm_stats {
	__u32                      replay_window;        /*     0     4 */
	__u32                      replay;               /*     4     4 */
	__u32                      integrity_failed;     /*     8     4 */

	/* size: 12, cachelines: 1 */
	/* last cacheline: 12 bytes */
};	/* definitions: 1 */

struct xfrm_algo {
	char                       alg_name[64];         /*     0    64 */
	/* --- cacheline 1 boundary (64 bytes) --- */
	unsigned int               alg_key_len;          /*    64     4 */
	char                       alg_key[0];           /*    68     0 */

	/* size: 68, cachelines: 2 */
	/* last cacheline: 4 bytes */
};	/* definitions: 1 */

struct xfrm_lifetime_cur {
	__u64                      bytes;                /*     0     8 */
	__u64                      packets;              /*     8     8 */
	__u64                      add_time;             /*    16     8 */
	__u64                      use_time;             /*    24     8 */

	/* size: 32, cachelines: 1 */
	/* last cacheline: 32 bytes */
};	/* definitions: 1 */

struct xfrm_lifetime_cfg {
	__u64                      soft_byte_limit;      /*     0     8 */
	__u64                      hard_byte_limit;      /*     8     8 */
	__u64                      soft_packet_limit;    /*    16     8 */
	__u64                      hard_packet_limit;    /*    24     8 */
	__u64                      soft_add_expires_seconds; /*    32     8 */
	__u64                      hard_add_expires_seconds; /*    40     8 */
	__u64                      soft_use_expires_seconds; /*    48     8 */
	__u64                      hard_use_expires_seconds; /*    56     8 */
	/* --- cacheline 1 boundary (64 bytes) --- */

	/* size: 64, cachelines: 1 */
};	/* definitions: 1 */

struct xfrm_selector {
	xfrm_address_t             daddr;                /*     0    16 */
	xfrm_address_t             saddr;                /*    16    16 */
	__be16                     dport;                /*    32     2 */
	__be16                     dport_mask;           /*    34     2 */
	__be16                     sport;                /*    36     2 */
	__be16                     sport_mask;           /*    38     2 */
	__u16                      family;               /*    40     2 */
	__u8                       prefixlen_d;          /*    42     1 */
	__u8                       prefixlen_s;          /*    43     1 */
	__u8                       proto;                /*    44     1 */

	/* XXX 3 bytes hole, try to pack */

	int                        ifindex;              /*    48     4 */
	uid_t                      user;                 /*    52     4 */

	/* size: 56, cachelines: 1 */
	/* sum members: 53, holes: 1, sum holes: 3 */
	/* last cacheline: 56 bytes */
};	/* definitions: 1 */

struct xfrm_id {
	xfrm_address_t             daddr;                /*     0    16 */
	__be32                     spi;                  /*    16     4 */
	__u8                       proto;                /*    20     1 */

	/* size: 24, cachelines: 1 */
	/* padding: 3 */
	/* last cacheline: 24 bytes */
};	/* definitions: 1 */

struct rtattr {
	short unsigned int         rta_len;              /*     0     2 */
	short unsigned int         rta_type;             /*     2     2 */

	/* size: 4, cachelines: 1 */
	/* last cacheline: 4 bytes */
};	/* definitions: 1 */

struct nlmsgerr {
	int                        error;                /*     0     4 */
	struct nlmsghdr            msg;                  /*     4    16 */

	/* size: 20, cachelines: 1 */
	/* last cacheline: 20 bytes */
};	/* definitions: 1 */

struct nlmsghdr {
	__u32                      nlmsg_len;            /*     0     4 */
	__u16                      nlmsg_type;           /*     4     2 */
	__u16                      nlmsg_flags;          /*     6     2 */
	__u32                      nlmsg_seq;            /*     8     4 */
	__u32                      nlmsg_pid;            /*    12     4 */

	/* size: 16, cachelines: 1 */
	/* last cacheline: 16 bytes */
};	/* definitions: 1 */

struct sockaddr_nl {
	sa_family_t                nl_family;            /*     0     2 */
	short unsigned int         nl_pad;               /*     2     2 */
	__u32                      nl_pid;               /*     4     4 */
	__u32                      nl_groups;            /*     8     4 */

	/* size: 12, cachelines: 1 */
	/* last cacheline: 12 bytes */
};	/* definitions: 1 */

struct sockaddr_in6 {
	sa_family_t                sin6_family;          /*     0     2 */
	in_port_t                  sin6_port;            /*     2     2 */
	uint32_t                   sin6_flowinfo;        /*     4     4 */
	struct in6_addr            sin6_addr;            /*     8    16 */
	uint32_t                   sin6_scope_id;        /*    24     4 */

	/* size: 28, cachelines: 1 */
	/* last cacheline: 28 bytes */
};	/* definitions: 1 */

struct sockaddr_in {
	sa_family_t                sin_family;           /*     0     2 */
	in_port_t                  sin_port;             /*     2     2 */
	struct in_addr             sin_addr;             /*     4     4 */
	unsigned char              sin_zero[8];          /*     8     8 */

	/* size: 16, cachelines: 1 */
	/* last cacheline: 16 bytes */
};	/* definitions: 1 */

struct in6_addr {
	union {
		uint8_t            u6_addr8[16];         /*          16 */
		uint16_t           u6_addr16[8];         /*          16 */
		uint32_t           u6_addr32[4];         /*          16 */
	} in6_u;                                         /*     0    16 */

	/* size: 16, cachelines: 1 */
	/* last cacheline: 16 bytes */
};	/* definitions: 1 */

struct in_addr {
	in_addr_t                  s_addr;               /*     0     4 */

	/* size: 4, cachelines: 1 */
	/* last cacheline: 4 bytes */
};	/* definitions: 1 */

struct msghdr {
	void *                     msg_name;             /*     0     4 */
	socklen_t                  msg_namelen;          /*     4     4 */
	struct iovec *             msg_iov;              /*     8     4 */
	size_t                     msg_iovlen;           /*    12     4 */
	void *                     msg_control;          /*    16     4 */
	size_t                     msg_controllen;       /*    20     4 */
	int                        msg_flags;            /*    24     4 */

	/* size: 28, cachelines: 1 */
	/* last cacheline: 28 bytes */
};	/* definitions: 1 */

struct sockaddr {
	sa_family_t                sa_family;            /*     0     2 */
	char                       sa_data[14];          /*     2    14 */

	/* size: 16, cachelines: 1 */
	/* last cacheline: 16 bytes */
};	/* definitions: 1 */

struct iovec {
	void *                     iov_base;             /*     0     4 */
	size_t                     iov_len;              /*     4     4 */

	/* size: 8, cachelines: 1 */
	/* last cacheline: 8 bytes */
};	/* definitions: 1 */

struct _IO_marker {
	struct _IO_marker *        _next;                /*     0     4 */
	struct _IO_FILE *          _sbuf;                /*     4     4 */
	int                        _pos;                 /*     8     4 */

	/* size: 12, cachelines: 1 */
	/* last cacheline: 12 bytes */
};	/* definitions: 1 */

struct _IO_FILE {
	int                        _flags;               /*     0     4 */
	char *                     _IO_read_ptr;         /*     4     4 */
	char *                     _IO_read_end;         /*     8     4 */
	char *                     _IO_read_base;        /*    12     4 */
	char *                     _IO_write_base;       /*    16     4 */
	char *                     _IO_write_ptr;        /*    20     4 */
	char *                     _IO_write_end;        /*    24     4 */
	char *                     _IO_buf_base;         /*    28     4 */
	char *                     _IO_buf_end;          /*    32     4 */
	char *                     _IO_save_base;        /*    36     4 */
	char *                     _IO_backup_base;      /*    40     4 */
	char *                     _IO_save_end;         /*    44     4 */
	struct _IO_marker *        _markers;             /*    48     4 */
	struct _IO_FILE *          _chain;               /*    52     4 */
	int                        _fileno;              /*    56     4 */
	int                        _flags2;              /*    60     4 */
	/* --- cacheline 1 boundary (64 bytes) --- */
	__off_t                    _old_offset;          /*    64     4 */
	short unsigned int         _cur_column;          /*    68     2 */
	signed char                _vtable_offset;       /*    70     1 */
	char                       _shortbuf[1];         /*    71     1 */
	_IO_lock_t *               _lock;                /*    72     4 */
	__off64_t                  _offset;              /*    76     8 */
	void *                     __pad1;               /*    84     4 */
	void *                     __pad2;               /*    88     4 */
	void *                     __pad3;               /*    92     4 */
	void *                     __pad4;               /*    96     4 */
	size_t                     __pad5;               /*   100     4 */
	int                        _mode;                /*   104     4 */
	char                       _unused2[40];         /*   108    40 */
	/* --- cacheline 2 boundary (128 bytes) was 20 bytes ago --- */

	/* size: 148, cachelines: 3 */
	/* last cacheline: 20 bytes */
};	/* definitions: 1 */