|
Lines 190-206
Link Here
|
| 190 |
continue; |
190 |
continue; |
| 191 |
if (reply->ar_pln != sizeof (struct in_addr)) |
191 |
if (reply->ar_pln != sizeof (struct in_addr)) |
| 192 |
continue; |
192 |
continue; |
| 193 |
|
|
|
| 194 |
if (reply->ar_hln != ETHER_ADDR_LEN) |
| 195 |
continue; |
| 196 |
if ((unsigned) bytes < sizeof (reply) + |
193 |
if ((unsigned) bytes < sizeof (reply) + |
| 197 |
2 * (4 + reply->ar_hln)) |
194 |
2 * (4 + reply->ar_hln)) |
| 198 |
continue; |
195 |
continue; |
| 199 |
|
196 |
|
|
|
197 |
/* Some systems send a reply back from our hwaddress - weird */ |
| 198 |
if (memcmp (rh.c, iface->hwaddr, |
| 199 |
MAX (reply->ar_hln, iface->hwlen))) |
| 200 |
continue; |
| 201 |
|
| 200 |
rp.c = (unsigned char *) ar_spa (reply); |
202 |
rp.c = (unsigned char *) ar_spa (reply); |
| 201 |
rh.c = (unsigned char *) ar_sha (reply); |
203 |
rh.c = (unsigned char *) ar_sha (reply); |
| 202 |
logger (LOG_ERR, "ARPOP_REPLY received from %s (%s)", |
204 |
logger (LOG_ERR, "ARPOP_REPLY received from %s (%s)", |
| 203 |
inet_ntoa (*rp.a), ether_ntoa (rh.a)); |
205 |
inet_ntoa (*rp.a), |
|
|
206 |
hwaddr_ntoa (rh.c, reply->ar_hln)); |
| 204 |
retval = -1; |
207 |
retval = -1; |
| 205 |
goto eexit; |
208 |
goto eexit; |
| 206 |
} |
209 |
} |