forked from Minki/linux
lwtunnel: remove device arg to lwtunnel_build_state
Nothing about lwt state requires a device reference, so remove the input argument. Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6ad20165d3
commit
30357d7d8a
@ -33,7 +33,7 @@ struct lwtunnel_state {
|
||||
};
|
||||
|
||||
struct lwtunnel_encap_ops {
|
||||
int (*build_state)(struct net_device *dev, struct nlattr *encap,
|
||||
int (*build_state)(struct nlattr *encap,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **ts);
|
||||
void (*destroy_state)(struct lwtunnel_state *lws);
|
||||
@ -109,7 +109,7 @@ int lwtunnel_encap_del_ops(const struct lwtunnel_encap_ops *op,
|
||||
unsigned int num);
|
||||
int lwtunnel_valid_encap_type(u16 encap_type);
|
||||
int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int len);
|
||||
int lwtunnel_build_state(struct net_device *dev, u16 encap_type,
|
||||
int lwtunnel_build_state(u16 encap_type,
|
||||
struct nlattr *encap,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **lws);
|
||||
@ -181,7 +181,7 @@ static inline int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int len)
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline int lwtunnel_build_state(struct net_device *dev, u16 encap_type,
|
||||
static inline int lwtunnel_build_state(u16 encap_type,
|
||||
struct nlattr *encap,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **lws)
|
||||
|
@ -237,7 +237,7 @@ static const struct nla_policy bpf_nl_policy[LWT_BPF_MAX + 1] = {
|
||||
[LWT_BPF_XMIT_HEADROOM] = { .type = NLA_U32 },
|
||||
};
|
||||
|
||||
static int bpf_build_state(struct net_device *dev, struct nlattr *nla,
|
||||
static int bpf_build_state(struct nlattr *nla,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **ts)
|
||||
{
|
||||
|
@ -101,7 +101,7 @@ int lwtunnel_encap_del_ops(const struct lwtunnel_encap_ops *ops,
|
||||
}
|
||||
EXPORT_SYMBOL(lwtunnel_encap_del_ops);
|
||||
|
||||
int lwtunnel_build_state(struct net_device *dev, u16 encap_type,
|
||||
int lwtunnel_build_state(u16 encap_type,
|
||||
struct nlattr *encap, unsigned int family,
|
||||
const void *cfg, struct lwtunnel_state **lws)
|
||||
{
|
||||
@ -116,7 +116,7 @@ int lwtunnel_build_state(struct net_device *dev, u16 encap_type,
|
||||
rcu_read_lock();
|
||||
ops = rcu_dereference(lwtun_encaps[encap_type]);
|
||||
if (likely(ops && ops->build_state && try_module_get(ops->owner))) {
|
||||
ret = ops->build_state(dev, encap, family, cfg, lws);
|
||||
ret = ops->build_state(encap, family, cfg, lws);
|
||||
if (ret)
|
||||
module_put(ops->owner);
|
||||
}
|
||||
|
@ -471,7 +471,6 @@ static int fib_count_nexthops(struct rtnexthop *rtnh, int remaining)
|
||||
static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh,
|
||||
int remaining, struct fib_config *cfg)
|
||||
{
|
||||
struct net *net = cfg->fc_nlinfo.nl_net;
|
||||
int ret;
|
||||
|
||||
change_nexthops(fi) {
|
||||
@ -503,16 +502,14 @@ static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh,
|
||||
nla = nla_find(attrs, attrlen, RTA_ENCAP);
|
||||
if (nla) {
|
||||
struct lwtunnel_state *lwtstate;
|
||||
struct net_device *dev = NULL;
|
||||
struct nlattr *nla_entype;
|
||||
|
||||
nla_entype = nla_find(attrs, attrlen,
|
||||
RTA_ENCAP_TYPE);
|
||||
if (!nla_entype)
|
||||
goto err_inval;
|
||||
if (cfg->fc_oif)
|
||||
dev = __dev_get_by_index(net, cfg->fc_oif);
|
||||
ret = lwtunnel_build_state(dev, nla_get_u16(
|
||||
|
||||
ret = lwtunnel_build_state(nla_get_u16(
|
||||
nla_entype),
|
||||
nla, AF_INET, cfg,
|
||||
&lwtstate);
|
||||
@ -597,21 +594,18 @@ static inline void fib_add_weight(struct fib_info *fi,
|
||||
|
||||
#endif /* CONFIG_IP_ROUTE_MULTIPATH */
|
||||
|
||||
static int fib_encap_match(struct net *net, u16 encap_type,
|
||||
static int fib_encap_match(u16 encap_type,
|
||||
struct nlattr *encap,
|
||||
int oif, const struct fib_nh *nh,
|
||||
const struct fib_nh *nh,
|
||||
const struct fib_config *cfg)
|
||||
{
|
||||
struct lwtunnel_state *lwtstate;
|
||||
struct net_device *dev = NULL;
|
||||
int ret, result = 0;
|
||||
|
||||
if (encap_type == LWTUNNEL_ENCAP_NONE)
|
||||
return 0;
|
||||
|
||||
if (oif)
|
||||
dev = __dev_get_by_index(net, oif);
|
||||
ret = lwtunnel_build_state(dev, encap_type, encap,
|
||||
ret = lwtunnel_build_state(encap_type, encap,
|
||||
AF_INET, cfg, &lwtstate);
|
||||
if (!ret) {
|
||||
result = lwtunnel_cmp_encap(lwtstate, nh->nh_lwtstate);
|
||||
@ -623,7 +617,6 @@ static int fib_encap_match(struct net *net, u16 encap_type,
|
||||
|
||||
int fib_nh_match(struct fib_config *cfg, struct fib_info *fi)
|
||||
{
|
||||
struct net *net = cfg->fc_nlinfo.nl_net;
|
||||
#ifdef CONFIG_IP_ROUTE_MULTIPATH
|
||||
struct rtnexthop *rtnh;
|
||||
int remaining;
|
||||
@ -634,9 +627,8 @@ int fib_nh_match(struct fib_config *cfg, struct fib_info *fi)
|
||||
|
||||
if (cfg->fc_oif || cfg->fc_gw) {
|
||||
if (cfg->fc_encap) {
|
||||
if (fib_encap_match(net, cfg->fc_encap_type,
|
||||
cfg->fc_encap, cfg->fc_oif,
|
||||
fi->fib_nh, cfg))
|
||||
if (fib_encap_match(cfg->fc_encap_type,
|
||||
cfg->fc_encap, fi->fib_nh, cfg))
|
||||
return 1;
|
||||
}
|
||||
if ((!cfg->fc_oif || cfg->fc_oif == fi->fib_nh->nh_oif) &&
|
||||
@ -1093,13 +1085,10 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
|
||||
|
||||
if (cfg->fc_encap) {
|
||||
struct lwtunnel_state *lwtstate;
|
||||
struct net_device *dev = NULL;
|
||||
|
||||
if (cfg->fc_encap_type == LWTUNNEL_ENCAP_NONE)
|
||||
goto err_inval;
|
||||
if (cfg->fc_oif)
|
||||
dev = __dev_get_by_index(net, cfg->fc_oif);
|
||||
err = lwtunnel_build_state(dev, cfg->fc_encap_type,
|
||||
err = lwtunnel_build_state(cfg->fc_encap_type,
|
||||
cfg->fc_encap, AF_INET, cfg,
|
||||
&lwtstate);
|
||||
if (err)
|
||||
|
@ -226,7 +226,7 @@ static const struct nla_policy ip_tun_policy[LWTUNNEL_IP_MAX + 1] = {
|
||||
[LWTUNNEL_IP_FLAGS] = { .type = NLA_U16 },
|
||||
};
|
||||
|
||||
static int ip_tun_build_state(struct net_device *dev, struct nlattr *attr,
|
||||
static int ip_tun_build_state(struct nlattr *attr,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **ts)
|
||||
{
|
||||
@ -323,7 +323,7 @@ static const struct nla_policy ip6_tun_policy[LWTUNNEL_IP6_MAX + 1] = {
|
||||
[LWTUNNEL_IP6_FLAGS] = { .type = NLA_U16 },
|
||||
};
|
||||
|
||||
static int ip6_tun_build_state(struct net_device *dev, struct nlattr *attr,
|
||||
static int ip6_tun_build_state(struct nlattr *attr,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **ts)
|
||||
{
|
||||
|
@ -115,7 +115,7 @@ static const struct nla_policy ila_nl_policy[ILA_ATTR_MAX + 1] = {
|
||||
[ILA_ATTR_CSUM_MODE] = { .type = NLA_U8, },
|
||||
};
|
||||
|
||||
static int ila_build_state(struct net_device *dev, struct nlattr *nla,
|
||||
static int ila_build_state(struct nlattr *nla,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **ts)
|
||||
{
|
||||
|
@ -1897,7 +1897,7 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg)
|
||||
if (cfg->fc_encap) {
|
||||
struct lwtunnel_state *lwtstate;
|
||||
|
||||
err = lwtunnel_build_state(dev, cfg->fc_encap_type,
|
||||
err = lwtunnel_build_state(cfg->fc_encap_type,
|
||||
cfg->fc_encap, AF_INET6, cfg,
|
||||
&lwtstate);
|
||||
if (err)
|
||||
|
@ -303,7 +303,7 @@ drop:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int seg6_build_state(struct net_device *dev, struct nlattr *nla,
|
||||
static int seg6_build_state(struct nlattr *nla,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **ts)
|
||||
{
|
||||
|
@ -133,7 +133,7 @@ drop:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int mpls_build_state(struct net_device *dev, struct nlattr *nla,
|
||||
static int mpls_build_state(struct nlattr *nla,
|
||||
unsigned int family, const void *cfg,
|
||||
struct lwtunnel_state **ts)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user