rt_metrics
int rtmsg_nl(int, int, int, int, struct sockaddr_storage *, struct rt_metrics *);
errno = rtmsg_nl(cmd, flags, fib, rtm_addrs, so, &rt_metrics);
rtm.rtm_rmx = rt_metrics;
#define caseof(x, y, z) case x: valp = &rt_metrics.z; flag = y; break
rt_metrics.rmx_locks |= flag;
static struct rt_metrics rt_metrics;
struct sockaddr_storage *so, struct rt_metrics *rt_metrics)
if (rt_metrics->rmx_mtu > 0) {
snl_add_msg_attr_u32(&nw, RTAX_MTU, rt_metrics->rmx_mtu);
if (rt_metrics->rmx_expire > 0)
snl_add_msg_attr_u32(&nw, NL_RTA_EXPIRES, rt_metrics->rmx_expire);
if (rt_metrics->rmx_weight > 0)
snl_add_msg_attr_u32(&nw, NL_RTA_WEIGHT, rt_metrics->rmx_weight);
struct sockaddr_storage *so, struct rt_metrics *rt_metrics)
int error = rtmsg_nl_int(&h, cmd, rtm_flags, fib, rtm_addrs, so, rt_metrics);
struct rt_metrics *rt_metrics);
struct rt_metrics rmx = {
struct rt_metrics rtm_rmx; /* metrics themselves */
struct rt_metrics *rti_rmx; /* Pointer to route metrics */
struct rt_metrics *out)
const struct nhop_object *nh, struct rt_metrics *out);