aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/socket.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-11-22 23:22:06 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-11-22 23:22:06 +0000
commit48237b0c88343154d58854020c3a9c8b07c61b10 (patch)
treeb36bc84f22dd797b45c8d665e50e2f6c690e1370 /networking/udhcp/socket.c
parentb40bdb383a6b7a7f0fd36d0b1cc24deb42cd5f0d (diff)
downloadbusybox-w32-48237b0c88343154d58854020c3a9c8b07c61b10.tar.gz
busybox-w32-48237b0c88343154d58854020c3a9c8b07c61b10.tar.bz2
busybox-w32-48237b0c88343154d58854020c3a9c8b07c61b10.zip
introduce setsockopt_reuseaddr(int fd), setsockopt_broadcast(int fd),
use them where appropriate. 200 bytes saved
Diffstat (limited to 'networking/udhcp/socket.c')
-rw-r--r--networking/udhcp/socket.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/networking/udhcp/socket.c b/networking/udhcp/socket.c
index c19131d65..b27dca300 100644
--- a/networking/udhcp/socket.c
+++ b/networking/udhcp/socket.c
@@ -93,7 +93,6 @@ int listen_socket(uint32_t ip, int port, char *inf)
93 struct ifreq interface; 93 struct ifreq interface;
94 int fd; 94 int fd;
95 struct sockaddr_in addr; 95 struct sockaddr_in addr;
96 int n = 1;
97 96
98 DEBUG("Opening listen socket on 0x%08x:%d %s", ip, port, inf); 97 DEBUG("Opening listen socket on 0x%08x:%d %s", ip, port, inf);
99 fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); 98 fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
@@ -107,17 +106,17 @@ int listen_socket(uint32_t ip, int port, char *inf)
107 addr.sin_port = htons(port); 106 addr.sin_port = htons(port);
108 addr.sin_addr.s_addr = ip; 107 addr.sin_addr.s_addr = ip;
109 108
110 if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *) &n, sizeof(n)) == -1) { 109 if (setsockopt_reuseaddr(fd) == -1) {
111 close(fd); 110 close(fd);
112 return -1; 111 return -1;
113 } 112 }
114 if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, (char *) &n, sizeof(n)) == -1) { 113 if (setsockopt_broadcast(fd) == -1) {
115 close(fd); 114 close(fd);
116 return -1; 115 return -1;
117 } 116 }
118 117
119 strncpy(interface.ifr_name, inf, IFNAMSIZ); 118 strncpy(interface.ifr_name, inf, IFNAMSIZ);
120 if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE,(char *)&interface, sizeof(interface)) < 0) { 119 if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, (char *)&interface, sizeof(interface)) < 0) {
121 close(fd); 120 close(fd);
122 return -1; 121 return -1;
123 } 122 }