From: Andre Noll Date: Wed, 8 Jun 2011 17:44:56 +0000 (+0200) Subject: Merge branch 't/net_cleanups' X-Git-Tag: v0.4.8~33 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=0440ca41086eafb233b5cb516419de830a0bec13;hp=6d6ede092858166d203a39da1734bd715d47cf1d Merge branch 't/net_cleanups' --- diff --git a/aft.c b/aft.c index be4d572e..0edc7013 100644 --- a/aft.c +++ b/aft.c @@ -18,7 +18,6 @@ #include "string.h" #include "afh.h" #include "afs.h" -#include "net.h" #include "fd.h" #include "ipc.h" #include "portable_io.h" diff --git a/attribute.c b/attribute.c index 4c664996..42fa421c 100644 --- a/attribute.c +++ b/attribute.c @@ -15,7 +15,6 @@ #include "string.h" #include "afh.h" #include "afs.h" -#include "net.h" #include "ipc.h" static struct osl_table *attribute_table; diff --git a/blob.c b/blob.c index dfe4e374..25aa2a6d 100644 --- a/blob.c +++ b/blob.c @@ -16,7 +16,6 @@ #include "string.h" #include "afh.h" #include "afs.h" -#include "net.h" #include "ipc.h" #include "portable_io.h" diff --git a/net.c b/net.c index ffd4350b..2f720b10 100644 --- a/net.c +++ b/net.c @@ -285,7 +285,7 @@ struct flowopts *flowopt_new(void) * \sa setsockopt(2) */ void flowopt_add(struct flowopts *fo, int lev, int opt, - char *name, const void *val, int len) + const char *name, const void *val, int len) { struct pre_conn_opt *new = para_malloc(sizeof(*new)); @@ -306,7 +306,7 @@ void flowopt_add(struct flowopts *fo, int lev, int opt, } void flowopt_add_bool(struct flowopts *fo, int lev, int opt, - char *optname, bool on_or_off) + const char *optname, bool on_or_off) { int on = on_or_off; /* kernel takes 'int' */ @@ -594,37 +594,6 @@ int generic_max_transport_msg_size(int sockfd) return generic_mtu(af_type) - estimated_header_overhead(af_type); } -/** - * Print numeric host and port number (beware - uses static char). - * - * \param sa The IPv4/IPv6 socket address to use. - * - * \return Host string in numeric host:port format, \sa parse_url(). - * \sa getnameinfo(3), services(5), nsswitch.conf(5) - */ -static char *host_and_port(const struct sockaddr_storage *ss) -{ - const struct sockaddr *sa = normalize_ip_address(ss); - char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; - static char output[sizeof(hbuf) + sizeof(sbuf) + 4]; - int ret; - - ret = getnameinfo(sa, salen(sa), - hbuf, sizeof(hbuf), - sbuf, sizeof(sbuf), - NI_NUMERICHOST | NI_NUMERICSERV); - if (ret) { - snprintf(output, sizeof(output), "(unknown)"); - PARA_WARNING_LOG("hostname lookup error (%s).\n", - gai_strerror(ret)); - } else if (sa->sa_family == AF_INET6) { - snprintf(output, sizeof(output), "[%s]:%s", hbuf, sbuf); - } else { - snprintf(output, sizeof(output), "%s:%s", hbuf, sbuf); - } - return output; -} - /** * Look up the local or remote side of a connected socket structure. * @@ -633,23 +602,39 @@ static char *host_and_port(const struct sockaddr_storage *ss) * remote side. * * \return A static character string identifying hostname and port of the - * chosen side. + * chosen side in numeric host:port format. * - * \sa getsockname(2), getpeername(2). + * \sa getsockname(2), getpeername(2), parse_url(), getnameinfo(3), + * services(5), nsswitch.conf(5). */ static char *__get_sock_name(int fd, int (*getname)(int, struct sockaddr*, socklen_t *)) { struct sockaddr_storage ss; + const struct sockaddr *sa; socklen_t sslen = sizeof(ss); + char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; + static char output[sizeof(hbuf) + sizeof(sbuf) + 4]; + int ret; if (getname(fd, (struct sockaddr *)&ss, &sslen) < 0) { - static char *dont_know = "(don't know)"; PARA_ERROR_LOG("can not determine address from fd %d: %s\n", fd, strerror(errno)); - return dont_know; + snprintf(output, sizeof(output), "(unknown)"); + return output; } - return host_and_port(&ss); + sa = normalize_ip_address(&ss); + ret = getnameinfo(sa, salen(sa), hbuf, sizeof(hbuf), sbuf, + sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV); + if (ret) { + PARA_WARNING_LOG("hostname lookup error (%s).\n", + gai_strerror(ret)); + snprintf(output, sizeof(output), "(lookup error)"); + } else if (sa->sa_family == AF_INET6) + snprintf(output, sizeof(output), "[%s]:%s", hbuf, sbuf); + else + snprintf(output, sizeof(output), "%s:%s", hbuf, sbuf); + return output; } /** diff --git a/net.h b/net.h index a1af08ae..80f57944 100644 --- a/net.h +++ b/net.h @@ -60,9 +60,9 @@ struct flowopts; extern struct flowopts *flowopt_new(void); extern void flowopt_add(struct flowopts *fo, int level, int opt, - char *name, const void *val, int len); + const char *name, const void *val, int len); extern void flowopt_add_bool(struct flowopts *fo, int lev, int opt, - char *optname, bool on_or_off); + const char *optname, bool on_or_off); /** Flowopt shortcut macros */ #define OPT_ADD(fo, lev, opt, val, len) flowopt_add(fo, lev, opt, #opt, val, len) #define OPT_ENABLE(fo, lev, opt) flowopt_add_bool(fo, lev, opt, #opt, 1)