ovpn_fill_info always emits IFLA_OVPN_MODE inside IFLA_INFO_DATA, but
ovpn_link_ops does not provide a get_size callback. rtnetlink therefore
does not account for the ovpn-specific attribute when sizing RTM_NEWLINK
messages, so ovpn_fill_info can fail with -EMSGSIZE.

Add the callback and reserve room for the mode attribute.

Fixes: c2d950c4672a ("ovpn: add basic interface creation/destruction/management 
routines")
Signed-off-by: Ralf Lici <[email protected]>
---
 drivers/net/ovpn/main.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/ovpn/main.c b/drivers/net/ovpn/main.c
index 2e0420febda0..43c36e7cc81b 100644
--- a/drivers/net/ovpn/main.c
+++ b/drivers/net/ovpn/main.c
@@ -217,6 +217,12 @@ static void ovpn_dellink(struct net_device *dev, struct 
list_head *head)
        unregister_netdevice_queue(dev, head);
 }
 
+static size_t ovpn_get_size(const struct net_device *dev)
+{
+       /* IFLA_OVPN_MODE */
+       return nla_total_size(sizeof(u8));
+}
+
 static int ovpn_fill_info(struct sk_buff *skb, const struct net_device *dev)
 {
        struct ovpn_priv *ovpn = netdev_priv(dev);
@@ -236,6 +242,7 @@ static struct rtnl_link_ops ovpn_link_ops = {
        .maxtype = IFLA_OVPN_MAX,
        .newlink = ovpn_newlink,
        .dellink = ovpn_dellink,
+       .get_size = ovpn_get_size,
        .fill_info = ovpn_fill_info,
 };
 
-- 
2.54.0



_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to