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 g...@greenie.muc.de
signature.asc
Description: PGP signature
_______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel