]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ovpn: propagate socket mark to skb in UDP
authorRalf Lici <ralf@mandelbit.com>
Wed, 4 Jun 2025 13:11:58 +0000 (15:11 +0200)
committerAntonio Quartulli <antonio@openvpn.net>
Wed, 16 Jul 2025 09:50:51 +0000 (11:50 +0200)
OpenVPN allows users to configure a FW mark on sockets used to
communicate with other peers. The mark is set by means of the
`SO_MARK` Linux socket option.

However, in the ovpn UDP code path, the socket's `sk_mark` value is
currently ignored and it is not propagated to outgoing `skbs`.

This commit ensures proper inheritance of the field by setting
`skb->mark` to `sk->sk_mark` before handing the `skb` to the network
stack for transmission.

Fixes: 08857b5ec5d9 ("ovpn: implement basic TX path (UDP)")
Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: Ralf Lici <ralf@mandelbit.com>
Link: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg31877.html
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
drivers/net/ovpn/udp.c

index bff00946eae2d74006ca2ffbd6a9c0dd43cad5d7..60435a21f29ca5ca216e37f147fbc67dc05dedb9 100644 (file)
@@ -344,6 +344,7 @@ void ovpn_udp_send_skb(struct ovpn_peer *peer, struct sock *sk,
        int ret;
 
        skb->dev = peer->ovpn->dev;
+       skb->mark = READ_ONCE(sk->sk_mark);
        /* no checksum performed at this layer */
        skb->ip_summed = CHECKSUM_NONE;