Source: @pullmoll Upstream: no Reason: Musl libc does not have inet_nsap_addr(3) [undocumented] --- a/src/common/callerid.c 2019-12-20 21:43:45.000000000 +0100 +++ b/src/common/callerid.c 2020-02-23 12:45:25.878565832 +0100 @@ -81,6 +81,68 @@ #define PATH_PROCNET_TCP6 "/proc/net/tcp6" #endif +#if !defined(__GLIBC__) +/* + * Copyright (c) 1996-1999 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ +#include +#include +#include +#include +#include +#include +#include +#include +static char +xtob(int c) { + return (c - (((c >= '0') && (c <= '9')) ? '0' : '7')); +} + +unsigned int inet_nsap_addr(const char *ascii, unsigned char *binary, int maxlen) +{ + unsigned char c, nib; + unsigned int len = 0; + while ((c = *ascii++) != '\0' && len < (unsigned int)maxlen) { + if (c == '.' || c == '+' || c == '/') + continue; + if (!isascii(c)) + return (0); + c = toupper(c); + if (isxdigit(c)) { + nib = xtob(c); + c = *ascii++; + if (c != '\0') { + c = toupper(c); + if (isxdigit(c)) { + *binary++ = (nib << 4) | xtob(c); + len++; + } else { + return 0; + } + } else { + return 0; + } + } else { + return 0; + } + } + return len; +} +#endif /* !defined(__GLIBC__) */ + strong_alias(callerid_get_own_netinfo, slurm_callerid_get_own_netinfo); static int _match_inode(callerid_conn_t *conn_result, ino_t *inode_search,