On 10/11/2024 21:42, Sergey Ryazanov wrote:
Missed the most essential note regarding this patch :)
On 29.10.2024 12:47, Antonio Quartulli wrote:
+static int ovpn_net_open(struct net_device *dev)
+{
+ netif_tx_start_all_queues(dev);
+ return 0;
+}
+
+static int ovpn_net_stop(struct net_device *dev)
+{
+ netif_tx_stop_all_queues(dev);
Here we stop a user generated traffic in downlink. Shall we take care
about other kinds of traffic: keepalive, uplink?
Keepalive is "metadata" and should continue to flow, regardless of
whether the user interface is brought down.
Uplink traffic directed to *this* device should just be dropped at
delivery time.
Incoming traffic directed to other peers will continue to work.
I believe we should remove all the peers here or at least stop the
keepalive generation. But peers removing is better since
administratively down is administratively down, meaning user expected
full traffic stop in any direction. And even if we only stop the
keepalive generation then peer(s) anyway will destroy the tunnel on
their side.
Uhm, I don't think the user expects all "protocol" traffic (and client
to client) to stop by simply bringing down the interface.
This way we even should not care about peers removing on the device
unregistering. What do you think?
I think you are now mixing data plane and control plane.
The fact that the user is stopping payload traffic does not imply we
want to stop the VPN.
The user may just be doing something with the interface (and on an MP
node client-to-client traffic will still continue to flow).
This would also be a non-negligible (and user faving) change in
behaviour compared to the current openvpn implementation.
Thanks for your input though, I can imagine coming from different angles
things may look not the same.
Regards,
+ return 0;
+}
--
Antonio Quartulli
OpenVPN Inc.