aboutsummaryrefslogtreecommitdiff
path: root/libbb/xconnect.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-06-27 02:52:20 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-06-27 02:52:20 +0000
commitdefc1ea34074e7882724c460260d307cdf981a70 (patch)
treefca9b9a5fe243f9c0c76b84824ea2ff92ea8e589 /libbb/xconnect.c
parent26bc57d8b26425f23f4be974cce7bf35c95c9a1a (diff)
downloadbusybox-w32-defc1ea34074e7882724c460260d307cdf981a70.tar.gz
busybox-w32-defc1ea34074e7882724c460260d307cdf981a70.tar.bz2
busybox-w32-defc1ea34074e7882724c460260d307cdf981a70.zip
*: introduce and use FAST_FUNC: regparm on i386, otherwise no-on
text data bss dec hex filename 808035 611 6868 815514 c719a busybox_old 804472 611 6868 811951 c63af busybox_unstripped
Diffstat (limited to 'libbb/xconnect.c')
-rw-r--r--libbb/xconnect.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/libbb/xconnect.c b/libbb/xconnect.c
index 950aee826..d48c50339 100644
--- a/libbb/xconnect.c
+++ b/libbb/xconnect.c
@@ -9,16 +9,16 @@
9#include <netinet/in.h> 9#include <netinet/in.h>
10#include "libbb.h" 10#include "libbb.h"
11 11
12void setsockopt_reuseaddr(int fd) 12void FAST_FUNC setsockopt_reuseaddr(int fd)
13{ 13{
14 setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_1, sizeof(const_int_1)); 14 setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_1, sizeof(const_int_1));
15} 15}
16int setsockopt_broadcast(int fd) 16int FAST_FUNC setsockopt_broadcast(int fd)
17{ 17{
18 return setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_1, sizeof(const_int_1)); 18 return setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_1, sizeof(const_int_1));
19} 19}
20 20
21void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen) 21void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
22{ 22{
23 if (connect(s, s_addr, addrlen) < 0) { 23 if (connect(s, s_addr, addrlen) < 0) {
24 if (ENABLE_FEATURE_CLEAN_UP) 24 if (ENABLE_FEATURE_CLEAN_UP)
@@ -35,7 +35,7 @@ void xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
35 * If "port" is a number use it as the port. 35 * If "port" is a number use it as the port.
36 * If "port" is a name it is looked up in /etc/services, if it isnt found return 36 * If "port" is a name it is looked up in /etc/services, if it isnt found return
37 * default_port */ 37 * default_port */
38unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default_port) 38unsigned FAST_FUNC bb_lookup_port(const char *port, const char *protocol, unsigned default_port)
39{ 39{
40 unsigned port_nr = default_port; 40 unsigned port_nr = default_port;
41 if (port) { 41 if (port) {
@@ -60,7 +60,7 @@ unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default
60/* "Old" networking API - only IPv4 */ 60/* "Old" networking API - only IPv4 */
61 61
62/* 62/*
63void bb_lookup_host(struct sockaddr_in *s_in, const char *host) 63void FAST_FUNC bb_lookup_host(struct sockaddr_in *s_in, const char *host)
64{ 64{
65 struct hostent *he; 65 struct hostent *he;
66 66
@@ -71,7 +71,7 @@ void bb_lookup_host(struct sockaddr_in *s_in, const char *host)
71} 71}
72 72
73 73
74int xconnect_tcp_v4(struct sockaddr_in *s_addr) 74int FAST_FUNC xconnect_tcp_v4(struct sockaddr_in *s_addr)
75{ 75{
76 int s = xsocket(AF_INET, SOCK_STREAM, 0); 76 int s = xsocket(AF_INET, SOCK_STREAM, 0);
77 xconnect(s, (struct sockaddr*) s_addr, sizeof(*s_addr)); 77 xconnect(s, (struct sockaddr*) s_addr, sizeof(*s_addr));
@@ -82,7 +82,7 @@ int xconnect_tcp_v4(struct sockaddr_in *s_addr)
82/* "New" networking API */ 82/* "New" networking API */
83 83
84 84
85int get_nport(const struct sockaddr *sa) 85int FAST_FUNC get_nport(const struct sockaddr *sa)
86{ 86{
87#if ENABLE_FEATURE_IPV6 87#if ENABLE_FEATURE_IPV6
88 if (sa->sa_family == AF_INET6) { 88 if (sa->sa_family == AF_INET6) {
@@ -96,7 +96,7 @@ int get_nport(const struct sockaddr *sa)
96 return -1; 96 return -1;
97} 97}
98 98
99void set_nport(len_and_sockaddr *lsa, unsigned port) 99void FAST_FUNC set_nport(len_and_sockaddr *lsa, unsigned port)
100{ 100{
101#if ENABLE_FEATURE_IPV6 101#if ENABLE_FEATURE_IPV6
102 if (lsa->u.sa.sa_family == AF_INET6) { 102 if (lsa->u.sa.sa_family == AF_INET6) {
@@ -205,34 +205,34 @@ USE_FEATURE_IPV6(sa_family_t af,)
205#endif 205#endif
206 206
207#if ENABLE_FEATURE_IPV6 207#if ENABLE_FEATURE_IPV6
208len_and_sockaddr* host_and_af2sockaddr(const char *host, int port, sa_family_t af) 208len_and_sockaddr* FAST_FUNC host_and_af2sockaddr(const char *host, int port, sa_family_t af)
209{ 209{
210 return str2sockaddr(host, port, af, 0); 210 return str2sockaddr(host, port, af, 0);
211} 211}
212 212
213len_and_sockaddr* xhost_and_af2sockaddr(const char *host, int port, sa_family_t af) 213len_and_sockaddr* FAST_FUNC xhost_and_af2sockaddr(const char *host, int port, sa_family_t af)
214{ 214{
215 return str2sockaddr(host, port, af, DIE_ON_ERROR); 215 return str2sockaddr(host, port, af, DIE_ON_ERROR);
216} 216}
217#endif 217#endif
218 218
219len_and_sockaddr* host2sockaddr(const char *host, int port) 219len_and_sockaddr* FAST_FUNC host2sockaddr(const char *host, int port)
220{ 220{
221 return str2sockaddr(host, port, AF_UNSPEC, 0); 221 return str2sockaddr(host, port, AF_UNSPEC, 0);
222} 222}
223 223
224len_and_sockaddr* xhost2sockaddr(const char *host, int port) 224len_and_sockaddr* FAST_FUNC xhost2sockaddr(const char *host, int port)
225{ 225{
226 return str2sockaddr(host, port, AF_UNSPEC, DIE_ON_ERROR); 226 return str2sockaddr(host, port, AF_UNSPEC, DIE_ON_ERROR);
227} 227}
228 228
229len_and_sockaddr* xdotted2sockaddr(const char *host, int port) 229len_and_sockaddr* FAST_FUNC xdotted2sockaddr(const char *host, int port)
230{ 230{
231 return str2sockaddr(host, port, AF_UNSPEC, AI_NUMERICHOST | DIE_ON_ERROR); 231 return str2sockaddr(host, port, AF_UNSPEC, AI_NUMERICHOST | DIE_ON_ERROR);
232} 232}
233 233
234#undef xsocket_type 234#undef xsocket_type
235int xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock_type) 235int FAST_FUNC xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock_type)
236{ 236{
237 SKIP_FEATURE_IPV6(enum { family = AF_INET };) 237 SKIP_FEATURE_IPV6(enum { family = AF_INET };)
238 len_and_sockaddr *lsa; 238 len_and_sockaddr *lsa;
@@ -264,7 +264,7 @@ int xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock
264 return fd; 264 return fd;
265} 265}
266 266
267int xsocket_stream(len_and_sockaddr **lsap) 267int FAST_FUNC xsocket_stream(len_and_sockaddr **lsap)
268{ 268{
269 return xsocket_type(lsap, USE_FEATURE_IPV6(AF_UNSPEC,) SOCK_STREAM); 269 return xsocket_type(lsap, USE_FEATURE_IPV6(AF_UNSPEC,) SOCK_STREAM);
270} 270}
@@ -288,18 +288,18 @@ static int create_and_bind_or_die(const char *bindaddr, int port, int sock_type)
288 return fd; 288 return fd;
289} 289}
290 290
291int create_and_bind_stream_or_die(const char *bindaddr, int port) 291int FAST_FUNC create_and_bind_stream_or_die(const char *bindaddr, int port)
292{ 292{
293 return create_and_bind_or_die(bindaddr, port, SOCK_STREAM); 293 return create_and_bind_or_die(bindaddr, port, SOCK_STREAM);
294} 294}
295 295
296int create_and_bind_dgram_or_die(const char *bindaddr, int port) 296int FAST_FUNC create_and_bind_dgram_or_die(const char *bindaddr, int port)
297{ 297{
298 return create_and_bind_or_die(bindaddr, port, SOCK_DGRAM); 298 return create_and_bind_or_die(bindaddr, port, SOCK_DGRAM);
299} 299}
300 300
301 301
302int create_and_connect_stream_or_die(const char *peer, int port) 302int FAST_FUNC create_and_connect_stream_or_die(const char *peer, int port)
303{ 303{
304 int fd; 304 int fd;
305 len_and_sockaddr *lsa; 305 len_and_sockaddr *lsa;
@@ -312,7 +312,7 @@ int create_and_connect_stream_or_die(const char *peer, int port)
312 return fd; 312 return fd;
313} 313}
314 314
315int xconnect_stream(const len_and_sockaddr *lsa) 315int FAST_FUNC xconnect_stream(const len_and_sockaddr *lsa)
316{ 316{
317 int fd = xsocket(lsa->u.sa.sa_family, SOCK_STREAM, 0); 317 int fd = xsocket(lsa->u.sa.sa_family, SOCK_STREAM, 0);
318 xconnect(fd, &lsa->u.sa, lsa->len); 318 xconnect(fd, &lsa->u.sa, lsa->len);
@@ -322,7 +322,7 @@ int xconnect_stream(const len_and_sockaddr *lsa)
322/* We hijack this constant to mean something else */ 322/* We hijack this constant to mean something else */
323/* It doesn't hurt because we will add this bit anyway */ 323/* It doesn't hurt because we will add this bit anyway */
324#define IGNORE_PORT NI_NUMERICSERV 324#define IGNORE_PORT NI_NUMERICSERV
325static char* sockaddr2str(const struct sockaddr *sa, int flags) 325static char* FAST_FUNC sockaddr2str(const struct sockaddr *sa, int flags)
326{ 326{
327 char host[128]; 327 char host[128];
328 char serv[16]; 328 char serv[16];
@@ -361,26 +361,26 @@ static char* sockaddr2str(const struct sockaddr *sa, int flags)
361 /*return xstrdup(host);*/ 361 /*return xstrdup(host);*/
362} 362}
363 363
364char* xmalloc_sockaddr2host(const struct sockaddr *sa) 364char* FAST_FUNC xmalloc_sockaddr2host(const struct sockaddr *sa)
365{ 365{
366 return sockaddr2str(sa, 0); 366 return sockaddr2str(sa, 0);
367} 367}
368 368
369char* xmalloc_sockaddr2host_noport(const struct sockaddr *sa) 369char* FAST_FUNC xmalloc_sockaddr2host_noport(const struct sockaddr *sa)
370{ 370{
371 return sockaddr2str(sa, IGNORE_PORT); 371 return sockaddr2str(sa, IGNORE_PORT);
372} 372}
373 373
374char* xmalloc_sockaddr2hostonly_noport(const struct sockaddr *sa) 374char* FAST_FUNC xmalloc_sockaddr2hostonly_noport(const struct sockaddr *sa)
375{ 375{
376 return sockaddr2str(sa, NI_NAMEREQD | IGNORE_PORT); 376 return sockaddr2str(sa, NI_NAMEREQD | IGNORE_PORT);
377} 377}
378char* xmalloc_sockaddr2dotted(const struct sockaddr *sa) 378char* FAST_FUNC xmalloc_sockaddr2dotted(const struct sockaddr *sa)
379{ 379{
380 return sockaddr2str(sa, NI_NUMERICHOST); 380 return sockaddr2str(sa, NI_NUMERICHOST);
381} 381}
382 382
383char* xmalloc_sockaddr2dotted_noport(const struct sockaddr *sa) 383char* FAST_FUNC xmalloc_sockaddr2dotted_noport(const struct sockaddr *sa)
384{ 384{
385 return sockaddr2str(sa, NI_NUMERICHOST | IGNORE_PORT); 385 return sockaddr2str(sa, NI_NUMERICHOST | IGNORE_PORT);
386} 386}