diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-22 23:22:06 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-22 23:22:06 +0000 |
commit | 48237b0c88343154d58854020c3a9c8b07c61b10 (patch) | |
tree | b36bc84f22dd797b45c8d665e50e2f6c690e1370 /networking/udhcp | |
parent | b40bdb383a6b7a7f0fd36d0b1cc24deb42cd5f0d (diff) | |
download | busybox-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')
-rw-r--r-- | networking/udhcp/arpping.c | 7 | ||||
-rw-r--r-- | networking/udhcp/packet.c | 3 | ||||
-rw-r--r-- | networking/udhcp/socket.c | 7 |
3 files changed, 7 insertions, 10 deletions
diff --git a/networking/udhcp/arpping.c b/networking/udhcp/arpping.c index 471e36d62..9c8b9c562 100644 --- a/networking/udhcp/arpping.c +++ b/networking/udhcp/arpping.c | |||
@@ -44,9 +44,7 @@ struct arpMsg { | |||
44 | /* FIXME: match response against chaddr */ | 44 | /* FIXME: match response against chaddr */ |
45 | int arpping(uint32_t yiaddr, uint32_t ip, uint8_t *mac, char *interface) | 45 | int arpping(uint32_t yiaddr, uint32_t ip, uint8_t *mac, char *interface) |
46 | { | 46 | { |
47 | |||
48 | int timeout = 2; | 47 | int timeout = 2; |
49 | int optval = 1; | ||
50 | int s; /* socket */ | 48 | int s; /* socket */ |
51 | int rv = 1; /* return value */ | 49 | int rv = 1; /* return value */ |
52 | struct sockaddr addr; /* for interface name */ | 50 | struct sockaddr addr; /* for interface name */ |
@@ -56,12 +54,13 @@ int arpping(uint32_t yiaddr, uint32_t ip, uint8_t *mac, char *interface) | |||
56 | time_t prevTime; | 54 | time_t prevTime; |
57 | 55 | ||
58 | 56 | ||
59 | if ((s = socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ARP))) == -1) { | 57 | s = socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ARP)); |
58 | if (s == -1) { | ||
60 | bb_perror_msg(bb_msg_can_not_create_raw_socket); | 59 | bb_perror_msg(bb_msg_can_not_create_raw_socket); |
61 | return -1; | 60 | return -1; |
62 | } | 61 | } |
63 | 62 | ||
64 | if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) == -1) { | 63 | if (setsockopt_broadcast(s) == -1) { |
65 | bb_perror_msg("cannot setsocketopt on raw socket"); | 64 | bb_perror_msg("cannot setsocketopt on raw socket"); |
66 | close(s); | 65 | close(s); |
67 | return -1; | 66 | return -1; |
diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c index 85910447b..dec9d0ab3 100644 --- a/networking/udhcp/packet.c +++ b/networking/udhcp/packet.c | |||
@@ -173,7 +173,6 @@ int udhcp_kernel_packet(struct dhcpMessage *payload, | |||
173 | uint32_t source_ip, int source_port, | 173 | uint32_t source_ip, int source_port, |
174 | uint32_t dest_ip, int dest_port) | 174 | uint32_t dest_ip, int dest_port) |
175 | { | 175 | { |
176 | int n = 1; | ||
177 | int fd, result; | 176 | int fd, result; |
178 | struct sockaddr_in client; | 177 | struct sockaddr_in client; |
179 | 178 | ||
@@ -181,7 +180,7 @@ int udhcp_kernel_packet(struct dhcpMessage *payload, | |||
181 | if (fd < 0) | 180 | if (fd < 0) |
182 | return -1; | 181 | return -1; |
183 | 182 | ||
184 | if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *) &n, sizeof(n)) == -1) { | 183 | if (setsockopt_reuseaddr(fd) == -1) { |
185 | close(fd); | 184 | close(fd); |
186 | return -1; | 185 | return -1; |
187 | } | 186 | } |
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 | } |