Hi,
On Sat, Apr 02, 2022 at 09:08:58AM +0200, Antonio Quartulli wrote:
> +++ b/src/openvpn/networking_iproute2.c
> @@ -38,6 +38,12 @@
> #include <stdbool.h>
> #include <netinet/in.h>
>
> +static const char *iface_type_str[] = {
> + [IFACE_DUMMY] = "dummy",
> + [IFACE_TUN] = "tun",
> + [IFACE_OVPN_DCO] = "ovpn-dco",
> +};
I find this notation surprising - I guess it's "ensure that array
indexes match enum values", but it's a construct we do not use anywhere
else in OpenVPN (I think).
> +net_iface_new(openvpn_net_ctx_t *ctx, const char *iface, enum iface_type
> type,
> + void *arg)
> +{
> + struct argv argv = argv_new();
> +
> + argv_printf(&argv, "%s link add %s type %s", iproute_path, iface,
> + iface_type_str[type]);
Also, there is no array bounds check here...
> #ifdef ENABLE_SITNL
> +
> +static const char *iface_type_str[] = {
> + [IFACE_DUMMY] = "dummy",
> + [IFACE_TUN] = "tun",
> + [IFACE_OVPN_DCO] = "ovpn-dco",
> +};
Plus, it is repeated here... (and no bounds check either).
Can we come up with something more in line with the rest of OpenVPN,
like a static function that will return the name of that thing, for
consumers that want a name, and "dummy" or "unknown" for out-of-bounds
access?
(Right now, all consumers want a string, and the caller passes in
a single-use enum, which is not used for anything but "convert back
to string", so the value of having an enum here is not really obvious)
gert
--
"If was one thing all people took for granted, was conviction that if you
feed honest figures into a computer, honest figures come out. Never doubted
it myself till I met a computer with a sense of humor."
Robert A. Heinlein, The Moon is a Harsh Mistress
Gert Doering - Munich, Germany [email protected]
signature.asc
Description: PGP signature
_______________________________________________ Openvpn-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openvpn-devel
