summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Quartulli <antonio@openvpn.net>2025-04-15 13:17:21 +0200
committerPaolo Abeni <pabeni@redhat.com>2025-04-17 12:30:02 +0200
commit8327a3baa9b0561a410d00b209aae621b5a61b1c (patch)
tree4e3a901eb54a127758b1e9ddf0ddfcdc6d3d76d4
parentc2d950c4672a012ea9765c15a389cdcdf919f652 (diff)
ovpn: keep carrier always on for MP interfaces
An ovpn interface configured in MP mode will keep carrier always on and let the user decide when to bring it administratively up and down. This way a MP node (i.e. a server) will keep its interface always up and running, even when no peer is connected. Signed-off-by: Antonio Quartulli <antonio@openvpn.net> Link: https://patch.msgid.link/20250415-b4-ovpn-v26-4-577f6097b964@openvpn.net Reviewed-by: Sabrina Dubroca <sd@queasysnail.net> Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-rw-r--r--drivers/net/ovpn/main.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/net/ovpn/main.c b/drivers/net/ovpn/main.c
index ea7dad374c00..fa1dd84be240 100644
--- a/drivers/net/ovpn/main.c
+++ b/drivers/net/ovpn/main.c
@@ -93,10 +93,18 @@ static int ovpn_newlink(struct net_device *dev,
ovpn->dev = dev;
ovpn->mode = mode;
- /* turn carrier explicitly off after registration, this way state is
- * clearly defined
+ /* Set carrier explicitly after registration, this way state is
+ * clearly defined.
+ *
+ * In case of MP interfaces we keep the carrier always on.
+ *
+ * Carrier for P2P interfaces is initially off and it is then
+ * switched on and off when the remote peer is added or deleted.
*/
- netif_carrier_off(dev);
+ if (ovpn->mode == OVPN_MODE_MP)
+ netif_carrier_on(dev);
+ else
+ netif_carrier_off(dev);
return register_netdevice(dev);
}