182 |
* main program |
* main program |
183 |
*/ |
*/ |
184 |
int zcip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
int zcip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
185 |
int zcip_main(int argc, char **argv) |
int zcip_main(int argc UNUSED_PARAM, char **argv) |
186 |
{ |
{ |
187 |
int state; |
int state; |
188 |
char *r_opt; |
char *r_opt; |
241 |
bb_error_msg_and_die("invalid link address"); |
bb_error_msg_and_die("invalid link address"); |
242 |
} |
} |
243 |
} |
} |
|
argc -= optind; |
|
244 |
argv += optind - 1; |
argv += optind - 1; |
245 |
|
|
246 |
/* Now: argv[0]:junk argv[1]:intf argv[2]:script argv[3]:NULL */ |
/* Now: argv[0]:junk argv[1]:intf argv[2]:script argv[3]:NULL */ |
267 |
|
|
268 |
// get the interface's ethernet address |
// get the interface's ethernet address |
269 |
//memset(&ifr, 0, sizeof(ifr)); |
//memset(&ifr, 0, sizeof(ifr)); |
270 |
strncpy(ifr.ifr_name, argv_intf, sizeof(ifr.ifr_name)); |
strncpy_IFNAMSIZ(ifr.ifr_name, argv_intf); |
271 |
xioctl(sock_fd, SIOCGIFHWADDR, &ifr); |
xioctl(sock_fd, SIOCGIFHWADDR, &ifr); |
272 |
memcpy(ð_addr, &ifr.ifr_hwaddr.sa_data, ETH_ALEN); |
memcpy(ð_addr, &ifr.ifr_hwaddr.sa_data, ETH_ALEN); |
273 |
|
|
278 |
// NOTE: the sequence of addresses we try changes only |
// NOTE: the sequence of addresses we try changes only |
279 |
// depending on when we detect conflicts. |
// depending on when we detect conflicts. |
280 |
{ |
{ |
281 |
uint32_t t = get_unaligned_u32p((uint32_t *) ((char *)ð_addr + 2)); |
uint32_t t; |
282 |
|
move_from_unaligned32(t, ((char *)ð_addr + 2)); |
283 |
srand(t); |
srand(t); |
284 |
} |
} |
285 |
if (ip.s_addr == 0) |
if (ip.s_addr == 0) |