← Commit list

7ff85c53f

Denis Vlasenko
Denis Vlasenko
2008-10-27
FAILED Duration: 35s

Subject

udhcp: simplify SO_BINDTODEVICE call

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

networking/udhcp/common.h+1 -1
@@ -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;
networking/udhcp/socket.c+2 -3
@@ -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));