From 097bc423a38d368f6720b87b436f599301e3fb5f Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Tue, 21 Dec 2004 16:52:18 +0000 Subject: [PATCH] Apply fixes suggested for old Solaris networking. Fixes bug 190. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1770 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/lib/address_conf.c | 44 ++++++++++++++--------------- bacula/src/lib/bnet.c | 52 +++++++++++++---------------------- 2 files changed, 41 insertions(+), 55 deletions(-) diff --git a/bacula/src/lib/address_conf.c b/bacula/src/lib/address_conf.c index 3b692025d8..0ae057a47e 100644 --- a/bacula/src/lib/address_conf.c +++ b/bacula/src/lib/address_conf.c @@ -200,7 +200,7 @@ const char *IPADDR::build_address_str(char *buf, int blen) { char tmp[1024]; bsnprintf(buf, blen, "host[%s:%s:%hu] ", - get_family() == AF_INET ? "ipv4" : "ipv6", + get_family() == AF_INET ? "ipv4" : "ipv6", get_address(tmp, sizeof(tmp) - 1), get_port_host_order()); return buf; } @@ -274,7 +274,7 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp } else if (iaddr->get_type() != type) { *errstr = (char *)malloc(1024); bsnprintf(*errstr, 1023, - "the old style addresses cannot be mixed with new style"); + "the old style addresses cannot be mixed with new style"); return 0; } } @@ -292,12 +292,12 @@ static int add_address(dlist **out, IPADDR::i_type type, unsigned short defaultp if (0 < pnum && pnum < 0xffff) { port = htons(pnum); } else { - struct servent *s = getservbyname(port_str, "tcp"); + struct servent *s = getservbyname(port_str, "tcp"); if (s) { port = s->s_port; } else { *errstr = (char *)malloc(1024); - bsnprintf(*errstr, 1023, "can't resolve service(%s)", port_str); + bsnprintf(*errstr, 1023, "can't resolve service(%s)", port_str); return 0; } } @@ -405,7 +405,7 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass) } do { if (!(token == T_UNQUOTED_STRING || token == T_IDENTIFIER)) { - scan_err1(lc, _("Expected a string, got: %s"), lc->str); + scan_err1(lc, _("Expected a string, got: %s"), lc->str); } if (strcasecmp("ip", lc->str) == 0 || strcasecmp("ipv4", lc->str) == 0) { family = AF_INET; @@ -414,46 +414,46 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass) else if (strcasecmp("ipv6", lc->str) == 0) { family = AF_INET6; } else { - scan_err1(lc, _("Expected a string [ip|ipv4|ipv6], got: %s"), lc->str); + scan_err1(lc, _("Expected a string [ip|ipv4|ipv6], got: %s"), lc->str); } #else else { - scan_err1(lc, _("Expected a string [ip|ipv4], got: %s"), lc->str); + scan_err1(lc, _("Expected a string [ip|ipv4], got: %s"), lc->str); } #endif token = lex_get_token(lc, T_SKIP_EOL); if (token != T_EQUALS) { - scan_err1(lc, _("Expected a equal =, got: %s"), lc->str); + scan_err1(lc, _("Expected a equal =, got: %s"), lc->str); } token = lex_get_token(lc, T_SKIP_EOL); if (token != T_BOB) { - scan_err1(lc, _("Expected a block beginn { , got: %s"), lc->str); + scan_err1(lc, _("Expected a block beginn { , got: %s"), lc->str); } token = lex_get_token(lc, T_SKIP_EOL); exist = EMPTYLINE; port_str[0] = hostname_str[0] = '\0'; do { if (token != T_IDENTIFIER) { - scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str); + scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str); } - if (strcasecmp("port", lc->str) == 0) { + if (strcasecmp("port", lc->str) == 0) { next_line = PORTLINE; if (exist & PORTLINE) { - scan_err0(lc, _("Only one port per address block")); + scan_err0(lc, _("Only one port per address block")); } exist |= PORTLINE; - } else if (strcasecmp("addr", lc->str) == 0) { + } else if (strcasecmp("addr", lc->str) == 0) { next_line = ADDRLINE; if (exist & ADDRLINE) { - scan_err0(lc, _("Only one addr per address block")); + scan_err0(lc, _("Only one addr per address block")); } exist |= ADDRLINE; } else { - scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str); + scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str); } token = lex_get_token(lc, T_SKIP_EOL); if (token != T_EQUALS) { - scan_err1(lc, _("Expected a equal =, got: %s"), lc->str); + scan_err1(lc, _("Expected a equal =, got: %s"), lc->str); } token = lex_get_token(lc, T_SKIP_EOL); switch (next_line) { @@ -461,31 +461,31 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass) if (! (token == T_UNQUOTED_STRING || token == T_NUMBER || token == T_IDENTIFIER)) { - scan_err1(lc, _("Expected a number or a string, got: %s"), lc->str); + scan_err1(lc, _("Expected a number or a string, got: %s"), lc->str); } bstrncpy(port_str, lc->str, sizeof(port_str)); break; case ADDRLINE: if (!(token == T_UNQUOTED_STRING || token == T_IDENTIFIER)) { - scan_err1(lc, _("Expected an IP number or a hostname, got: %s"), + scan_err1(lc, _("Expected an IP number or a hostname, got: %s"), lc->str); } bstrncpy(hostname_str, lc->str, sizeof(hostname_str)); break; case EMPTYLINE: - scan_err0(lc, _("State machine missmatch")); + scan_err0(lc, _("State machine missmatch")); break; } token = lex_get_token(lc, T_SKIP_EOL); } while (token == T_IDENTIFIER); if (token != T_EOB) { - scan_err1(lc, _("Expected a end of block }, got: %s"), lc->str); + scan_err1(lc, _("Expected a end of block }, got: %s"), lc->str); } char *errstr; if (pass == 1 && !add_address((dlist **)(item->value), IPADDR::R_MULTIPLE, htons(item->default_value), family, hostname_str, port_str, &errstr)) { - scan_err3(lc, _("Can't add hostname(%s) and port(%s) to addrlist (%s)"), + scan_err3(lc, _("Can't add hostname(%s) and port(%s) to addrlist (%s)"), hostname_str, port_str, errstr); free(errstr); } @@ -572,7 +572,7 @@ char *sockaddr_to_ascii(const struct sockaddr *sa, char *buf, int len) (void*)&(((struct sockaddr_in*)sa)->sin_addr) : (void*)&(((struct sockaddr_in6*)sa)->sin6_addr), # else - (void*)&(((struct sockaddr_in*)sa)->sin_addr) : + (void*)&(((struct sockaddr_in*)sa)->sin_addr), # endif /* HAVE_IPV6 */ buf, len); #else diff --git a/bacula/src/lib/bnet.c b/bacula/src/lib/bnet.c index f0e21a628d..d985c82d70 100644 --- a/bacula/src/lib/bnet.c +++ b/bacula/src/lib/bnet.c @@ -53,20 +53,6 @@ extern time_t watchdog_time; #define socketClose(fd) close(fd) #endif - -#ifdef HAVE_OLD_SOCKOPT -int inet_aton(const char *cp, struct in_addr *inp) -{ - struct in_addr inaddr; - - if((inaddr.s_addr = inet_addr(cp)) != INADDR_NONE) { - inp->s_addr = inaddr.s_addr; - return 1; - } - return 0; -} -#endif - /* * Read a nbytes from the network. * It is possible that the total bytes require in several @@ -109,9 +95,9 @@ static int32_t write_nbytes(BSOCK * bsock, char *ptr, int32_t nbytes) if (nwritten != nbytes) { berrno be; bsock->b_errno = errno; - Qmsg1(bsock->jcr, M_FATAL, 0, _("Attr spool write error. ERR=%s\n"), + Qmsg1(bsock->jcr, M_FATAL, 0, _("Attr spool write error. ERR=%s\n"), be.strerror()); - Dmsg2(400, "nwritten=%d nbytes=%d.\n", nwritten, nbytes); + Dmsg2(400, "nwritten=%d nbytes=%d.\n", nwritten, nbytes); errno = bsock->b_errno; return -1; } @@ -217,7 +203,7 @@ int32_t bnet_recv(BSOCK * bsock) if (pktsiz < 0 || pktsiz > 1000000) { if (pktsiz > 0) { /* if packet too big */ Qmsg3(bsock->jcr, M_FATAL, 0, - _("Packet size too big from \"%s:%s:%d. Terminating connection.\n"), + _("Packet size too big from \"%s:%s:%d. Terminating connection.\n"), bsock->who, bsock->host, bsock->port); pktsiz = BNET_TERMINATE; /* hang up */ } @@ -320,8 +306,8 @@ int bnet_despool_to_bsock(BSOCK * bsock, void update_attr_spool_size(ssize_t siz nbytes = fread(bsock->msg, 1, bsock->msglen, bsock->spool_fd); if (nbytes != (size_t) bsock->msglen) { berrno be; - Dmsg2(400, "nbytes=%d msglen=%d\n", nbytes, bsock->msglen); - Qmsg1(bsock->jcr, M_FATAL, 0, _("fread attr spool error. ERR=%s\n"), + Dmsg2(400, "nbytes=%d msglen=%d\n", nbytes, bsock->msglen); + Qmsg1(bsock->jcr, M_FATAL, 0, _("fread attr spool error. ERR=%s\n"), be.strerror()); update_attr_spool_size(tsize - last); return 0; @@ -381,12 +367,12 @@ bool bnet_send(BSOCK * bsock) if (rc < 0) { if (!bsock->suppress_error_msgs && !bsock->timed_out) { Qmsg4(bsock->jcr, M_ERROR, 0, - _("Write error sending to %s:%s:%d: ERR=%s\n"), bsock->who, + _("Write error sending to %s:%s:%d: ERR=%s\n"), bsock->who, bsock->host, bsock->port, bnet_strerror(bsock)); } } else { Qmsg5(bsock->jcr, M_ERROR, 0, - _("Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"), bsock->who, + _("Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"), bsock->who, bsock->host, bsock->port, bsock->msglen, rc); } return false; @@ -412,12 +398,12 @@ bool bnet_send(BSOCK * bsock) if (rc < 0) { if (!bsock->suppress_error_msgs) { Qmsg4(bsock->jcr, M_ERROR, 0, - _("Write error sending to %s:%s:%d: ERR=%s\n"), bsock->who, + _("Write error sending to %s:%s:%d: ERR=%s\n"), bsock->who, bsock->host, bsock->port, bnet_strerror(bsock)); } } else { Qmsg5(bsock->jcr, M_ERROR, 0, - _("Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"), + _("Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"), bsock->msglen, bsock->who, bsock->host, bsock->port, rc); } return false; @@ -712,7 +698,7 @@ static BSOCK *bnet_open(JCR * jcr, const char *name, char *host, char *service, berrno be; save_errno = errno; *fatal = 1; - Pmsg3(000, "Socket open error. proto=%d port=%d. ERR=%s\n", + Pmsg3(000, "Socket open error. proto=%d port=%d. ERR=%s\n", ipaddr->get_family(), ipaddr->get_port_host_order(), be.strerror()); continue; } @@ -721,7 +707,7 @@ static BSOCK *bnet_open(JCR * jcr, const char *name, char *host, char *service, */ if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (sockopt_val_t)&turnon, sizeof(turnon)) < 0) { berrno be; - Qmsg1(jcr, M_WARNING, 0, _("Cannot set SO_KEEPALIVE on socket: %s\n"), + Qmsg1(jcr, M_WARNING, 0, _("Cannot set SO_KEEPALIVE on socket: %s\n"), be.strerror()); } /* connect to server */ @@ -776,13 +762,13 @@ BSOCK *bnet_connect(JCR * jcr, int retry_interval, int max_retry_time, if (i < 0) { i = 60 * 5; /* complain again in 5 minutes */ if (verbose) - Qmsg4(jcr, M_WARNING, 0, "Could not connect to %s on %s:%d. ERR=%s\n" + Qmsg4(jcr, M_WARNING, 0, "Could not connect to %s on %s:%d. ERR=%s\n" "Retrying ...\n", name, host, port, be.strerror()); } bmicrosleep(retry_interval, 0); max_retry_time -= retry_interval; if (max_retry_time <= 0) { - Qmsg4(jcr, M_FATAL, 0, _("Unable to connect to %s on %s:%d. ERR=%s\n"), + Qmsg4(jcr, M_FATAL, 0, _("Unable to connect to %s on %s:%d. ERR=%s\n"), name, host, port, be.strerror()); return NULL; } @@ -867,17 +853,17 @@ bool bnet_set_buffer_size(BSOCK * bs, uint32_t size, int rw) while ((dbuf_size > TAPE_BSIZE) && (setsockopt(bs->fd, SOL_SOCKET, SO_RCVBUF, (sockopt_val_t) & dbuf_size, sizeof(dbuf_size)) < 0)) { berrno be; - Qmsg1(bs->jcr, M_ERROR, 0, _("sockopt error: %s\n"), be.strerror()); + Qmsg1(bs->jcr, M_ERROR, 0, _("sockopt error: %s\n"), be.strerror()); dbuf_size -= TAPE_BSIZE; } Dmsg1(200, "set network buffer size=%d\n", dbuf_size); if (dbuf_size != start_size) { Qmsg1(bs->jcr, M_WARNING, 0, - _("Warning network buffer = %d bytes not max size.\n"), dbuf_size); + _("Warning network buffer = %d bytes not max size.\n"), dbuf_size); } if (dbuf_size % TAPE_BSIZE != 0) { Qmsg1(bs->jcr, M_ABORT, 0, - _("Network buffer size %d not multiple of tape block size.\n"), + _("Network buffer size %d not multiple of tape block size.\n"), dbuf_size); } } @@ -891,17 +877,17 @@ bool bnet_set_buffer_size(BSOCK * bs, uint32_t size, int rw) while ((dbuf_size > TAPE_BSIZE) && (setsockopt(bs->fd, SOL_SOCKET, SO_SNDBUF, (sockopt_val_t) & dbuf_size, sizeof(dbuf_size)) < 0)) { berrno be; - Qmsg1(bs->jcr, M_ERROR, 0, _("sockopt error: %s\n"), be.strerror()); + Qmsg1(bs->jcr, M_ERROR, 0, _("sockopt error: %s\n"), be.strerror()); dbuf_size -= TAPE_BSIZE; } Dmsg1(200, "set network buffer size=%d\n", dbuf_size); if (dbuf_size != start_size) { Qmsg1(bs->jcr, M_WARNING, 0, - _("Warning network buffer = %d bytes not max size.\n"), dbuf_size); + _("Warning network buffer = %d bytes not max size.\n"), dbuf_size); } if (dbuf_size % TAPE_BSIZE != 0) { Qmsg1(bs->jcr, M_ABORT, 0, - _("Network buffer size %d not multiple of tape block size.\n"), + _("Network buffer size %d not multiple of tape block size.\n"), dbuf_size); } } -- 2.39.5