Re: [PATCH net-next v2 05/22] ovpn: implement interface creation/destruction via netlink
From: Simon Horman <horms@kernel.org>
Date: 2024-03-05 14:53:20
On Mon, Mar 04, 2024 at 04:08:56PM +0100, Antonio Quartulli wrote:
quoted hunk ↗ jump to hunk
Allow userspace to create and destroy an interface using netlink commands. Signed-off-by: Antonio Quartulli <antonio@openvpn.net> --- drivers/net/ovpn/netlink.c | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+)diff --git a/drivers/net/ovpn/netlink.c b/drivers/net/ovpn/netlink.c index 2e855ce145e7..02b41034f615 100644 --- a/drivers/net/ovpn/netlink.c +++ b/drivers/net/ovpn/netlink.c@@ -154,7 +154,57 @@ static void ovpn_post_doit(const struct genl_split_ops *ops, struct sk_buff *skb dev_put(ovpn->dev); } +static int ovpn_nl_new_iface(struct sk_buff *skb, struct genl_info *info) +{ + enum ovpn_mode mode = OVPN_MODE_P2P; + struct net_device *dev; + char *ifname; + int ret; + + if (!info->attrs[OVPN_A_IFNAME]) + return -EINVAL; + + ifname = nla_data(info->attrs[OVPN_A_IFNAME]); + + if (info->attrs[OVPN_A_MODE]) { + mode = nla_get_u8(info->attrs[OVPN_A_MODE]); + netdev_dbg(dev, "%s: setting device (%s) mode: %u\n", __func__, ifname, + mode);
nit: dev is uninitialised here.
+ } + + ret = ovpn_iface_create(ifname, mode, genl_info_net(info)); + if (ret < 0) + netdev_dbg(dev, "error while creating interface %s: %d\n", ifname, ret);
And here. Flagged by Smatch.
+ + return ret; +}
...