mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 00:48:50 +00:00
mlxsw: spectrum_router: Break nexthop group entry validation to a separate function
The validation of a nexthop group entry is also necessary for resilient nexthop groups, so break the validation to a separate function to allow for code reuse in subsequent patches. Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Petr Machata <petrm@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
29017c6434
commit
40f5429fce
1 changed files with 25 additions and 11 deletions
|
@ -4296,6 +4296,29 @@ mlxsw_sp_nexthop_obj_single_validate(struct mlxsw_sp *mlxsw_sp,
|
|||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_nexthop_obj_group_entry_validate(struct mlxsw_sp *mlxsw_sp,
|
||||
const struct nh_notifier_single_info *nh,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = mlxsw_sp_nexthop_obj_single_validate(mlxsw_sp, nh, extack);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* Device only nexthops with an IPIP device are programmed as
|
||||
* encapsulating adjacency entries.
|
||||
*/
|
||||
if (!nh->gw_family && !nh->is_reject &&
|
||||
!mlxsw_sp_netdev_ipip_type(mlxsw_sp, nh->dev, NULL)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Nexthop group entry does not have a gateway");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_nexthop_obj_group_validate(struct mlxsw_sp *mlxsw_sp,
|
||||
const struct nh_notifier_grp_info *nh_grp,
|
||||
|
@ -4313,19 +4336,10 @@ mlxsw_sp_nexthop_obj_group_validate(struct mlxsw_sp *mlxsw_sp,
|
|||
int err;
|
||||
|
||||
nh = &nh_grp->nh_entries[i].nh;
|
||||
err = mlxsw_sp_nexthop_obj_single_validate(mlxsw_sp, nh,
|
||||
extack);
|
||||
err = mlxsw_sp_nexthop_obj_group_entry_validate(mlxsw_sp, nh,
|
||||
extack);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* Device only nexthops with an IPIP device are programmed as
|
||||
* encapsulating adjacency entries.
|
||||
*/
|
||||
if (!nh->gw_family && !nh->is_reject &&
|
||||
!mlxsw_sp_netdev_ipip_type(mlxsw_sp, nh->dev, NULL)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Nexthop group entry does not have a gateway");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue