udhcp: simplify SO_BINDTODEVICE call
No binary (build failed)
—
(log yok)
| @@ -91,8 +91,8 @@ void udhcp_run_script(struct dhcpMessage *packet, const char *name) FAST_FUNC; | |
| void udhcp_sp_setup(void) FAST_FUNC; | |
| int udhcp_sp_fd_set(fd_set *rfds, int extra_fd) FAST_FUNC; | |
| int udhcp_sp_read(const fd_set *rfds) FAST_FUNC; | |
| - | int udhcp_raw_socket(int ifindex) FAST_FUNC; |
| int udhcp_read_interface(const char *interface, int *ifindex, uint32_t *addr, uint8_t *arp) FAST_FUNC; | |
| + | int udhcp_raw_socket(int ifindex) FAST_FUNC; |
| int udhcp_listen_socket(/*uint32_t ip,*/ int port, const char *inf) FAST_FUNC; | |
| /* Returns 1 if no reply received */ | |
| int arpping(uint32_t test_ip, uint32_t from_ip, uint8_t *from_mac, const char *interface) FAST_FUNC; | |
| @@ -88,7 +88,6 @@ int FAST_FUNC udhcp_read_interface(const char *interface, int *ifindex, uint32_t | |
| int FAST_FUNC udhcp_listen_socket(/*uint32_t ip,*/ int port, const char *inf) | |
| { | |
| int fd; | |
| - | struct ifreq interface; |
| struct sockaddr_in addr; | |
| DEBUG("Opening listen socket on *:%d %s", port, inf); | |
| @@ -98,8 +97,8 @@ int FAST_FUNC udhcp_listen_socket(/*uint32_t ip,*/ int port, const char *inf) | |
| if (setsockopt_broadcast(fd) == -1) | |
| bb_perror_msg_and_die("SO_BROADCAST"); | |
| - | strncpy(interface.ifr_name, inf, IFNAMSIZ); |
| - | if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &interface, sizeof(interface)) == -1) |
| + | /* NB: bug 1032 says this doesn't work on ethernet aliases (ethN:M) */ |
| + | if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &inf, strlen(inf) + 1) == -1) |
| bb_perror_msg_and_die("SO_BINDTODEVICE"); | |
| memset(&addr, 0, sizeof(addr)); | |