diff options
Diffstat (limited to 'newlib/libc/sys/linux/net/getnetbynis.c')
-rw-r--r-- | newlib/libc/sys/linux/net/getnetbynis.c | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/newlib/libc/sys/linux/net/getnetbynis.c b/newlib/libc/sys/linux/net/getnetbynis.c deleted file mode 100644 index 6d222e60f..000000000 --- a/newlib/libc/sys/linux/net/getnetbynis.c +++ /dev/null @@ -1,190 +0,0 @@ -/*- - * Copyright (c) 1994, Garrett Wollman - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -#include <sys/types.h> -#include <sys/types.h> - -#include <sys/param.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <netdb.h> -#include <stdio.h> -#include <stdlib.h> -#include <ctype.h> -#include <errno.h> -#include <string.h> -#include <stdarg.h> -#include <nsswitch.h> -#include <arpa/nameser.h> -#ifdef YP -#include <rpc/rpc.h> -#include <rpcsvc/yp_prot.h> -#include <rpcsvc/ypclnt.h> -#endif - -#define MAXALIASES 35 -#define MAXADDRS 35 - -#ifdef YP -static char *host_aliases[MAXALIASES]; - -static struct netent * -_getnetbynis(const char *name, char *map, int af) -{ - char *cp, **q; - static char *result; - int resultlen; - static struct netent h; - static char *domain = (char *)NULL; - static char ypbuf[YPMAXRECORD + 2]; - - switch(af) { - case AF_INET: - break; - default: - case AF_INET6: - errno = EAFNOSUPPORT; - return NULL; - } - - if (domain == (char *)NULL) - if (yp_get_default_domain (&domain)) - return (NULL); - - if (yp_match(domain, map, name, strlen(name), &result, &resultlen)) - return (NULL); - - bcopy((char *)result, (char *)&ypbuf, resultlen); - ypbuf[resultlen] = '\0'; - free(result); - result = (char *)&ypbuf; - - if ((cp = index(result, '\n'))) - *cp = '\0'; - - cp = strpbrk(result, " \t"); - *cp++ = '\0'; - h.n_name = result; - - while (*cp == ' ' || *cp == '\t') - cp++; - - h.n_net = inet_network(cp); - h.n_addrtype = AF_INET; - - q = h.n_aliases = host_aliases; - cp = strpbrk(cp, " \t"); - if (cp != NULL) - *cp++ = '\0'; - while (cp && *cp) { - if (*cp == ' ' || *cp == '\t') { - cp++; - continue; - } - if (q < &host_aliases[MAXALIASES - 1]) - *q++ = cp; - cp = strpbrk(cp, " \t"); - if (cp != NULL) - *cp++ = '\0'; - } - *q = NULL; - return (&h); -} -#endif /* YP */ - -int -_nis_getnetbyname(void *rval, void *cb_data, va_list ap) -{ -#ifdef YP - const char *name; - - name = va_arg(ap, const char *); - - *(struct netent **)rval = _getnetbynis(name, "networks.byname", AF_INET); - return (*(struct netent **)rval != NULL) ? NS_SUCCESS : NS_NOTFOUND; -#else - return NS_UNAVAIL; -#endif - -} - -int -_nis_getnetbyaddr(void *rval, void *cb_data, va_list ap) -{ -#ifdef YP - unsigned long addr; - int af; - char *str, *cp; - unsigned long net2; - int nn; - unsigned int netbr[4]; - char buf[MAXDNAME]; - - addr = va_arg(ap, unsigned long); - af = va_arg(ap, int); - - *(struct netent **)rval = NULL; - - if (af != AF_INET) { - errno = EAFNOSUPPORT; - return NS_UNAVAIL; - } - - for (nn = 4, net2 = addr; net2; net2 >>= 8) { - netbr[--nn] = net2 & 0xff; - } - - switch (nn) { - case 3: /* Class A */ - sprintf(buf, "%u", netbr[3]); - break; - case 2: /* Class B */ - sprintf(buf, "%u.%u", netbr[2], netbr[3]); - break; - case 1: /* Class C */ - sprintf(buf, "%u.%u.%u", netbr[1], netbr[2], netbr[3]); - break; - case 0: /* Class D - E */ - sprintf(buf, "%u.%u.%u.%u", netbr[0], netbr[1], - netbr[2], netbr[3]); - break; - } - - str = (char *)&buf; - cp = str + (strlen(str) - 2); - - while(!strcmp(cp, ".0")) { - *cp = '\0'; - cp = str + (strlen(str) - 2); - } - - *(struct netent **)rval = _getnetbynis(str, "networks.byaddr", af); - return (*(struct netent**)rval != NULL) ? NS_SUCCESS : NS_NOTFOUND; -#else - return NS_UNAVAIL; -#endif /* YP */ -} |