diff options
| -rw-r--r-- | networking/ifplugd.c | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/networking/ifplugd.c b/networking/ifplugd.c index c9f603f2c..62bc9d6d5 100644 --- a/networking/ifplugd.c +++ b/networking/ifplugd.c @@ -9,6 +9,7 @@  #include "libbb.h"  #include <linux/if.h> +#include <linux/mii.h>  #include <linux/ethtool.h>  #include <net/ethernet.h>  #include <linux/netlink.h> @@ -310,6 +311,7 @@ static void maybe_up_new_iface(void)  static smallint detect_link_mii(void)  {  	struct ifreq ifreq; +	struct mii_ioctl_data *mii = (void *)&ifreq.ifr_data;  	set_ifreq_to_ifname(&ifreq); @@ -318,20 +320,20 @@ static smallint detect_link_mii(void)  		return IFSTATUS_ERR;  	} -	((unsigned short*)&ifreq.ifr_data)[1] = 1; +	mii->reg_num = 1;  	if (network_ioctl(SIOCGMIIREG, &ifreq) < 0) {  		bb_perror_msg("SIOCGMIIREG failed");  		return IFSTATUS_ERR;  	} -	return (((unsigned short*)&ifreq.ifr_data)[3] & 0x0004) ? -		IFSTATUS_UP : IFSTATUS_DOWN; +	return (mii->val_out & 0x0004) ? IFSTATUS_UP : IFSTATUS_DOWN;  }  static smallint detect_link_priv(void)  {  	struct ifreq ifreq; +	struct mii_ioctl_data *mii = (void *)&ifreq.ifr_data;  	set_ifreq_to_ifname(&ifreq); @@ -340,15 +342,14 @@ static smallint detect_link_priv(void)  		return IFSTATUS_ERR;  	} -	((unsigned short*) &ifreq.ifr_data)[1] = 1; +	mii->reg_num = 1;  	if (network_ioctl(SIOCDEVPRIVATE+1, &ifreq) < 0) {  		bb_perror_msg("SIOCDEVPRIVATE+1 failed");  		return IFSTATUS_ERR;  	} -	return (((unsigned short*)&ifreq.ifr_data)[3] & 0x0004) ? -		IFSTATUS_UP : IFSTATUS_DOWN; +	return (mii->val_out & 0x0004) ? IFSTATUS_UP : IFSTATUS_DOWN;  }  static smallint detect_link_ethtool(void) @@ -591,6 +592,7 @@ static NOINLINE int netlink_open(void)  	return fd;  } +#if ENABLE_FEATURE_PIDFILE  static NOINLINE pid_t read_pid(const char *filename)  {  	int len; @@ -604,6 +606,7 @@ static NOINLINE pid_t read_pid(const char *filename)  	}  	return 0;  } +#endif  int ifplugd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;  int ifplugd_main(int argc UNUSED_PARAM, char **argv)  | 
