diff options
Diffstat (limited to 'contrib/bind/tools/addr.c')
-rw-r--r-- | contrib/bind/tools/addr.c | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/contrib/bind/tools/addr.c b/contrib/bind/tools/addr.c deleted file mode 100644 index 98a505c608d3..000000000000 --- a/contrib/bind/tools/addr.c +++ /dev/null @@ -1,173 +0,0 @@ -#if !defined(lint) && !defined(SABER) -static char rcsid[] = "$Id: addr.c,v 8.4 1996/05/23 08:21:28 vixie Exp $"; -#endif /* not lint */ - -/* Copyright (c) 1996 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 <sys/param.h> -#include <sys/file.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/nameser.h> -#include <arpa/inet.h> -#include <string.h> -#include <stdio.h> -#include <ctype.h> -#include "../conf/portability.h" - -extern char *optarg; -extern int optind; -extern int opterr; -extern int optopt; - -static const char *prog = "addr"; - -#define BIGGEST_ADDRESS IN6ADDRSZ - -static void -usage() { - fprintf(stderr, - "usage: %s [-4] [-6] [-n hexstring] [-p address]\n", - prog); - exit(1); -} - -/* Warning: this scribbles on `dst' even if it's going to return `0'. */ -static int -hexstring(src, dst, len) - const char *src; - u_char *dst; - int len; -{ - static const char xdigits[] = "0123456789abcdef"; - u_char *ptr = dst, *end = dst + len; - u_int val; - int ch, digits; - - val = 0; - digits = 0; - bzero((void*)dst, len); - while ((ch = *src++) != '\0') { - if (ch == '0' && (*src == 'x' || *src == 'X')) { - src++; - continue; - } - if (isascii(ch) && (isspace(ch) || ispunct(ch))) { - if (digits > 0) { - if (ptr == end) - return (0); - *ptr++ = (u_char) (val & 0xff); - val = 0; - digits = 0; - } - digits = 0; - continue; - } - if (!isascii(ch) || !isxdigit(ch)) - return (0); - if (isupper(ch)) - ch = tolower(ch); - /* Clock it in using little endian arithmetic. */ - val <<= 4; - val |= (strchr(xdigits, ch) - xdigits); - if (++digits == 2) { - if (ptr == end) - return (0); - *ptr++ = (u_char) (val & 0xff); - digits = 0; - val = 0; - } - } - if (digits > 0) { - if (ptr == end) - return (0); - *ptr++ = (u_char) (val & 0xff); - } - return ((ptr - dst) == len); -} - -static void -display(input, af, addr, len) - const char *input; - int af; - const u_char *addr; - int len; -{ - static int before = 0; - char p[sizeof "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255"]; - int i; - - if (before) - putchar('\n'); - else - before++; - - printf("Input: \"%s\"\n", input); - printf("Network: [af%d len%d]", af, len); - for (i = 0; i < len; i++) - printf(" %02x", addr[i]); - putchar('\n'); - printf("Presentation: \"%s\"\n", inet_ntop(af, addr, p, sizeof p)); -} - -int -main(argc, argv) - int argc; - char *argv[]; -{ - u_char addr[BIGGEST_ADDRESS]; - int optchr, af, len; - - prog = argv[0]; - af = AF_INET; - len = INADDRSZ; - while ((optchr = getopt(argc, argv, "46n:p:")) != -1) { - switch (optchr) { - case '4': - af = AF_INET; - len = INADDRSZ; - break; - case '6': - af = AF_INET6; - len = IN6ADDRSZ; - break; - case 'n': - if (!hexstring(optarg, addr, len)) { - fprintf(stderr, "bad hex string: \"%s\"\n", - optarg); - usage(); - /* NOTREACHED */ - } - display(optarg, af, addr, len); - break; - case 'p': - if (inet_pton(af, optarg, addr) <= 0) { - fprintf(stderr, "bad address: \"%s\"\n", - optarg); - usage(); - /* NOTREACHED */ - } - display(optarg, af, addr, len); - break; - default: - usage(); - /* NOTREACHED */ - } - } - exit(0); - /* NOTREACHED */ -} |