fib_nh
struct fib_nh *fib_nh,
if (ldev->pf[i].netdev == fib_nh->fib_nh_dev)
struct fib_nh *fib_nh;
fib_nh = fib_work->fnh_info.fib_nh;
fib_work->fnh_info.fib_nh,
fib_nh->nh_parent);
fib_info_put(fib_work->fnh_info.fib_nh->nh_parent);
fib_info_hold(fib_work->fnh_info.fib_nh->nh_parent);
struct fib_nh *fib_nh;
nh->key.fib_nh->fib_nh_flags |= RTNH_F_OFFLOAD;
nh->key.fib_nh->fib_nh_flags &= ~RTNH_F_OFFLOAD;
const struct fib_nh *fib_nh,
struct net_device *dev = fib_nh->fib_nh_dev;
fib_nh->nh_parent->fib_type == RTN_UNICAST &&
struct fib_nh *fib_nh)
struct net_device *dev = fib_nh->fib_nh_dev;
nh->key.fib_nh = fib_nh;
nh->nh_weight = fib_nh->fib_nh_weight;
memcpy(&nh->gw_addr, &fib_nh->fib_nh_gw4, sizeof(fib_nh->fib_nh_gw4));
fib_nh->fib_nh_flags & RTNH_F_LINKDOWN) {
unsigned long event, struct fib_nh *fib_nh)
key.fib_nh = fib_nh;
mlxsw_sp_nexthop_type_init(mlxsw_sp, nh, fib_nh->fib_nh_dev);
const struct fib_nh *nh = fib_info_nh(fi, 0);
struct fib_nh *fib_nh;
fib_nh = fib_info_nh(nh_grp->ipv4.fi, i);
err = mlxsw_sp_nexthop4_init(mlxsw_sp, nh_grp, nh, fib_nh);
fib_work->fnh_info.fib_nh);
fib_info_put(fib_work->fnh_info.fib_nh->nh_parent);
fib_info_hold(fib_work->fnh_info.fib_nh->nh_parent);
const struct fib_nh *nh;
struct fib_nh *nh;
struct fib_nh *nh;
struct fib_nh *nh;
struct fib_nh fib_nh[] __counted_by(fib_nhs);
struct fib_nh *fib_nh;
int fib_check_nh(struct net *net, struct fib_nh *nh, u32 table, u8 scope,
int fib_nh_init(struct net *net, struct fib_nh *fib_nh,
void fib_nh_release(struct net *net, struct fib_nh *fib_nh);
struct fib_nh *nh;
nh = container_of(nhc, struct fib_nh, nh_common);
BUILD_BUG_ON(offsetof(struct fib_nh, nh_common) != 0);
return &fi->fib_nh[nhsel].nh_common;
static inline struct fib_nh *fib_info_nh(struct fib_info *fi, int nhsel)
return &fi->fib_nh[nhsel];
struct fib_nh fib_nh;
struct fib_nh;
static int fib_check_nh_v6_gw(struct net *net, struct fib_nh *nh,
static int fib_check_nh_v4_gw(struct net *net, struct fib_nh *nh, u32 table,
static int fib_check_nh_nongw(struct net *net, struct fib_nh *nh,
int fib_check_nh(struct net *net, struct fib_nh *nh, u32 table, u8 scope,
struct fib_nh *nh;
nh = container_of(nhc, struct fib_nh, nh_common);
struct fib_nh *nh;
nh = container_of(nhc, struct fib_nh, nh_common);
fi = kzalloc_flex(*fi, fib_nh, nhs);
err = fib_nh_init(net, fi->fib_nh, cfg, 1, extack);
struct fib_nh *nh = fi->fib_nh;
struct fib_nh *nh;
nh = container_of(nhc, struct fib_nh, nh_common);
static int call_fib_nh_notifiers(struct fib_nh *nh,
.fib_nh = nh,
struct fib_nh *nh;
struct fib_nh *nh;
struct fib_nh *nh;
void fib_nh_release(struct net *net, struct fib_nh *fib_nh)
static bool fib_good_nh(const struct fib_nh *nh)
if (fib_nh->nh_tclassid)
fib_nh_common_release(&fib_nh->nh_common);
const struct fib_nh *onh;
struct fib_nh *nh;
int nhsel; const struct fib_nh *nh; \
for (nhsel = 0, nh = (fi)->fib_nh; \
int fib_nh_init(struct net *net, struct fib_nh *nh,
int nhsel; struct fib_nh *nexthop_nh; \
for (nhsel = 0, nexthop_nh = (struct fib_nh *)((fi)->fib_nh); \
struct fib_nh *nh;
int nhsel; const struct fib_nh *nh = (fi)->fib_nh; \
struct fib_nh *nexthop_nh = (struct fib_nh *)((fi)->fib_nh); \
const struct fib_nh *nh,
struct fib_nh *nh;
if (nhi->fib_nh.fib_nh_gw_family)
static bool ipv4_good_nh(const struct fib_nh *nh)
return ipv4_good_nh(&nhi->fib_nh);
struct fib_nh *fib_nh = &nhi->fib_nh;
err = fib_nh_init(net, fib_nh, &fib_cfg, 1, extack);
fib_nh_release(net, fib_nh);
err = fib_check_nh(net, fib_nh, tb_id, 0, extack);
nh->nh_flags = fib_nh->fib_nh_flags;
fib_info_update_nhc_saddr(net, &fib_nh->nh_common,
!fib_nh->fib_nh_scope ? 0 : fib_nh->fib_nh_scope - 1);
fib_nh_release(net, fib_nh);
fib_nh_release(nh->net, &nhi->fib_nh);
struct fib_nh *fib_nh;
fib_nh = &nhi->fib_nh;
if (fib_nh->fib_nh_gw_family &&
nla_put_be32(skb, NHA_GATEWAY, fib_nh->fib_nh_gw4))
struct fib_nh *nh;
nh = container_of(nhc, struct fib_nh, nh_common);