X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fnet%2Fethtool-util.c;h=3ec245ecabc96b14b3e9582de3d61998653f109d;hb=2c5859afecee81e345fc9526b1083bf79990ffb8;hp=18d44fc9689631ae75c6ab7bb655c8b8c4301956;hpb=61f3af4fed2f0d2686bd7ae4cd22bc3e973ddeca;p=elogind.git diff --git a/src/udev/net/ethtool-util.c b/src/udev/net/ethtool-util.c index 18d44fc96..3ec245eca 100644 --- a/src/udev/net/ethtool-util.c +++ b/src/udev/net/ethtool-util.c @@ -31,7 +31,7 @@ #include "log.h" #include "conf-parser.h" -static const char* const duplex_table[] = { +static const char* const duplex_table[_DUP_MAX] = { [DUP_FULL] = "full", [DUP_HALF] = "half" }; @@ -39,7 +39,7 @@ static const char* const duplex_table[] = { DEFINE_STRING_TABLE_LOOKUP(duplex, Duplex); DEFINE_CONFIG_PARSE_ENUM(config_parse_duplex, duplex, Duplex, "Failed to parse duplex setting"); -static const char* const wol_table[] = { +static const char* const wol_table[_WOL_MAX] = { [WOL_PHY] = "phy", [WOL_MAGIC] = "magic", [WOL_OFF] = "off" @@ -89,20 +89,19 @@ int ethtool_get_driver(int fd, const char *ifname, char **ret) { int ethtool_set_speed(int fd, const char *ifname, unsigned int speed, Duplex duplex) { - struct ifreq ifr; - struct ethtool_cmd ecmd; + struct ethtool_cmd ecmd = { + .cmd = ETHTOOL_GSET + }; + struct ifreq ifr = { + .ifr_data = (void*) &ecmd + }; bool need_update = false; int r; if (speed == 0 && duplex == _DUP_INVALID) return 0; - zero(ecmd); - ecmd.cmd = ETHTOOL_GSET; - - zero(ifr); strscpy(ifr.ifr_name, IFNAMSIZ, ifname); - ifr.ifr_data = (void *)&ecmd; r = ioctl(fd, SIOCETHTOOL, &ifr); if (r < 0) @@ -142,20 +141,19 @@ int ethtool_set_speed(int fd, const char *ifname, unsigned int speed, Duplex dup } int ethtool_set_wol(int fd, const char *ifname, WakeOnLan wol) { - struct ifreq ifr; - struct ethtool_wolinfo ecmd; + struct ethtool_wolinfo ecmd = { + .cmd = ETHTOOL_GWOL + }; + struct ifreq ifr = { + .ifr_data = (void*) &ecmd + }; bool need_update = false; int r; if (wol == _WOL_INVALID) return 0; - zero(ecmd); - ecmd.cmd = ETHTOOL_GWOL; - - zero(ifr); strscpy(ifr.ifr_name, IFNAMSIZ, ifname); - ifr.ifr_data = (void *)&ecmd; r = ioctl(fd, SIOCETHTOOL, &ifr); if (r < 0)