43 if (family == AF_UNSPEC)
46 if ((p = (
char *) inet_ntop(family, addr, cp, size)) == NULL)
52 static pthread_mutex_t
mutex = PTHREAD_MUTEX_INITIALIZER;
56 if ((p = inet_ntoa(addr)) != NULL)
83 res = inet_pton(family, cp, addr);
88 cp != NULL ? cp :
"(NULL)");
91 res = inet_aton(cp, addr) == 0 ? 0 : 1;
94 cp != NULL ? cp :
"(NULL)");
112 switch (sa->sa_family)
116 struct sockaddr_in *sin = (
struct sockaddr_in *) sa;
118 if (
jinet_ntop(sa->sa_family, &sin->sin_addr.s_addr, buf, size) == NULL)
125 struct sockaddr_in6 *sin6 = (
struct sockaddr_in6 *) sa;
127 if (
jinet_ntop(sa->sa_family, &sin6->sin6_addr, buf, size) == NULL)
145 bool aipv6, bipv6 =
FALSE;
147 aipv6 = (
strchr(a,
':') != NULL);
148 bipv6 = (
strchr(b,
':') != NULL);
152 return strcasecmp(a, b);
155 if (!aipv6 && !bipv6)
157 struct in_addr aa, ab;
163 if (htonl(aa.s_addr) > htonl(ab.s_addr))
165 if (htonl(aa.s_addr) < htonl(ab.s_addr))
188 memset(host, 0, size);
193 if (gethostname(host, size) < 0)
203 struct utsname udata;
206 if (uname(&udata) < 0)
211 strlcpy(host, udata.nodename, size);
216 # if SYSINFO_NODENAME 219 if (sysinfo(SI_HOSTNAME, host,
sizeof (host)) < 0)
239 #define NI_MAXHOST 1025 242 #define NI_MAXSERV 32 246 convNameAddr(bout, bin, size, conv2addr)
252 struct addrinfo hints, *res, *rp;
258 memset(bout, 0, size);
260 memset(&hints, 0,
sizeof (hints));
261 hints.ai_family = AF_UNSPEC;
262 hints.ai_socktype = SOCK_DGRAM;
263 hints.ai_flags = AI_PASSIVE;
264 hints.ai_protocol = 0;
265 hints.ai_canonname = NULL;
266 hints.ai_addr = NULL;
267 hints.ai_next = NULL;
269 r = getaddrinfo(bin, NULL, &hints, &res);
272 if (conv2addr && r == EAI_NONAME)
280 STRBOOL(conv2addr,
"name -> addr",
"addr -> name"),
286 for (rp = res; rp != NULL; rp = rp->ai_next)
291 r = getnameinfo(rp->ai_addr, rp->ai_addrlen,
292 buf, sizeof (buf), NULL, 0, conv2addr ? NI_NUMERICHOST : 0);
298 STRBOOL(conv2addr,
"name -> addr",
"addr -> name"),
307 snprintf(bout, size,
"[%s]", buf);
328 return convNameAddr(name, ip, len,
FALSE);
341 return convNameAddr(ip, name, len,
TRUE);
358 if (family == AF_UNSPEC)
361 if ((p = (
char *) inet_ntop(family, addr, cp, size)) == NULL)
367 static pthread_mutex_t
mutex = PTHREAD_MUTEX_INITIALIZER;
371 if ((p = inet_ntoa(addr)) != NULL)
398 res = inet_pton(family, cp, addr);
402 ZE_LogMsgError(0,
"inet_pton : /%s/ isn't a valid address string",
403 cp != NULL ? cp :
"(NULL)");
405 #ifdef HAVE_INET_ATON 406 res = inet_aton(cp, addr) == 0 ? 0 : 1;
409 cp != NULL ? cp :
"(NULL)");
422 struct sockaddr *sock;
433 if (addr != NULL && alen > 0)
435 memset(buf, 0,
sizeof (buf));
436 memset(addr, 0, alen);
437 r = getnameinfo(sock, slen, buf,
sizeof (buf), NULL, 0, NI_NUMERICHOST);
448 if (name != NULL && nlen > 0)
450 memset(buf, 0,
sizeof (buf));
451 memset(name, 0, nlen);
452 r = getnameinfo(sock, slen, buf,
sizeof (buf), NULL, 0, 0);
462 snprintf(bout, size,
"[%s]", buf);
484 bool aip, bip =
FALSE;
486 aip = (
strchr(a,
':') != NULL);
487 bip = (
strchr(b,
':') != NULL);
491 return strcasecmp(a, b);
496 struct in_addr aa, ab;
501 if (htonl(aa.s_addr) > htonl(ab.s_addr))
503 if (htonl(aa.s_addr) < htonl(ab.s_addr))
520 # define J_POLL_RD_FLAGS (POLLIN | POLLPRI | POLLHUP) 521 # define J_POLL_WR_FLAGS (POLLOUT | POLLHUP) 524 #ifndef FDREADY_LOG_LEVEL 525 #define FDREADY_LOG_LEVEL 0 537 time_t now = time(NULL);
542 flags = (fdmode ==
ZE_SOCK_READ ? J_POLL_RD_FLAGS : J_POLL_WR_FLAGS);
549 r = poll(&pfd, 1, to);
554 if ((pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) != 0)
557 STRBOOL((pfd.revents & POLLERR) ==
TRUE,
"T",
"F"),
558 STRBOOL((pfd.revents & POLLHUP) ==
TRUE,
"T",
"F"),
559 STRBOOL((pfd.revents & POLLNVAL) ==
TRUE,
"T",
"F"));
574 if ((pfd.revents & flags) != 0)
577 if ((pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) != 0)
580 if (time(NULL) > (now + to / 1000))
584 ZE_LogMsgError(0,
"ERROR=poll:mi_rd_socket_ready, socket=%d, r=%d, errno=%d revents=%d", sd,
585 r, errno, pfd.revents);
591 struct timeval timeout;
595 timeout.tv_usec = 1000 * (to % 1000);
596 timeout.tv_sec = to / 1000;
598 FD_SET((
unsigned int) sd, &rdfs);
600 FD_SET((
unsigned int) sd, &excfs);
602 r = select(sd + 1, &rdfs, NULL, &excfs, timeout);
604 r = select(sd + 1, NULL, &rdfs, &excfs, timeout);
613 if (FD_ISSET(sd, &excfs))
615 if (FD_ISSET(sd, &rdfs))
626 #define MAX_EINTR_ERRORS 24 636 memset(str, 0,
sizeof(str));
637 va_start(arg, format);
638 (void) vsnprintf(str,
sizeof (str), format, arg);
645 r = sendto(sd, str, strlen(str), 0, NULL, 0);
689 n = recvfrom(fd, p, 1, MSG_DONTWAIT, NULL, NULL);
694 if (errno == EINTR || errno == EAGAIN)
bool sd_printf(int sd, char *format,...)
int inet_p2n(sa_family_t family, char *cp, void *addr)
#define MUTEX_UNLOCK(mutex)
#define MUTEX_LOCK(mutex)
#define FDREADY_LOG_LEVEL
int jfd_ready(int sd, bool fdmode, long to)
int Ip_strcmp(char *a, char *b)
#define ZE_LogMsgError(level,...)
int jinet_pton(sa_family_t family, char *cp, void *addr)
int ip_strcmp(char *a, char *b)
bool jsock_ntop(struct sockaddr *sa, socklen_t salen, char *buf, size_t size)
bool get_hostbyaddr(char *ip, char *name, int len)
#define ZE_LogMsgDebug(level,...)
bool get_hostbysock(struct sockaddr *sock, socklen_t slen, char *addr, size_t alen, char *name, size_t nlen)
#define ZE_MessageInfo(level,...)
bool get_hostname(char *host, size_t size)
#define ZE_LogSysError(...)
int sd_readln(int fd, char *buf, size_t size)
#define STRCASEEQUAL(a, b)
char * inet_n2p(int family, void *addr, char *cp, size_t size)
bool get_hostbyname(char *name, char *ip, int len)
char * jinet_ntop(int family, void *addr, char *cp, size_t size)