ns_print.c (156956) | ns_print.c (170244) |
---|---|
1/* 2 * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") 3 * Copyright (c) 1996-1999 by Internet Software Consortium. 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 15 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18#ifndef lint | 1/* 2 * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") 3 * Copyright (c) 1996-1999 by Internet Software Consortium. 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 15 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18#ifndef lint |
19static const char rcsid[] = "$Id: ns_print.c,v 1.3.2.1.4.7 2004/09/16 07:01:12 marka Exp $"; | 19static const char rcsid[] = "$Id: ns_print.c,v 1.6.18.4 2005/04/27 05:01:09 sra Exp $"; |
20#endif 21#include <sys/cdefs.h> | 20#endif 21#include <sys/cdefs.h> |
22__FBSDID("$FreeBSD: head/lib/libc/nameser/ns_print.c 156956 2006-03-21 15:37:16Z ume $"); | 22__FBSDID("$FreeBSD: head/lib/libc/nameser/ns_print.c 170244 2007-06-03 17:20:27Z ume $"); |
23 24/* Import. */ 25 26#include "port_before.h" 27 28#include <sys/types.h> 29#include <sys/socket.h> 30 --- 40 unchanged lines hidden (view full) --- 71#define T(x) \ 72 do { \ 73 if ((x) < 0) \ 74 return (-1); \ 75 } while (0) 76 77/* Public. */ 78 | 23 24/* Import. */ 25 26#include "port_before.h" 27 28#include <sys/types.h> 29#include <sys/socket.h> 30 --- 40 unchanged lines hidden (view full) --- 71#define T(x) \ 72 do { \ 73 if ((x) < 0) \ 74 return (-1); \ 75 } while (0) 76 77/* Public. */ 78 |
79/* 80 * int 81 * ns_sprintrr(handle, rr, name_ctx, origin, buf, buflen) | 79/*% |
82 * Convert an RR to presentation format. | 80 * Convert an RR to presentation format. |
81 * |
|
83 * return: | 82 * return: |
84 * Number of characters written to buf, or -1 (check errno). | 83 *\li Number of characters written to buf, or -1 (check errno). |
85 */ 86int 87ns_sprintrr(const ns_msg *handle, const ns_rr *rr, 88 const char *name_ctx, const char *origin, 89 char *buf, size_t buflen) 90{ 91 int n; 92 93 n = ns_sprintrrf(ns_msg_base(*handle), ns_msg_size(*handle), 94 ns_rr_name(*rr), ns_rr_class(*rr), ns_rr_type(*rr), 95 ns_rr_ttl(*rr), ns_rr_rdata(*rr), ns_rr_rdlen(*rr), 96 name_ctx, origin, buf, buflen); 97 return (n); 98} 99 | 84 */ 85int 86ns_sprintrr(const ns_msg *handle, const ns_rr *rr, 87 const char *name_ctx, const char *origin, 88 char *buf, size_t buflen) 89{ 90 int n; 91 92 n = ns_sprintrrf(ns_msg_base(*handle), ns_msg_size(*handle), 93 ns_rr_name(*rr), ns_rr_class(*rr), ns_rr_type(*rr), 94 ns_rr_ttl(*rr), ns_rr_rdata(*rr), ns_rr_rdlen(*rr), 95 name_ctx, origin, buf, buflen); 96 return (n); 97} 98 |
100/* 101 * int 102 * ns_sprintrrf(msg, msglen, name, class, type, ttl, rdata, rdlen, 103 * name_ctx, origin, buf, buflen) | 99/*% |
104 * Convert the fields of an RR into presentation format. | 100 * Convert the fields of an RR into presentation format. |
101 * |
|
105 * return: | 102 * return: |
106 * Number of characters written to buf, or -1 (check errno). | 103 *\li Number of characters written to buf, or -1 (check errno). |
107 */ 108int 109ns_sprintrrf(const u_char *msg, size_t msglen, 110 const char *name, ns_class class, ns_type type, 111 u_long ttl, const u_char *rdata, size_t rdlen, 112 const char *name_ctx, const char *origin, 113 char *buf, size_t buflen) 114{ --- 536 unchanged lines hidden (view full) --- 651 } 652 653 case ns_t_tsig: { 654 /* BEW - need to complete this */ 655 int n; 656 657 T(len = addname(msg, msglen, &rdata, origin, &buf, &buflen)); 658 T(addstr(" ", 1, &buf, &buflen)); | 104 */ 105int 106ns_sprintrrf(const u_char *msg, size_t msglen, 107 const char *name, ns_class class, ns_type type, 108 u_long ttl, const u_char *rdata, size_t rdlen, 109 const char *name_ctx, const char *origin, 110 char *buf, size_t buflen) 111{ --- 536 unchanged lines hidden (view full) --- 648 } 649 650 case ns_t_tsig: { 651 /* BEW - need to complete this */ 652 int n; 653 654 T(len = addname(msg, msglen, &rdata, origin, &buf, &buflen)); 655 T(addstr(" ", 1, &buf, &buflen)); |
659 rdata += 8; /* time */ | 656 rdata += 8; /*%< time */ |
660 n = ns_get16(rdata); rdata += INT16SZ; | 657 n = ns_get16(rdata); rdata += INT16SZ; |
661 rdata += n; /* sig */ 662 n = ns_get16(rdata); rdata += INT16SZ; /* original id */ | 658 rdata += n; /*%< sig */ 659 n = ns_get16(rdata); rdata += INT16SZ; /*%< original id */ |
663 sprintf(buf, "%d", ns_get16(rdata)); 664 rdata += INT16SZ; 665 addlen(strlen(buf), &buf, &buflen); 666 break; 667 } 668 669 case ns_t_a6: { 670 struct in6_addr a; --- 70 unchanged lines hidden (view full) --- 741 rdata += n; 742 } 743 return (buf - obuf); 744 } 745} 746 747/* Private. */ 748 | 660 sprintf(buf, "%d", ns_get16(rdata)); 661 rdata += INT16SZ; 662 addlen(strlen(buf), &buf, &buflen); 663 break; 664 } 665 666 case ns_t_a6: { 667 struct in6_addr a; --- 70 unchanged lines hidden (view full) --- 738 rdata += n; 739 } 740 return (buf - obuf); 741 } 742} 743 744/* Private. */ 745 |
749/* | 746/*% |
750 * size_t 751 * prune_origin(name, origin) 752 * Find out if the name is at or under the current origin. 753 * return: 754 * Number of characters in name before start of origin, 755 * or length of name if origin does not match. 756 * notes: 757 * This function should share code with samedomain(). --- 16 unchanged lines hidden (view full) --- 774 break; 775 } 776 name++; 777 } 778 } 779 return (name - oname); 780} 781 | 747 * size_t 748 * prune_origin(name, origin) 749 * Find out if the name is at or under the current origin. 750 * return: 751 * Number of characters in name before start of origin, 752 * or length of name if origin does not match. 753 * notes: 754 * This function should share code with samedomain(). --- 16 unchanged lines hidden (view full) --- 771 break; 772 } 773 name++; 774 } 775 } 776 return (name - oname); 777} 778 |
782/* | 779/*% |
783 * int 784 * charstr(rdata, edata, buf, buflen) 785 * Format a <character-string> into the presentation buffer. 786 * return: 787 * Number of rdata octets consumed 788 * 0 for protocol format error 789 * -1 for output buffer error 790 * side effects: --- 39 unchanged lines hidden (view full) --- 830 char **buf, size_t *buflen) 831{ 832 size_t newlen, save_buflen = *buflen; 833 char *save_buf = *buf; 834 int n; 835 836 n = dn_expand(msg, msg + msglen, *pp, *buf, *buflen); 837 if (n < 0) | 780 * int 781 * charstr(rdata, edata, buf, buflen) 782 * Format a <character-string> into the presentation buffer. 783 * return: 784 * Number of rdata octets consumed 785 * 0 for protocol format error 786 * -1 for output buffer error 787 * side effects: --- 39 unchanged lines hidden (view full) --- 827 char **buf, size_t *buflen) 828{ 829 size_t newlen, save_buflen = *buflen; 830 char *save_buf = *buf; 831 int n; 832 833 n = dn_expand(msg, msg + msglen, *pp, *buf, *buflen); 834 if (n < 0) |
838 goto enospc; /* Guess. */ | 835 goto enospc; /*%< Guess. */ |
839 newlen = prune_origin(*buf, origin); 840 if (**buf == '\0') { 841 goto root; 842 } else if (newlen == 0U) { 843 /* Use "@" instead of name. */ 844 if (newlen + 2 > *buflen) 845 goto enospc; /* No room for "@\0". */ 846 (*buf)[newlen++] = '@'; --- 55 unchanged lines hidden (view full) --- 902 *buflen = save_buflen; 903 *buf = save_buf; 904 return (-1); 905 } 906 spaced = 0; 907 } 908 return (spaced); 909} | 836 newlen = prune_origin(*buf, origin); 837 if (**buf == '\0') { 838 goto root; 839 } else if (newlen == 0U) { 840 /* Use "@" instead of name. */ 841 if (newlen + 2 > *buflen) 842 goto enospc; /* No room for "@\0". */ 843 (*buf)[newlen++] = '@'; --- 55 unchanged lines hidden (view full) --- 899 *buflen = save_buflen; 900 *buf = save_buf; 901 return (-1); 902 } 903 spaced = 0; 904 } 905 return (spaced); 906} |
907 908/*! \file */ |
|