rtnexthop
struct rtnexthop *fc_mp;
static inline struct rtnexthop *rtnh_next(const struct rtnexthop *rtnh,
return (struct rtnexthop *) ((char *) rtnh + totlen);
static inline struct nlattr *rtnh_attrs(const struct rtnexthop *rtnh)
static inline int rtnh_attrlen(const struct rtnexthop *rtnh)
static inline int rtnh_ok(const struct rtnexthop *rtnh, int remaining)
#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
struct rtnexthop *rtnh = (struct rtnexthop *)attr;
[RTA_MULTIPATH] = { .len = sizeof(struct rtnexthop) },
struct rtnexthop *rtnh;
size_t nhsize = nla_total_size(sizeof(struct rtnexthop));
static int fib_count_nexthops(struct rtnexthop *rtnh, int remaining,
static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh,
static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh,
struct rtnexthop *rtnh;
+ maxvif * NLA_ALIGN(sizeof(struct rtnexthop))
[RTA_MULTIPATH] = { .len = sizeof(struct rtnexthop) },
struct rtnexthop *rtnh = nla_data(nla);
struct rtnexthop *nhp;
+ maxvif * NLA_ALIGN(sizeof(struct rtnexthop))
[RTA_MULTIPATH] = { .len = sizeof(struct rtnexthop) },
struct rtnexthop *rtnh;
rtnh = (struct rtnexthop *)cfg->fc_mp;
struct rtnexthop *rtnh;
rtnh = (struct rtnexthop *)cfg->fc_mp;
struct rtnexthop *rtnh;
rtnh = (struct rtnexthop *)cfg->fc_mp;
+ NLA_ALIGN(sizeof(struct rtnexthop))
struct rtnexthop *rtnh;
nhsize += nla_total_size(sizeof(struct rtnexthop));
struct rtnexthop *rc_mp;
static u8 mpls_count_nexthops(struct rtnexthop *rtnh, int len,
struct rtnexthop *rtnh = cfg->rc_mp;
#define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && \
#define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
#define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))