mirror of https://gitee.com/openkylin/linux.git
libnl: nla_put_msecs(): align on a 64-bit area
nla_data() is now aligned on a 64-bit area. Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
756a2f59b7
commit
2175d87cc3
|
@ -106,7 +106,8 @@
|
||||||
* padattr) add s64 attribute to skb
|
* padattr) add s64 attribute to skb
|
||||||
* nla_put_string(skb, type, str) add string attribute to skb
|
* nla_put_string(skb, type, str) add string attribute to skb
|
||||||
* nla_put_flag(skb, type) add flag attribute to skb
|
* nla_put_flag(skb, type) add flag attribute to skb
|
||||||
* nla_put_msecs(skb, type, jiffies) add msecs attribute to skb
|
* nla_put_msecs(skb, type, jiffies,
|
||||||
|
* padattr) add msecs attribute to skb
|
||||||
* nla_put_in_addr(skb, type, addr) add IPv4 address attribute to skb
|
* nla_put_in_addr(skb, type, addr) add IPv4 address attribute to skb
|
||||||
* nla_put_in6_addr(skb, type, addr) add IPv6 address attribute to skb
|
* nla_put_in6_addr(skb, type, addr) add IPv6 address attribute to skb
|
||||||
*
|
*
|
||||||
|
@ -965,16 +966,18 @@ static inline int nla_put_flag(struct sk_buff *skb, int attrtype)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nla_put_msecs - Add a msecs netlink attribute to a socket buffer
|
* nla_put_msecs - Add a msecs netlink attribute to a skb and align it
|
||||||
* @skb: socket buffer to add attribute to
|
* @skb: socket buffer to add attribute to
|
||||||
* @attrtype: attribute type
|
* @attrtype: attribute type
|
||||||
* @njiffies: number of jiffies to convert to msecs
|
* @njiffies: number of jiffies to convert to msecs
|
||||||
|
* @padattr: attribute type for the padding
|
||||||
*/
|
*/
|
||||||
static inline int nla_put_msecs(struct sk_buff *skb, int attrtype,
|
static inline int nla_put_msecs(struct sk_buff *skb, int attrtype,
|
||||||
unsigned long njiffies)
|
unsigned long njiffies, int padattr)
|
||||||
{
|
{
|
||||||
u64 tmp = jiffies_to_msecs(njiffies);
|
u64 tmp = jiffies_to_msecs(njiffies);
|
||||||
return nla_put(skb, attrtype, sizeof(u64), &tmp);
|
|
||||||
|
return nla_put_64bit(skb, attrtype, sizeof(u64), &tmp, padattr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -126,6 +126,7 @@ enum {
|
||||||
L2TP_ATTR_IP6_DADDR, /* struct in6_addr */
|
L2TP_ATTR_IP6_DADDR, /* struct in6_addr */
|
||||||
L2TP_ATTR_UDP_ZERO_CSUM6_TX, /* u8 */
|
L2TP_ATTR_UDP_ZERO_CSUM6_TX, /* u8 */
|
||||||
L2TP_ATTR_UDP_ZERO_CSUM6_RX, /* u8 */
|
L2TP_ATTR_UDP_ZERO_CSUM6_RX, /* u8 */
|
||||||
|
L2TP_ATTR_PAD,
|
||||||
__L2TP_ATTR_MAX,
|
__L2TP_ATTR_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -128,6 +128,7 @@ enum {
|
||||||
NDTPA_LOCKTIME, /* u64, msecs */
|
NDTPA_LOCKTIME, /* u64, msecs */
|
||||||
NDTPA_QUEUE_LENBYTES, /* u32 */
|
NDTPA_QUEUE_LENBYTES, /* u32 */
|
||||||
NDTPA_MCAST_REPROBES, /* u32 */
|
NDTPA_MCAST_REPROBES, /* u32 */
|
||||||
|
NDTPA_PAD,
|
||||||
__NDTPA_MAX
|
__NDTPA_MAX
|
||||||
};
|
};
|
||||||
#define NDTPA_MAX (__NDTPA_MAX - 1)
|
#define NDTPA_MAX (__NDTPA_MAX - 1)
|
||||||
|
@ -160,6 +161,7 @@ enum {
|
||||||
NDTA_PARMS, /* nested TLV NDTPA_* */
|
NDTA_PARMS, /* nested TLV NDTPA_* */
|
||||||
NDTA_STATS, /* struct ndt_stats, read-only */
|
NDTA_STATS, /* struct ndt_stats, read-only */
|
||||||
NDTA_GC_INTERVAL, /* u64, msecs */
|
NDTA_GC_INTERVAL, /* u64, msecs */
|
||||||
|
NDTA_PAD,
|
||||||
__NDTA_MAX
|
__NDTA_MAX
|
||||||
};
|
};
|
||||||
#define NDTA_MAX (__NDTA_MAX - 1)
|
#define NDTA_MAX (__NDTA_MAX - 1)
|
||||||
|
|
|
@ -40,6 +40,7 @@ enum {
|
||||||
TCP_METRICS_ATTR_FOPEN_COOKIE, /* binary */
|
TCP_METRICS_ATTR_FOPEN_COOKIE, /* binary */
|
||||||
TCP_METRICS_ATTR_SADDR_IPV4, /* u32 */
|
TCP_METRICS_ATTR_SADDR_IPV4, /* u32 */
|
||||||
TCP_METRICS_ATTR_SADDR_IPV6, /* binary */
|
TCP_METRICS_ATTR_SADDR_IPV6, /* binary */
|
||||||
|
TCP_METRICS_ATTR_PAD,
|
||||||
|
|
||||||
__TCP_METRICS_ATTR_MAX,
|
__TCP_METRICS_ATTR_MAX,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1763,21 +1763,22 @@ static int neightbl_fill_parms(struct sk_buff *skb, struct neigh_parms *parms)
|
||||||
NEIGH_VAR(parms, MCAST_PROBES)) ||
|
NEIGH_VAR(parms, MCAST_PROBES)) ||
|
||||||
nla_put_u32(skb, NDTPA_MCAST_REPROBES,
|
nla_put_u32(skb, NDTPA_MCAST_REPROBES,
|
||||||
NEIGH_VAR(parms, MCAST_REPROBES)) ||
|
NEIGH_VAR(parms, MCAST_REPROBES)) ||
|
||||||
nla_put_msecs(skb, NDTPA_REACHABLE_TIME, parms->reachable_time) ||
|
nla_put_msecs(skb, NDTPA_REACHABLE_TIME, parms->reachable_time,
|
||||||
|
NDTPA_PAD) ||
|
||||||
nla_put_msecs(skb, NDTPA_BASE_REACHABLE_TIME,
|
nla_put_msecs(skb, NDTPA_BASE_REACHABLE_TIME,
|
||||||
NEIGH_VAR(parms, BASE_REACHABLE_TIME)) ||
|
NEIGH_VAR(parms, BASE_REACHABLE_TIME), NDTPA_PAD) ||
|
||||||
nla_put_msecs(skb, NDTPA_GC_STALETIME,
|
nla_put_msecs(skb, NDTPA_GC_STALETIME,
|
||||||
NEIGH_VAR(parms, GC_STALETIME)) ||
|
NEIGH_VAR(parms, GC_STALETIME), NDTPA_PAD) ||
|
||||||
nla_put_msecs(skb, NDTPA_DELAY_PROBE_TIME,
|
nla_put_msecs(skb, NDTPA_DELAY_PROBE_TIME,
|
||||||
NEIGH_VAR(parms, DELAY_PROBE_TIME)) ||
|
NEIGH_VAR(parms, DELAY_PROBE_TIME), NDTPA_PAD) ||
|
||||||
nla_put_msecs(skb, NDTPA_RETRANS_TIME,
|
nla_put_msecs(skb, NDTPA_RETRANS_TIME,
|
||||||
NEIGH_VAR(parms, RETRANS_TIME)) ||
|
NEIGH_VAR(parms, RETRANS_TIME), NDTPA_PAD) ||
|
||||||
nla_put_msecs(skb, NDTPA_ANYCAST_DELAY,
|
nla_put_msecs(skb, NDTPA_ANYCAST_DELAY,
|
||||||
NEIGH_VAR(parms, ANYCAST_DELAY)) ||
|
NEIGH_VAR(parms, ANYCAST_DELAY), NDTPA_PAD) ||
|
||||||
nla_put_msecs(skb, NDTPA_PROXY_DELAY,
|
nla_put_msecs(skb, NDTPA_PROXY_DELAY,
|
||||||
NEIGH_VAR(parms, PROXY_DELAY)) ||
|
NEIGH_VAR(parms, PROXY_DELAY), NDTPA_PAD) ||
|
||||||
nla_put_msecs(skb, NDTPA_LOCKTIME,
|
nla_put_msecs(skb, NDTPA_LOCKTIME,
|
||||||
NEIGH_VAR(parms, LOCKTIME)))
|
NEIGH_VAR(parms, LOCKTIME), NDTPA_PAD))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
return nla_nest_end(skb, nest);
|
return nla_nest_end(skb, nest);
|
||||||
|
|
||||||
|
@ -1804,7 +1805,7 @@ static int neightbl_fill_info(struct sk_buff *skb, struct neigh_table *tbl,
|
||||||
ndtmsg->ndtm_pad2 = 0;
|
ndtmsg->ndtm_pad2 = 0;
|
||||||
|
|
||||||
if (nla_put_string(skb, NDTA_NAME, tbl->id) ||
|
if (nla_put_string(skb, NDTA_NAME, tbl->id) ||
|
||||||
nla_put_msecs(skb, NDTA_GC_INTERVAL, tbl->gc_interval) ||
|
nla_put_msecs(skb, NDTA_GC_INTERVAL, tbl->gc_interval, NDTA_PAD) ||
|
||||||
nla_put_u32(skb, NDTA_THRESH1, tbl->gc_thresh1) ||
|
nla_put_u32(skb, NDTA_THRESH1, tbl->gc_thresh1) ||
|
||||||
nla_put_u32(skb, NDTA_THRESH2, tbl->gc_thresh2) ||
|
nla_put_u32(skb, NDTA_THRESH2, tbl->gc_thresh2) ||
|
||||||
nla_put_u32(skb, NDTA_THRESH3, tbl->gc_thresh3))
|
nla_put_u32(skb, NDTA_THRESH3, tbl->gc_thresh3))
|
||||||
|
|
|
@ -800,7 +800,8 @@ static int tcp_metrics_fill_info(struct sk_buff *msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nla_put_msecs(msg, TCP_METRICS_ATTR_AGE,
|
if (nla_put_msecs(msg, TCP_METRICS_ATTR_AGE,
|
||||||
jiffies - tm->tcpm_stamp) < 0)
|
jiffies - tm->tcpm_stamp,
|
||||||
|
TCP_METRICS_ATTR_PAD) < 0)
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
if (tm->tcpm_ts_stamp) {
|
if (tm->tcpm_ts_stamp) {
|
||||||
if (nla_put_s32(msg, TCP_METRICS_ATTR_TW_TS_STAMP,
|
if (nla_put_s32(msg, TCP_METRICS_ATTR_TW_TS_STAMP,
|
||||||
|
@ -864,7 +865,8 @@ static int tcp_metrics_fill_info(struct sk_buff *msg,
|
||||||
(nla_put_u16(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROPS,
|
(nla_put_u16(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROPS,
|
||||||
tfom->syn_loss) < 0 ||
|
tfom->syn_loss) < 0 ||
|
||||||
nla_put_msecs(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,
|
nla_put_msecs(msg, TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS,
|
||||||
jiffies - tfom->last_syn_loss) < 0))
|
jiffies - tfom->last_syn_loss,
|
||||||
|
TCP_METRICS_ATTR_PAD) < 0))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
if (tfom->cookie.len > 0 &&
|
if (tfom->cookie.len > 0 &&
|
||||||
nla_put(msg, TCP_METRICS_ATTR_FOPEN_COOKIE,
|
nla_put(msg, TCP_METRICS_ATTR_FOPEN_COOKIE,
|
||||||
|
|
|
@ -746,7 +746,8 @@ static int l2tp_nl_session_send(struct sk_buff *skb, u32 portid, u32 seq, int fl
|
||||||
nla_put_u8(skb, L2TP_ATTR_USING_IPSEC, 1)) ||
|
nla_put_u8(skb, L2TP_ATTR_USING_IPSEC, 1)) ||
|
||||||
#endif
|
#endif
|
||||||
(session->reorder_timeout &&
|
(session->reorder_timeout &&
|
||||||
nla_put_msecs(skb, L2TP_ATTR_RECV_TIMEOUT, session->reorder_timeout)))
|
nla_put_msecs(skb, L2TP_ATTR_RECV_TIMEOUT,
|
||||||
|
session->reorder_timeout, L2TP_ATTR_PAD)))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
nest = nla_nest_start(skb, L2TP_ATTR_STATS);
|
nest = nla_nest_start(skb, L2TP_ATTR_STATS);
|
||||||
|
|
Loading…
Reference in New Issue