tun: support not enabling carrier in TUNSETIFF
authorPatrick Rohr <prohr@google.com>
Tue, 20 Sep 2022 19:48:25 +0000 (12:48 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 23 Sep 2022 11:02:03 +0000 (12:02 +0100)
commit195624d9c26b64c6856863da30ec578a790feec4
treeb59b33f799ab16cd2bf18fee50074a58f8e2db5b
parent504c25cb76a9cb805407f7701b25a1fbd48605fa
tun: support not enabling carrier in TUNSETIFF

This change adds support for not enabling carrier during TUNSETIFF
interface creation by specifying the IFF_NO_CARRIER flag.

Our tests make heavy use of tun interfaces. In some scenarios, the test
process creates the interface but another process brings it up after the
interface is discovered via netlink notification. In that case, it is
not possible to create a tun/tap interface with carrier off without it
racing against the bring up. Immediately setting carrier off via
TUNSETCARRIER is still too late.

Signed-off-by: Patrick Rohr <prohr@google.com>
Cc: Maciej Żenczykowski <maze@google.com>
Cc: Lorenzo Colitti <lorenzo@google.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Reviewed-by: Maciej Żenczykowski <maze@google.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c
include/uapi/linux/if_tun.h