On Sat, 13 Jun 2020 18:37:09 -0600 David Ahern <dsah...@gmail.com> wrote:
> On 6/12/20 10:49 AM, Andrea Mayer wrote: > > @@ -37,6 +45,15 @@ struct l3mdev_ops { > > > > #ifdef CONFIG_NET_L3_MASTER_DEV > > > > +int l3mdev_table_lookup_register(enum l3mdev_type l3type, > > + int (*fn)(struct net *net, u32 table_id)); > > + > > +void l3mdev_table_lookup_unregister(enum l3mdev_type l3type, > > + int (*fn)(struct net *net, u32 table_id)); > > + > > +int l3mdev_ifindex_lookup_by_table_id(enum l3mdev_type l3type, struct net > > *net, > > + u32 table_id); > > + > > int l3mdev_fib_rule_match(struct net *net, struct flowi *fl, > > struct fib_lookup_arg *arg); > > > > @@ -280,6 +297,26 @@ struct sk_buff *l3mdev_ip6_out(struct sock *sk, struct > > sk_buff *skb) > > return skb; > > } > > > > +static inline > > +int l3mdev_table_lookup_register(enum l3mdev_type l3type, > > + int (*fn)(struct net *net, u32 table_id)) > > +{ > > + return -EOPNOTSUPP; > > +} > > + > > +static inline > > +void l3mdev_table_lookup_unregister(enum l3mdev_type l3type, > > + int (*fn)(struct net *net, u32 table_id)) > > +{ > > +} > > + > > +static inline > > +int l3mdev_ifindex_lookup_by_table_id(enum l3mdev_type l3type, struct net > > *net, > > + u32 table_id) > > +{ > > + return -ENODEV; > > +} > > + > > static inline > > int l3mdev_fib_rule_match(struct net *net, struct flowi *fl, > > struct fib_lookup_arg *arg) > > diff --git a/net/l3mdev/l3mdev.c b/net/l3mdev/l3mdev.c > > index f35899d45a9a..6cc1fe7eb039 100644 > > --- a/net/l3mdev/l3mdev.c > > +++ b/net/l3mdev/l3mdev.c > > @@ -9,6 +9,101 @@ > > #include <net/fib_rules.h> > > #include <net/l3mdev.h> > > > > +DEFINE_SPINLOCK(l3mdev_lock); > > + > > +typedef int (*lookup_by_table_id_t)(struct net *net, u32 table_d); > > + > > I should have caught this earlier. Move lookup_by_table_id_t to l3mdev.h > and use above for 'fn' in l3mdev_table_lookup_{un,}register > Hi David, Ok, I will do it! Thank you, Andrea