aboutsummaryrefslogtreecommitdiff
path: root/networking/ifplugd.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2011-01-21 21:59:26 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2011-01-21 21:59:26 +0100
commite8f565c1eeba336fa13ce8216464c9daedd36f76 (patch)
tree85a8bba11af1083fc0eacd310e91df05185892ec /networking/ifplugd.c
parentb40da22357563bf53fa93823342f8ab59899222d (diff)
parentdd169e84683aa7be3604d491f1c34ab657973365 (diff)
downloadbusybox-w32-e8f565c1eeba336fa13ce8216464c9daedd36f76.tar.gz
busybox-w32-e8f565c1eeba336fa13ce8216464c9daedd36f76.tar.bz2
busybox-w32-e8f565c1eeba336fa13ce8216464c9daedd36f76.zip
Merge branch 'master' of git+ssh://vda@busybox.net/var/lib/git/busybox
Diffstat (limited to 'networking/ifplugd.c')
-rw-r--r--networking/ifplugd.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/networking/ifplugd.c b/networking/ifplugd.c
index 58f56dbf1..8dd0a5bd8 100644
--- a/networking/ifplugd.c
+++ b/networking/ifplugd.c
@@ -131,18 +131,21 @@ static int network_ioctl(int request, void* data, const char *errmsg)
131 131
132static smallint detect_link_mii(void) 132static smallint detect_link_mii(void)
133{ 133{
134 struct ifreq ifreq; 134 /* char buffer instead of bona-fide struct avoids aliasing warning */
135 struct mii_ioctl_data *mii = (void *)&ifreq.ifr_data; 135 char buf[sizeof(struct ifreq)];
136 struct ifreq *const ifreq = (void *)buf;
136 137
137 set_ifreq_to_ifname(&ifreq); 138 struct mii_ioctl_data *mii = (void *)&ifreq->ifr_data;
139
140 set_ifreq_to_ifname(ifreq);
138 141
139 if (network_ioctl(SIOCGMIIPHY, &ifreq, "SIOCGMIIPHY") < 0) { 142 if (network_ioctl(SIOCGMIIPHY, ifreq, "SIOCGMIIPHY") < 0) {
140 return IFSTATUS_ERR; 143 return IFSTATUS_ERR;
141 } 144 }
142 145
143 mii->reg_num = 1; 146 mii->reg_num = 1;
144 147
145 if (network_ioctl(SIOCGMIIREG, &ifreq, "SIOCGMIIREG") < 0) { 148 if (network_ioctl(SIOCGMIIREG, ifreq, "SIOCGMIIREG") < 0) {
146 return IFSTATUS_ERR; 149 return IFSTATUS_ERR;
147 } 150 }
148 151
@@ -151,18 +154,21 @@ static smallint detect_link_mii(void)
151 154
152static smallint detect_link_priv(void) 155static smallint detect_link_priv(void)
153{ 156{
154 struct ifreq ifreq; 157 /* char buffer instead of bona-fide struct avoids aliasing warning */
155 struct mii_ioctl_data *mii = (void *)&ifreq.ifr_data; 158 char buf[sizeof(struct ifreq)];
159 struct ifreq *const ifreq = (void *)buf;
156 160
157 set_ifreq_to_ifname(&ifreq); 161 struct mii_ioctl_data *mii = (void *)&ifreq->ifr_data;
162
163 set_ifreq_to_ifname(ifreq);
158 164
159 if (network_ioctl(SIOCDEVPRIVATE, &ifreq, "SIOCDEVPRIVATE") < 0) { 165 if (network_ioctl(SIOCDEVPRIVATE, ifreq, "SIOCDEVPRIVATE") < 0) {
160 return IFSTATUS_ERR; 166 return IFSTATUS_ERR;
161 } 167 }
162 168
163 mii->reg_num = 1; 169 mii->reg_num = 1;
164 170
165 if (network_ioctl(SIOCDEVPRIVATE+1, &ifreq, "SIOCDEVPRIVATE+1") < 0) { 171 if (network_ioctl(SIOCDEVPRIVATE+1, ifreq, "SIOCDEVPRIVATE+1") < 0) {
166 return IFSTATUS_ERR; 172 return IFSTATUS_ERR;
167 } 173 }
168 174