From owner-svn-src-vendor@FreeBSD.ORG Sun Jul 1 07:53:51 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D43C1065674; Sun, 1 Jul 2012 07:53:51 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0633B8FC0A; Sun, 1 Jul 2012 07:53:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q617rogu074820; Sun, 1 Jul 2012 07:53:50 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q617rono074817; Sun, 1 Jul 2012 07:53:50 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201207010753.q617rono074817@svn.freebsd.org> From: Martin Matuska Date: Sun, 1 Jul 2012 07:53:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237892 - in vendor/illumos/dist/man: . man1m X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jul 2012 07:53:51 -0000 Author: mm Date: Sun Jul 1 07:53:50 2012 New Revision: 237892 URL: http://svn.freebsd.org/changeset/base/237892 Log: Add illumos manual pages to vendor/illumos (original location) illumos-gate revision 13742:b6bbdd77139c Added: vendor/illumos/dist/man/ vendor/illumos/dist/man/man1m/ vendor/illumos/dist/man/man1m/dtrace.1m vendor/illumos/dist/man/man1m/lockstat.1m vendor/illumos/dist/man/man1m/plockstat.1m Added: vendor/illumos/dist/man/man1m/dtrace.1m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/man/man1m/dtrace.1m Sun Jul 1 07:53:50 2012 (r237892) @@ -0,0 +1,768 @@ +'\" te +.\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved. +.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. +.\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the +.\" fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] +.TH DTRACE 1M "Aug 4, 2009" +.SH NAME +dtrace \- DTrace dynamic tracing compiler and tracing utility +.SH SYNOPSIS +.LP +.nf +\fBdtrace\fR [\fB-32\fR | \fB-64\fR] [\fB-aACeFGHhlqSvVwZ\fR] [\fB-b\fR \fIbufsz\fR] [\fB-c\fR \fIcmd\fR] + [\fB-D\fR \fIname\fR [\fI=value\fR]] [\fB-I\fR \fIpath\fR] [\fB-L\fR \fIpath\fR] [\fB-o\fR \fIoutput\fR] + [\fB-s\fR \fIscript\fR] [\fB-U\fR \fIname\fR] [\fB-x\fR \fIarg\fR [\fI=val\fR]] + [\fB-X\fR a | c | s | t] [\fB-p\fR \fIpid\fR] + [\fB-P\fR \fIprovider\fR [[\fIpredicate\fR] \fIaction\fR]] + [\fB-m\fR [\fIprovider:\fR] \fImodule\fR [[\fIpredicate\fR] \fIaction\fR]] + [\fB-f\fR [[\fIprovider:\fR] \fImodule:\fR] \fIfunction\fR [[\fIpredicate\fR] \fIaction\fR]] + [\fB-n\fR [[[\fIprovider:\fR] \fImodule:\fR] \fIfunction:\fR] \fIname\fR [[\fIpredicate\fR] \fIaction\fR]] + [\fB-i\fR \fIprobe-id\fR [[\fIpredicate\fR] \fIaction\fR]] +.fi + +.SH DESCRIPTION +.sp +.LP +DTrace is a comprehensive dynamic tracing framework for the Solaris Operating +System. DTrace provides a powerful infrastructure that permits administrators, +developers, and service personnel to concisely answer arbitrary questions about +the behavior of the operating system and user programs. +.sp +.LP +The \fISolaris Dynamic Tracing Guide\fR describes how to use DTrace to observe, +debug, and tune system behavior. Refer to this book for a detailed description +of DTrace features, including the bundled DTrace observability tools, +instrumentation providers, and the D programming language. +.sp +.LP +The \fBdtrace\fR command provides a generic interface to the essential services +provided by the DTrace facility, including: +.RS +4 +.TP +.ie t \(bu +.el o +Options that list the set of probes and providers currently published by DTrace +.RE +.RS +4 +.TP +.ie t \(bu +.el o +Options that enable probes directly using any of the probe description +specifiers (provider, module, function, name) +.RE +.RS +4 +.TP +.ie t \(bu +.el o +Options that run the D compiler and compile one or more D program files or +programs written directly on the command line +.RE +.RS +4 +.TP +.ie t \(bu +.el o +Options that generate anonymous tracing programs +.RE +.RS +4 +.TP +.ie t \(bu +.el o +Options that generate program stability reports +.RE +.RS +4 +.TP +.ie t \(bu +.el o +Options that modify DTrace tracing and buffering behavior and enable additional +D compiler features +.RE +.sp +.LP +You can use \fBdtrace\fR to create D scripts by using it in a \fB#!\fR +declaration to create an interpreter file. You can also use \fBdtrace\fR to +attempt to compile D programs and determine their properties without actually +enabling tracing using the \fB-e\fR option. See \fBOPTIONS\fR. See the +\fISolaris Dynamic Tracing Guide\fR for detailed examples of how to use the +\fBdtrace\fR utility to perform these tasks. +.SH OPTIONS +.sp +.LP +The arguments accepted by the \fB-P\fR, \fB-m\fR, \fB-f\fR, \fB-n\fR, and +\fB-i\fR options can include an optional D language \fIpredicate\fR enclosed in +slashes \fB//\fR and optional D language \fIaction\fR statement list enclosed +in braces \fB{}\fR. D program code specified on the command line must be +appropriately quoted to avoid interpretation of meta-characters by the shell. +.sp +.LP +The following options are supported: +.sp +.ne 2 +.na +\fB\fB-32\fR | \fB-64\fR\fR +.ad +.sp .6 +.RS 4n +The D compiler produces programs using the native data model of the operating +system kernel. You can use the \fBisainfo\fR \fB-b\fR command to determine the +current operating system data model. If the \fB-32\fR option is specified, +\fBdtrace\fR forces the D compiler to compile a D program using the 32-bit data +model. If the \fB-64\fR option is specified, \fBdtrace\fR forces the D compiler +to compile a D program using the 64-bit data model. These options are typically +not required as \fBdtrace\fR selects the native data model as the default. The +data model affects the sizes of integer types and other language properties. D +programs compiled for either data model can be executed on both 32-bit and +64-bit kernels. The \fB-32\fR and \fB-64\fR options also determine the ELF file +format (ELF32 or ELF64) produced by the \fB-G\fR option. +.RE + +.sp +.ne 2 +.na +\fB\fB-a\fR\fR +.ad +.sp .6 +.RS 4n +Claim anonymous tracing state and display the traced data. You can combine the +\fB-a\fR option with the \fB-e\fR option to force \fBdtrace\fR to exit +immediately after consuming the anonymous tracing state rather than continuing +to wait for new data. See the \fISolaris Dynamic Tracing Guide\fR for more +information about anonymous tracing. +.RE + +.sp +.ne 2 +.na +\fB\fB-A\fR\fR +.ad +.sp .6 +.RS 4n +Generate \fBdriver.conf\fR(4) directives for anonymous tracing. This option +constructs a set of \fBdtrace\fR(7D) configuration file directives to enable +the specified probes for anonymous tracing and then exits. By default, +\fBdtrace\fR attempts to store the directives to the file +\fB/kernel/drv/dtrace.conf\fR. You can modify this behavior if you use the +\fB-o\fR option to specify an alternate output file. +.RE + +.sp +.ne 2 +.na +\fB\fB-b\fR \fIbufsz\fR\fR +.ad +.sp .6 +.RS 4n +Set principal trace buffer size (\fIbufsz\fR). The trace buffer size can +include any of the size suffixes \fBk\fR, \fBm\fR, \fBg\fR, or \fBt\fR. If the +buffer space cannot be allocated, \fBdtrace\fR attempts to reduce the buffer +size or exit depending on the setting of the \fBbufresize\fR property. +.RE + +.sp +.ne 2 +.na +\fB\fB-c\fR \fIcmd\fR\fR +.ad +.sp .6 +.RS 4n +Run the specified command \fIcmd\fR and exit upon its completion. If more than +one \fB-c\fR option is present on the command line, \fBdtrace\fR exits when all +commands have exited, reporting the exit status for each child process as it +terminates. The process-ID of the first command is made available to any D +programs specified on the command line or using the \fB-s\fR option through the +\fB$target\fR macro variable. Refer to the \fISolaris Dynamic Tracing Guide\fR +for more information on macro variables. +.RE + +.sp +.ne 2 +.na +\fB\fB-C\fR\fR +.ad +.sp .6 +.RS 4n +Run the C preprocessor \fBcpp\fR(1) over D programs before compiling them. You +can pass options to the C preprocessor using the \fB-D\fR, \fB-U\fR, \fB-I\fR, +and \fB-H\fR options. You can select the degree of C standard conformance if +you use the \fB-X\fR option. For a description of the set of tokens defined by +the D compiler when invoking the C preprocessor, see \fB-X\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-D\fR \fIname\fR \fB[=\fR\fIvalue\fR\fB]\fR\fR +.ad +.sp .6 +.RS 4n +Define \fIname\fR when invoking \fBcpp\fR(1) (enabled using the \fB-C\fR +option). If you specify the equals sign (\fB=\fR) and additional \fIvalue\fR, +the name is assigned the corresponding value. This option passes the \fB-D\fR +option to each \fBcpp\fR invocation. +.RE + +.sp +.ne 2 +.na +\fB\fB-e\fR\fR +.ad +.sp .6 +.RS 4n +Exit after compiling any requests and consuming anonymous tracing state +(\fB-a\fR option) but prior to enabling any probes. You can combine this option +with the \fB-a\fR option to print anonymous tracing data and exit. You can also +combine this option with D compiler options. This combination verifies that the +programs compile without actually executing them and enabling the corresponding +instrumentation. +.RE + +.sp +.ne 2 +.na +\fB\fB-f\fR\fB[[\fR\fIprovider\fR\fB:]\fR\fImodule\fR\fB:]\fR\fIfunction\fR\fB[ +[\fR\fIpredicate\fR\fB]\fR\fIaction\fR\fB]]\fR\fR +.ad +.sp .6 +.RS 4n +Specify function name to trace or list (\fB-l\fR option). The corresponding +argument can include any of the probe description forms +\fIprovider:module:function\fR, \fImodule:function\fR, or \fIfunction\fR. +Unspecified probe description fields are left blank and match any probes +regardless of the values in those fields. If no qualifiers other than +\fIfunction\fR are specified in the description, all probes with the +corresponding \fIfunction\fR are matched. The \fB-f\fR argument can be suffixed +with an optional D probe clause. You can specify more than one \fB-f\fR option +on the command line at a time. +.RE + +.sp +.ne 2 +.na +\fB\fB-F\fR\fR +.ad +.sp .6 +.RS 4n +Coalesce trace output by identifying function entry and return. Function entry +probe reports are indented and their output is prefixed with \fB->\fR. Function +return probe reports are unindented and their output is prefixed with +\fB<-\fR\&. System call entry probe reports are indented and their output is +prefixed with \fB=>\fR. System call return probe reports are unindented and +their output is prefixed with \fB<=\fR\&. +.RE + +.sp +.ne 2 +.na +\fB\fB-G\fR\fR +.ad +.sp .6 +.RS 4n +Generate an ELF file containing an embedded DTrace program. The DTrace probes +specified in the program are saved inside of a relocatable ELF object which can +be linked into another program. If the \fB-o\fR option is present, the ELF file +is saved using the pathname specified as the argument for this operand. If the +\fB-o\fR option is not present and the DTrace program is contained with a file +whose name is \fB\fIfilename\fR.d\fR, then the ELF file is saved using the name +\fB\fIfilename\fR.o\fR. Otherwise the ELF file is saved using the name +\fBd.out\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-H\fR\fR +.ad +.sp .6 +.RS 4n +Print the pathnames of included files when invoking \fBcpp\fR(1) (enabled using +the \fB-C\fR option). This option passes the \fB-H\fR option to each \fBcpp\fR +invocation, causing it to display the list of pathnames, one for each line, to +\fBstderr\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-h\fR\fR +.ad +.sp .6 +.RS 4n +Generate a header file containing macros that correspond to probes in the +specified provider definitions. This option should be used to generate a header +file that is included by other source files for later use with the \fB-G\fR +option. If the \fB-o\fR option is present, the header file is saved using the +pathname specified as the argument for that option. If the \fB-o\fR option is +not present and the DTrace program is contained with a file whose name is +\fIfilename\fR\fB\&.d\fR, then the header file is saved using the name +\fIfilename\fR\fB\&.h\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-i\fR \fIprobe-id\fR\fB[[\fR\fIpredicate\fR] \fIaction\fR\fB]\fR\fR +.ad +.sp .6 +.RS 4n +Specify probe identifier (\fIprobe-id\fR) to trace or list (\fB-l\fR option). +You can specify probe IDs using decimal integers as shown by \fBdtrace\fR +\fB-l\fR. The \fB-i\fR argument can be suffixed with an optional D probe +clause. You can specify more than one \fB-i\fR option at a time. +.RE + +.sp +.ne 2 +.na +\fB\fB-I\fR \fIpath\fR\fR +.ad +.sp .6 +.RS 4n +Add the specified directory \fIpath\fR to the search path for \fB#include\fR +files when invoking \fBcpp\fR(1) (enabled using the \fB-C\fR option). This +option passes the \fB-I\fR option to each \fBcpp\fR invocation. The specified +\fIpath\fR is inserted into the search path ahead of the default directory +list. +.RE + +.sp +.ne 2 +.na +\fB\fB-L\fR \fIpath\fR\fR +.ad +.sp .6 +.RS 4n +Add the specified directory \fIpath\fR to the search path for DTrace libraries. +DTrace libraries are used to contain common definitions that can be used when +writing D programs. The specified \fIpath\fR is added after the default library +search path. +.RE + +.sp +.ne 2 +.na +\fB\fB-l\fR\fR +.ad +.sp .6 +.RS 4n +List probes instead of enabling them. If the \fB-l\fR option is specified, +\fBdtrace\fR produces a report of the probes matching the descriptions given +using the \fB-P\fR, \fB-m\fR, \fB-f\fR, \fB-n\fR, \fB-i\fR, and \fB-s\fR +options. If none of these options are specified, this option lists all probes. +.RE + +.sp +.ne 2 +.na +\fB\fB-m\fR [[\fIprovider:\fR] \fImodule:\fR [[\fIpredicate\fR] +\fIaction\fR]]\fR +.ad +.sp .6 +.RS 4n +Specify module name to trace or list (\fB-l\fR option). The corresponding +argument can include any of the probe description forms \fIprovider:module\fR +or \fImodule\fR. Unspecified probe description fields are left blank and match +any probes regardless of the values in those fields. If no qualifiers other +than \fImodule\fR are specified in the description, all probes with a +corresponding \fImodule\fR are matched. The \fB-m\fR argument can be suffixed +with an optional D probe clause. More than one \fB-m\fR option can be specified +on the command line at a time. +.RE + +.sp +.ne 2 +.na +\fB\fB-n\fR [[[\fIprovider:\fR] \fImodule:\fR] \fIfunction:\fR] \fIname\fR +[[\fIpredicate\fR] \fIaction\fR]\fR +.ad +.sp .6 +.RS 4n +Specify probe name to trace or list (\fB-l\fR option). The corresponding +argument can include any of the probe description forms +\fIprovider:module:function:name\fR, \fImodule:function:name\fR, +\fIfunction:name\fR, or \fIname\fR. Unspecified probe description fields are +left blank and match any probes regardless of the values in those fields. If no +qualifiers other than \fIname\fR are specified in the description, all probes +with a corresponding \fIname\fR are matched. The \fB-n\fR argument can be +suffixed with an optional D probe clause. More than one \fB-n\fR option can be +specified on the command line at a time. +.RE + +.sp +.ne 2 +.na +\fB\fB-o\fR \fIoutput\fR\fR +.ad +.sp .6 +.RS 4n +Specify the \fIoutput\fR file for the \fB-A\fR , \fB-G\fR, \fB-h\fR, and +\fB-l\fR options, or for the traced data itself. If the \fB-A\fR option is +present and \fB-o\fR is not present, the default output file is +\fB/kernel/drv/dtrace.conf\fR. If the \fB-G\fR option is present and the +\fB-s\fR option's argument is of the form \fB\fIfilename\fR.d\fR and \fB-o\fR +is not present, the default output file is \fB\fIfilename\fR.o\fR. Otherwise +the default output file is \fBd.out\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-p\fR \fIpid\fR\fR +.ad +.sp .6 +.RS 4n +Grab the specified process-ID \fIpid\fR, cache its symbol tables, and exit upon +its completion. If more than one \fB-p\fR option is present on the command +line, \fBdtrace\fR exits when all commands have exited, reporting the exit +status for each process as it terminates. The first process-ID is made +available to any D programs specified on the command line or using the \fB-s\fR +option through the \fB$target\fR macro variable. Refer to the \fISolaris +Dynamic Tracing Guide\fR for more information on macro variables. +.RE + +.sp +.ne 2 +.na +\fB\fB-P\fR \fIprovider\fR \fB[[\fR\fIpredicate\fR\fB]\fR \fIaction\fR]\fR +.ad +.sp .6 +.RS 4n +Specify provider name to trace or list (\fB-l\fR option). The remaining probe +description fields module, function, and name are left blank and match any +probes regardless of the values in those fields. The \fB-P\fR argument can be +suffixed with an optional D probe clause. You can specify more than one +\fB-P\fR option on the command line at a time. +.RE + +.sp +.ne 2 +.na +\fB\fB-q\fR\fR +.ad +.sp .6 +.RS 4n +Set quiet mode. \fBdtrace\fR suppresses messages such as the number of probes +matched by the specified options and D programs and does not print column +headers, the CPU ID, the probe ID, or insert newlines into the output. Only +data traced and formatted by D program statements such as \fBtrace()\fR and +\fBprintf()\fR is displayed to \fBstdout\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-s\fR\fR +.ad +.sp .6 +.RS 4n +Compile the specified D program source file. If the \fB-e\fR option is present, +the program is compiled but instrumentation is not enabled. If the \fB-l\fR +option is present, the program is compiled and the set of probes matched by it +is listed, but instrumentation is not enabled. If none of \fB-e\fR, \fB-l\fR, +\fB-G\fR, or \fB-A\fR are present, the instrumentation specified by the D +program is enabled and tracing begins. +.RE + +.sp +.ne 2 +.na +\fB\fB-S\fR\fR +.ad +.sp .6 +.RS 4n +Show D compiler intermediate code. The D compiler produces a report of the +intermediate code generated for each D program to \fBstderr\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-U\fR \fIname\fR\fR +.ad +.sp .6 +.RS 4n +Undefine the specified \fIname\fR when invoking \fBcpp\fR(1) (enabled using the +\fB-C\fR option). This option passes the \fB-U\fR option to each \fBcpp\fR +invocation. +.RE + +.sp +.ne 2 +.na +\fB\fB-v\fR\fR +.ad +.sp .6 +.RS 4n +Set verbose mode. If the \fB-v\fR option is specified, \fBdtrace\fR produces a +program stability report showing the minimum interface stability and dependency +level for the specified D programs. DTrace stability levels are explained in +further detail in the \fISolaris Dynamic Tracing Guide\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-V\fR\fR +.ad +.sp .6 +.RS 4n +Report the highest D programming interface version supported by \fBdtrace\fR. +The version information is printed to \fBstdout\fR and the \fBdtrace\fR command +exits. Refer to the \fISolaris Dynamic Tracing Guide\fR for more information +about DTrace versioning features. +.RE + +.sp +.ne 2 +.na +\fB\fB-w\fR\fR +.ad +.sp .6 +.RS 4n +Permit destructive actions in D programs specified using the \fB-s\fR, +\fB-P\fR, \fB-m\fR, \fB-f\fR, \fB-n\fR, or \fB-i\fR options. If the \fB-w\fR +option is not specified, \fBdtrace\fR does not permit the compilation or +enabling of a D program that contains destructive actions. +.RE + +.sp +.ne 2 +.na +\fB\fB-x\fR \fIarg\fR [\fI=val\fR]\fR +.ad +.sp .6 +.RS 4n +Enable or modify a DTrace runtime option or D compiler option. The list of +options is found in the \fISolaris Dynamic Tracing Guide\fR. Boolean options +are enabled by specifying their name. Options with values are set by separating +the option name and value with an equals sign (\fB=\fR). +.RE + +.sp +.ne 2 +.na +\fB\fB-X\fR \fBa | c | s | t\fR\fR +.ad +.sp .6 +.RS 4n +Specify the degree of conformance to the ISO C standard that should be selected +when invoking \fBcpp\fR(1) (enabled using the \fB-C\fR option). The \fB-X\fR +option argument affects the value and presence of the \fB__STDC__\fR macro +depending upon the value of the argument letter. +.sp +The \fB-X\fR option supports the following arguments: +.sp +.ne 2 +.na +\fB\fBa\fR\fR +.ad +.RS 5n +Default. ISO C plus K&R compatibility extensions, with semantic changes +required by ISO C. This is the default mode if \fB-X\fR is not specified. The +predefined macro \fB__STDC__\fR has a value of 0 when \fBcpp\fR is invoked in +conjunction with the \fB-Xa\fR option. +.RE + +.sp +.ne 2 +.na +\fB\fBc\fR\fR +.ad +.RS 5n +Conformance. Strictly conformant ISO C, without K&R C compatibility extensions. +The predefined macro \fB__STDC__\fR has a value of 1 when \fBcpp\fR is invoked +in conjunction with the \fB-Xc\fR option. +.RE + +.sp +.ne 2 +.na +\fB\fBs\fR\fR +.ad +.RS 5n +K&R C only. The macro \fB__STDC__\fR is not defined when \fBcpp\fR is invoked +in conjunction with the \fB-Xs\fR option. +.RE + +.sp +.ne 2 +.na +\fB\fBt\fR\fR +.ad +.RS 5n +Transition. ISO C plus K&R C compatibility extensions, without semantic changes +required by ISO C. The predefined macro \fB__STDC__\fR has a value of 0 when +\fBcpp\fR is invoked in conjunction with the \fB-Xt\fR option. +.RE + +As the \fB-X\fR option only affects how the D compiler invokes the C +preprocessor, the \fB-Xa\fR and \fB-Xt\fR options are equivalent from the +perspective of D and both are provided only to ease re-use of settings from a C +build environment. +.sp +Regardless of the \fB-X\fR mode, the following additional C preprocessor +definitions are always specified and valid in all modes: +.RS +4 +.TP +.ie t \(bu +.el o +\fB__sun\fR +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__unix\fR +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__SVR4\fR +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__sparc\fR (on SPARC systems only) +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__sparcv9\fR (on SPARC systems only when 64-bit programs are compiled) +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__i386\fR (on x86 systems only when 32-bit programs are compiled) +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__amd64\fR (on x86 systems only when 64-bit programs are compiled) +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__\fI`uname -s`\fR_\fI`uname -r`\fR\fR (for example, \fB__SunOS_5_10\fR) +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__SUNW_D=1\fR +.RE +.RS +4 +.TP +.ie t \(bu +.el o +\fB__SUNW_D_VERSION=0x\fIMMmmmuuu\fR\fR +.sp +Where \fIMM\fR is the major release value in hexadecimal, \fImmm\fR is the +minor release value in hexadecimal, and \fIuuu\fR is the micro release value in +hexadecimal. Refer to the \fISolaris Dynamic Tracing Guide\fR for more +information about DTrace versioning. +.RE +.RE + +.sp +.ne 2 +.na +\fB\fB-Z\fR\fR +.ad +.sp .6 +.RS 4n +Permit probe descriptions that match zero probes. If the \fB-Z\fR option is not +specified, \fBdtrace\fR reports an error and exits if any probe descriptions +specified in D program files (\fB-s\fR option) or on the command line +(\fB-P\fR, \fB-m\fR, \fB-f\fR, \fB-n\fR, or \fB-i\fR options) contain +descriptions that do not match any known probes. +.RE + +.SH OPERANDS +.sp +.LP +You can specify zero or more additional arguments on the \fBdtrace\fR command +line to define a set of macro variables (\fB$1\fR, \fB$2\fR, and so forth). The +additional arguments can be used in D programs specified using the \fB-s\fR +option or on the command line. The use of macro variables is described further +in the \fISolaris Dynamic Tracing Guide\fR. +.SH EXIT STATUS +.sp +.LP +The following exit values are returned: +.sp +.ne 2 +.na +\fB0\fR +.ad +.RS 5n +Successful completion. +.sp +For D program requests, an exit status of \fB0\fR indicates that programs were +successfully compiled, probes were successfully enabled, or anonymous state was +successfully retrieved. \fBdtrace\fR returns \fB0\fR even if the specified +tracing requests encountered errors or drops. +.RE + +.sp +.ne 2 +.na +\fB\fB1\fR\fR +.ad +.RS 5n +An error occurred. +.sp +For D program requests, an exit status of \fB1\fR indicates that program +compilation failed or that the specified request could not be satisfied. +.RE + +.sp +.ne 2 +.na +\fB\fB2\fR\fR +.ad +.RS 5n +Invalid command line options or arguments were specified. +.RE + +.SH ATTRIBUTES +.sp +.LP +See \fBattributes\fR(5) for descriptions of the following attributes: +.sp + +.sp +.TS +box; +c | c +l | l . +ATTRIBUTE TYPE ATTRIBUTE VALUE +_ +Interface Stability See below. +.TE + +.sp +.LP +The command-line syntax is Committed. The human-readable output is Uncommitted. +.SH SEE ALSO +.sp +.LP +\fBcpp\fR(1), \fBisainfo\fR(1), \fBssh\fR(1), \fBlibdtrace\fR(3LIB), +\fBdriver.conf\fR(4), \fBattributes\fR(5), \fBdtrace\fR(7D) +.sp +.LP +\fISolaris Dynamic Tracing Guide\fR +.SH USAGE +.sp +.LP +When using the \fB-p\fR flag, \fBdtrace\fR stops the target processes while it +is inspecting them and reporting results. A process can do nothing while it is +stopped. This means that, if , for example, the X server is inspected by +\fBdtrace\fR running in a window under the X server's control, the whole window +system can become deadlocked, because the \fBproc\fR tool would be attempting +to display its results to a window that cannot be refreshed. In such a case, +logging in from another system using \fBssh\fR(1) and killing the offending +\fBproc\fR tool clears the deadlock. Added: vendor/illumos/dist/man/man1m/lockstat.1m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/man/man1m/lockstat.1m Sun Jul 1 07:53:50 2012 (r237892) @@ -0,0 +1,873 @@ +'\" te +.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved. +.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. +.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. +.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] +.TH LOCKSTAT 1M "Feb 28, 2008" +.SH NAME +lockstat \- report kernel lock and profiling statistics +.SH SYNOPSIS +.LP +.nf +\fBlockstat\fR [\fB-ACEHI\fR] [\fB-e\fR \fIevent_list\fR] [\fB-i\fR \fIrate\fR] + [\fB-b\fR | \fB-t\fR | \fB-h\fR | \fB-s\fR \fIdepth\fR] [\fB-n\fR \fInrecords\fR] + [\fB-l\fR \fIlock\fR [, \fIsize\fR]] [\fB-d\fR \fIduration\fR] + [\fB-f\fR \fIfunction\fR [, \fIsize\fR]] [\fB-T\fR] [\fB-ckgwWRpP\fR] [\fB-D\fR \fIcount\fR] + [\fB-o\fR \fIfilename\fR] [\fB-x\fR \fIopt\fR [=val]] \fIcommand\fR [\fIargs\fR] +.fi + +.SH DESCRIPTION +.sp +.LP +The \fBlockstat\fR utility gathers and displays kernel locking and profiling +statistics. \fBlockstat\fR allows you to specify which events to watch (for +example, spin on adaptive mutex, block on read access to rwlock due to waiting +writers, and so forth) how much data to gather for each event, and how to +display the data. By default, \fBlockstat\fR monitors all lock contention +events, gathers frequency and timing data about those events, and displays the +data in decreasing frequency order, so that the most common events appear +first. +.sp +.LP +\fBlockstat\fR gathers data until the specified command completes. For example, +to gather statistics for a fixed-time interval, use \fBsleep\fR(1) as the +command, as follows: +.sp +.LP +\fBexample#\fR \fBlockstat\fR \fBsleep\fR \fB5\fR +.sp +.LP +When the \fB-I\fR option is specified, \fBlockstat\fR establishes a +per-processor high-level periodic interrupt source to gather profiling data. +The interrupt handler simply generates a \fBlockstat\fR event whose caller is +the interrupted PC (program counter). The profiling event is just like any +other \fBlockstat\fR event, so all of the normal \fBlockstat\fR options are +applicable. +.sp +.LP +\fBlockstat\fR relies on DTrace to modify the running kernel's text to +intercept events of interest. This imposes a small but measurable overhead on +all system activity, so access to \fBlockstat\fR is restricted to super-user by +default. The system administrator can permit other users to use \fBlockstat\fR +by granting them additional DTrace privileges. Refer to the \fISolaris Dynamic +Tracing Guide\fR for more information about DTrace security features. +.SH OPTIONS +.sp +.LP +The following options are supported: +.SS "Event Selection" +.sp +.LP +If no event selection options are specified, the default is \fB-C\fR. +.sp +.ne 2 +.na +\fB\fB-A\fR\fR +.ad +.sp .6 +.RS 4n +Watch all lock events. \fB-A\fR is equivalent to \fB-CH\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB-C\fR\fR +.ad +.sp .6 +.RS 4n +Watch contention events. +.RE + +.sp +.ne 2 +.na +\fB\fB-E\fR\fR +.ad +.sp .6 +.RS 4n +Watch error events. +.RE + +.sp +.ne 2 +.na +\fB\fB\fR\fB-e\fR \fIevent_list\fR\fR +.ad +.sp .6 +.RS 4n +Only watch the specified events. \fIevent\fR \fIlist\fR is a comma-separated +list of events or ranges of events such as 1,4-7,35. Run \fBlockstat\fR with no +arguments to get a brief description of all events. +.RE + +.sp +.ne 2 +.na +\fB\fB-H\fR\fR +.ad +.sp .6 +.RS 4n +Watch hold events. +.RE + +.sp +.ne 2 +.na +\fB\fB-I\fR\fR +.ad +.sp .6 +.RS 4n +Watch profiling interrupt events. +.RE + +.sp +.ne 2 +.na +\fB\fB\fR\fB-i\fR \fIrate\fR\fR +.ad +.sp .6 +.RS 4n +Interrupt rate (per second) for \fB-I\fR. The default is 97 Hz, so that +profiling doesn't run in lockstep with the clock interrupt (which runs at 100 +Hz). +.RE + +.SS "Data Gathering" +.sp +.ne 2 +.na +\fB\fB-x\fR \fIarg\fR[=\fIval\fR]\fR +.ad +.sp .6 +.RS 4n +Enable or modify a DTrace runtime option or D compiler option. The list of +options is found in the \fI\fR. Boolean options are enabled by specifying their +name. Options with values are set by separating the option name and value with +an equals sign (=). +.RE + +.SS "Data Gathering (Mutually Exclusive)" +.sp +.ne 2 +.na +\fB\fB-b\fR\fR +.ad +.sp .6 +.RS 4n +Basic statistics: lock, caller, number of events. +.RE + +.sp +.ne 2 +.na +\fB\fB-h\fR\fR +.ad +.sp .6 +.RS 4n +Histogram: Timing plus time-distribution histograms. +.RE + +.sp +.ne 2 +.na +\fB\fB\fR\fB-s\fR \fIdepth\fR\fR +.ad +.sp .6 +.RS 4n +Stack trace: Histogram plus stack traces up to \fIdepth\fR frames deep. +.RE + +.sp +.ne 2 +.na +\fB\fB-t\fR\fR +.ad +.sp .6 +.RS 4n +Timing: Basic plus timing for all events [default]. +.RE + +.SS "Data Filtering" +.sp +.ne 2 +.na +\fB\fB\fR\fB-d\fR \fIduration\fR\fR +.ad +.sp .6 +.RS 4n +Only watch events longer than \fIduration\fR. +.RE + +.sp +.ne 2 +.na +\fB\fB\fR\fB-f\fR \fIfunc[,size]\fR\fR +.ad +.sp .6 +.RS 4n +Only watch events generated by \fIfunc\fR, which can be specified as a symbolic +name or hex address. \fIsize\fR defaults to the \fBELF\fR symbol size if +available, or \fB1\fR if not. +.RE + +.sp +.ne 2 +.na +\fB\fB\fR\fB-l\fR \fIlock[,size]\fR\fR +.ad +.sp .6 +.RS 4n +Only watch \fIlock\fR, which can be specified as a symbolic name or hex +address. \fBsize\fR defaults to the \fBELF\fR symbol size or \fB1\fR if the +symbol size is not available. +.RE + +.sp *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@FreeBSD.ORG Sun Jul 1 07:57:18 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EB8D2106566B; Sun, 1 Jul 2012 07:57:18 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D255B8FC12; Sun, 1 Jul 2012 07:57:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q617vINJ075125; Sun, 1 Jul 2012 07:57:18 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q617vIxa075119; Sun, 1 Jul 2012 07:57:18 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201207010757.q617vIxa075119@svn.freebsd.org> From: Martin Matuska Date: Sun, 1 Jul 2012 07:57:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237895 - in vendor/illumos/dist: cmd/pyzfs cmd/stat cmd/stat/common cmd/zdb cmd/zfs cmd/zhack cmd/zinject cmd/zlook cmd/zpool cmd/zstreamdump cmd/ztest head lib/libnvpair lib/libuutil ... X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jul 2012 07:57:19 -0000 Author: mm Date: Sun Jul 1 07:57:18 2012 New Revision: 237895 URL: http://svn.freebsd.org/changeset/base/237895 Log: Add userland ZFS to vendor/illumos illumos-gate revision 13742:b6bbdd77139c Added: vendor/illumos/dist/cmd/pyzfs/ vendor/illumos/dist/cmd/pyzfs/pyzfs.py vendor/illumos/dist/cmd/stat/ vendor/illumos/dist/cmd/stat/common/ vendor/illumos/dist/cmd/stat/common/statcommon.h vendor/illumos/dist/cmd/stat/common/timestamp.c vendor/illumos/dist/cmd/zdb/ vendor/illumos/dist/cmd/zdb/zdb.c vendor/illumos/dist/cmd/zdb/zdb_il.c vendor/illumos/dist/cmd/zfs/ vendor/illumos/dist/cmd/zfs/zfs_iter.c vendor/illumos/dist/cmd/zfs/zfs_iter.h vendor/illumos/dist/cmd/zfs/zfs_main.c vendor/illumos/dist/cmd/zfs/zfs_util.h vendor/illumos/dist/cmd/zhack/ vendor/illumos/dist/cmd/zhack/zhack.c vendor/illumos/dist/cmd/zinject/ vendor/illumos/dist/cmd/zinject/translate.c vendor/illumos/dist/cmd/zinject/zinject.c vendor/illumos/dist/cmd/zinject/zinject.h vendor/illumos/dist/cmd/zlook/ vendor/illumos/dist/cmd/zlook/zlook.c vendor/illumos/dist/cmd/zpool/ vendor/illumos/dist/cmd/zpool/zpool_iter.c vendor/illumos/dist/cmd/zpool/zpool_main.c vendor/illumos/dist/cmd/zpool/zpool_util.c vendor/illumos/dist/cmd/zpool/zpool_util.h vendor/illumos/dist/cmd/zpool/zpool_vdev.c vendor/illumos/dist/cmd/zstreamdump/ vendor/illumos/dist/cmd/zstreamdump/zstreamdump.c vendor/illumos/dist/cmd/ztest/ vendor/illumos/dist/cmd/ztest/ztest.c vendor/illumos/dist/head/atomic.h vendor/illumos/dist/head/libintl.h vendor/illumos/dist/head/stdio_ext.h vendor/illumos/dist/head/synch.h vendor/illumos/dist/head/thread.h vendor/illumos/dist/lib/libnvpair/ vendor/illumos/dist/lib/libnvpair/libnvpair.c vendor/illumos/dist/lib/libnvpair/libnvpair.h vendor/illumos/dist/lib/libnvpair/nvpair_alloc_system.c vendor/illumos/dist/lib/libuutil/ vendor/illumos/dist/lib/libuutil/common/ vendor/illumos/dist/lib/libuutil/common/libuutil.h vendor/illumos/dist/lib/libuutil/common/libuutil_common.h vendor/illumos/dist/lib/libuutil/common/libuutil_impl.h vendor/illumos/dist/lib/libuutil/common/uu_alloc.c vendor/illumos/dist/lib/libuutil/common/uu_avl.c vendor/illumos/dist/lib/libuutil/common/uu_dprintf.c vendor/illumos/dist/lib/libuutil/common/uu_ident.c vendor/illumos/dist/lib/libuutil/common/uu_list.c vendor/illumos/dist/lib/libuutil/common/uu_misc.c vendor/illumos/dist/lib/libuutil/common/uu_open.c vendor/illumos/dist/lib/libuutil/common/uu_pname.c vendor/illumos/dist/lib/libuutil/common/uu_string.c vendor/illumos/dist/lib/libuutil/common/uu_strtoint.c vendor/illumos/dist/lib/libzfs/ vendor/illumos/dist/lib/libzfs/common/ vendor/illumos/dist/lib/libzfs/common/libzfs.h vendor/illumos/dist/lib/libzfs/common/libzfs_changelist.c vendor/illumos/dist/lib/libzfs/common/libzfs_config.c vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c vendor/illumos/dist/lib/libzfs/common/libzfs_diff.c vendor/illumos/dist/lib/libzfs/common/libzfs_fru.c vendor/illumos/dist/lib/libzfs/common/libzfs_impl.h vendor/illumos/dist/lib/libzfs/common/libzfs_import.c vendor/illumos/dist/lib/libzfs/common/libzfs_iter.c vendor/illumos/dist/lib/libzfs/common/libzfs_mount.c vendor/illumos/dist/lib/libzfs/common/libzfs_pool.c vendor/illumos/dist/lib/libzfs/common/libzfs_sendrecv.c vendor/illumos/dist/lib/libzfs/common/libzfs_status.c vendor/illumos/dist/lib/libzfs/common/libzfs_util.c vendor/illumos/dist/lib/libzpool/ vendor/illumos/dist/lib/libzpool/common/ vendor/illumos/dist/lib/libzpool/common/kernel.c vendor/illumos/dist/lib/libzpool/common/sys/ vendor/illumos/dist/lib/libzpool/common/sys/zfs_context.h vendor/illumos/dist/lib/libzpool/common/taskq.c vendor/illumos/dist/lib/libzpool/common/util.c vendor/illumos/dist/lib/pyzfs/ vendor/illumos/dist/lib/pyzfs/common/ vendor/illumos/dist/lib/pyzfs/common/__init__.py vendor/illumos/dist/lib/pyzfs/common/allow.py vendor/illumos/dist/lib/pyzfs/common/dataset.py vendor/illumos/dist/lib/pyzfs/common/groupspace.py vendor/illumos/dist/lib/pyzfs/common/holds.py vendor/illumos/dist/lib/pyzfs/common/ioctl.c vendor/illumos/dist/lib/pyzfs/common/table.py vendor/illumos/dist/lib/pyzfs/common/unallow.py vendor/illumos/dist/lib/pyzfs/common/userspace.py vendor/illumos/dist/lib/pyzfs/common/util.py Added: vendor/illumos/dist/cmd/pyzfs/pyzfs.py ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/pyzfs/pyzfs.py Sun Jul 1 07:57:18 2012 (r237895) @@ -0,0 +1,82 @@ +#! /usr/bin/python2.6 -S +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. +# + +# Note, we want SIGINT (control-c) to exit the process quietly, to mimic +# the standard behavior of C programs. The best we can do with pure +# Python is to run with -S (to disable "import site"), and start our +# program with a "try" statement. Hopefully nobody hits ^C before our +# try statement is executed. + +try: + import site + import gettext + import zfs.util + import zfs.ioctl + import sys + import errno + import solaris.misc + + """This is the main script for doing zfs subcommands. It doesn't know + what subcommands there are, it just looks for a module zfs. + that implements that subcommand.""" + + try: + _ = gettext.translation("SUNW_OST_OSCMD", "/usr/lib/locale", + fallback=True).gettext + except: + _ = solaris.misc.gettext + + if len(sys.argv) < 2: + sys.exit(_("missing subcommand argument")) + + zfs.ioctl.set_cmdstr(" ".join(["zfs"] + sys.argv[1:])) + + try: + # import zfs. + # subfunc = zfs..do_ + + subcmd = sys.argv[1] + __import__("zfs." + subcmd) + submod = getattr(zfs, subcmd) + subfunc = getattr(submod, "do_" + subcmd) + except (ImportError, AttributeError): + sys.exit(_("invalid subcommand")) + + try: + subfunc() + except zfs.util.ZFSError, e: + print(e) + sys.exit(1) + +except IOError, e: + import errno + import sys + + if e.errno == errno.EPIPE: + sys.exit(1) + raise +except KeyboardInterrupt: + import sys + + sys.exit(1) Added: vendor/illumos/dist/cmd/stat/common/statcommon.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/stat/common/statcommon.h Sun Jul 1 07:57:18 2012 (r237895) @@ -0,0 +1,328 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. + * + * Common routines for acquiring snapshots of kstats for + * iostat, mpstat, and vmstat. + */ + +#ifndef _STATCOMMON_H +#define _STATCOMMON_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* No CPU present at this CPU position */ +#define ID_NO_CPU -1 +/* CPU belongs to no pset (we number this as "pset 0") */ +#define ID_NO_PSET 0 +/* CPU is usable */ +#define CPU_ONLINE(s) ((s) == P_ONLINE || (s) == P_NOINTR) +/* will the CPU have kstats */ +#define CPU_ACTIVE(c) (CPU_ONLINE((c)->cs_state) && (c)->cs_id != ID_NO_CPU) +/* IO device has no identified ID */ +#define IODEV_NO_ID -1 +/* no limit to iodevs to collect */ +#define UNLIMITED_IODEVS ((size_t)-1) + +#define NODATE 0 /* Default: No time stamp */ +#define DDATE 1 /* Standard date format */ +#define UDATE 2 /* Internal representation of Unix time */ + + +enum snapshot_types { + /* All CPUs separately */ + SNAP_CPUS = 1 << 0, + /* Aggregated processor sets */ + SNAP_PSETS = 1 << 1, + /* sys-wide stats including aggregated CPU stats */ + SNAP_SYSTEM = 1 << 2, + /* interrupt sources and counts */ + SNAP_INTERRUPTS = 1 << 3, + /* disk etc. stats */ + SNAP_IODEVS = 1 << 4, + /* disk controller aggregates */ + SNAP_CONTROLLERS = 1 << 5, + /* mpxio L I (multipath) paths: -X: Lun,LunInitiator */ + SNAP_IOPATHS_LI = 1 << 6, + /* mpxio LTI (multipath) paths: -Y: Lun,LunTarget,LunTargetInitiator */ + SNAP_IOPATHS_LTI = 1 << 7, + /* disk error stats */ + SNAP_IODEV_ERRORS = 1 << 8, + /* pretty names for iodevs */ + SNAP_IODEV_PRETTY = 1 << 9, + /* devid for iodevs */ + SNAP_IODEV_DEVID = 1 << 10 +}; + +struct cpu_snapshot { + /* may be ID_NO_CPU if no CPU present */ + processorid_t cs_id; + /* may be ID_NO_PSET if no pset */ + psetid_t cs_pset_id; + /* as in p_online(2) */ + int cs_state; + /* stats for this CPU */ + kstat_t cs_vm; + kstat_t cs_sys; +}; + +struct pset_snapshot { + /* ID may be zero to indicate the "none set" */ + psetid_t ps_id; + /* number of CPUs in set */ + size_t ps_nr_cpus; + /* the CPUs in this set */ + struct cpu_snapshot **ps_cpus; +}; + +struct intr_snapshot { + /* name of interrupt source */ + char is_name[KSTAT_STRLEN]; + /* total number of interrupts from this source */ + ulong_t is_total; +}; + +struct sys_snapshot { + sysinfo_t ss_sysinfo; + vminfo_t ss_vminfo; + struct nc_stats ss_nc; + /* vm/sys stats aggregated across all CPUs */ + kstat_t ss_agg_vm; + kstat_t ss_agg_sys; + /* ticks since boot */ + ulong_t ss_ticks; + long ss_deficit; +}; + +/* order is significant (see sort_before()) */ +enum iodev_type { + IODEV_CONTROLLER = 1 << 0, + IODEV_DISK = 1 << 1, + IODEV_PARTITION = 1 << 2, + IODEV_TAPE = 1 << 3, + IODEV_NFS = 1 << 4, + IODEV_IOPATH_LT = 1 << 5, /* synthetic LunTarget */ + IODEV_IOPATH_LI = 1 << 6, /* synthetic LunInitiator */ + IODEV_IOPATH_LTI = 1 << 7, /* LunTgtInitiator (pathinfo) */ + IODEV_UNKNOWN = 1 << 8 +}; + +/* identify a disk, partition, etc. */ +struct iodev_id { + int id; + /* target id (for disks) */ + char tid[KSTAT_STRLEN]; +}; + +/* + * Used for disks, partitions, tapes, nfs, controllers, iopaths + * Each entry can be a branch of a tree; for example, the disks + * of a controller constitute the children of the controller + * iodev_snapshot. This relationship is not strictly maintained + * if is_pretty can't be found. + */ +struct iodev_snapshot { + /* original kstat name */ + char is_name[KSTAT_STRLEN]; + /* type of kstat */ + enum iodev_type is_type; + /* ID if meaningful */ + struct iodev_id is_id; + /* parent ID if meaningful */ + struct iodev_id is_parent_id; + /* user-friendly name if found */ + char *is_pretty; + /* device ID if applicable */ + char *is_devid; + /* mount-point if applicable */ + char *is_dname; + /* number of direct children */ + int is_nr_children; + /* children of this I/O device */ + struct iodev_snapshot *is_children; + /* standard I/O stats */ + kstat_io_t is_stats; + /* iodev error stats */ + kstat_t is_errors; + /* creation time of the stats */ + hrtime_t is_crtime; + /* time at which iodev snapshot was taken */ + hrtime_t is_snaptime; + /* kstat module */ + char is_module[KSTAT_STRLEN]; + /* kstat instance */ + int is_instance; + /* kstat (only used temporarily) */ + kstat_t *is_ksp; + struct iodev_snapshot *is_prev; + struct iodev_snapshot *is_next; + /* AVL structures to speedup insertion */ + avl_tree_t *avl_list; /* list this element belongs to */ + avl_node_t avl_link; +}; + +/* which iodevs to show. */ +struct iodev_filter { + /* nr. of iodevs to choose */ + size_t if_max_iodevs; + /* bit mask of enum io_types to allow */ + int if_allowed_types; + /* should we show floppy ? if_names can override this */ + int if_skip_floppy; + /* nr. of named iodevs */ + size_t if_nr_names; + char **if_names; +}; + +/* The primary structure of a system snapshot. */ +struct snapshot { + /* what types were *requested* */ + enum snapshot_types s_types; + size_t s_nr_cpus; + struct cpu_snapshot *s_cpus; + size_t s_nr_psets; + struct pset_snapshot *s_psets; + size_t s_nr_intrs; + struct intr_snapshot *s_intrs; + size_t s_nr_iodevs; + struct iodev_snapshot *s_iodevs; + size_t s_iodevs_is_name_maxlen; + struct sys_snapshot s_sys; + struct biostats s_biostats; +}; + +/* print a message and exit with failure */ +void fail(int do_perror, char *message, ...); + +/* strdup str, or exit with failure */ +char *safe_strdup(char *str); + +/* malloc successfully, or exit with failure */ +void *safe_alloc(size_t size); + +/* + * Copy a kstat from src to dst. If the source kstat contains no data, + * then set the destination kstat data to NULL and size to zero. + * Returns 0 on success. + */ +int kstat_copy(const kstat_t *src, kstat_t *dst); + +/* + * Look up the named kstat, and give the ui64 difference i.e. + * new - old, or if old is NULL, return new. + */ +uint64_t kstat_delta(kstat_t *old, kstat_t *new, char *name); + +/* Return the number of ticks delta between two hrtime_t values. */ +uint64_t hrtime_delta(hrtime_t old, hrtime_t new); + +/* + * Add the integer-valued stats from "src" to the + * existing ones in "dst". If "dst" does not contain + * stats, then a kstat_copy() is performed. + */ +int kstat_add(const kstat_t *src, kstat_t *dst); + +/* return the number of CPUs with kstats (i.e. present and online) */ +int nr_active_cpus(struct snapshot *ss); + +/* + * Return the difference in CPU ticks between the two sys + * kstats. + */ +uint64_t cpu_ticks_delta(kstat_t *old, kstat_t *new); + +/* + * Open the kstat chain. Cannot fail. + */ +kstat_ctl_t *open_kstat(void); + +/* + * Return a struct snapshot based on the snapshot_types parameter + * passed in. iodev_filter may be NULL in which case all iodevs + * are selected if SNAP_IODEVS is passed. + */ +struct snapshot *acquire_snapshot(kstat_ctl_t *, int, struct iodev_filter *); + +/* free a snapshot */ +void free_snapshot(struct snapshot *ss); + +typedef void (*snapshot_cb)(void *old, void *new, void *data); + +/* + * Call the call back for each pair of data items of the given type, + * passing the data pointer passed in as well. If an item has been + * added, the first pointer will be NULL; if removed, the second pointer + * will be NULL. + * + * A non-zero return value indicates configuration has changed. + */ +int snapshot_walk(enum snapshot_types type, struct snapshot *old, + struct snapshot *new, snapshot_cb cb, void *data); + +/* + * Output a line detailing any configuration changes such as a CPU + * brought online, etc, bracketed by << >>. + */ +void snapshot_report_changes(struct snapshot *old, struct snapshot *new); + +/* Return non-zero if configuration has changed. */ +int snapshot_has_changed(struct snapshot *old, struct snapshot *new); + +/* free the given iodev */ +void free_iodev(struct iodev_snapshot *iodev); + +/* acquire the I/O devices */ +int acquire_iodevs(struct snapshot *ss, kstat_ctl_t *kc, + struct iodev_filter *df); + +/* strcmp-style I/O device comparator */ +int iodev_cmp(struct iodev_snapshot *io1, struct iodev_snapshot *io2); + +/* sleep until *wakeup + interval, keeping cadence where desired */ +void sleep_until(hrtime_t *wakeup, hrtime_t interval, int forever, + int *caught_cont); + +/* signal handler - so we can be aware of SIGCONT */ +void cont_handler(int sig_number); + +/* Print a timestamp in either Unix or standard format. */ +void print_timestamp(uint_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _STATCOMMON_H */ Added: vendor/illumos/dist/cmd/stat/common/timestamp.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/stat/common/timestamp.c Sun Jul 1 07:57:18 2012 (r237895) @@ -0,0 +1,54 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#include "statcommon.h" + +#include + +/* + * Print timestamp as decimal reprentation of time_t value (-T u was specified) + * or in date(1) format (-T d was specified). + */ +void +print_timestamp(uint_t timestamp_fmt) +{ + time_t t = time(NULL); + static char *fmt = NULL; + + /* We only need to retrieve this once per invocation */ + if (fmt == NULL) + fmt = nl_langinfo(_DATE_FMT); + + if (timestamp_fmt == UDATE) { + (void) printf("%ld\n", t); + } else if (timestamp_fmt == DDATE) { + char dstr[64]; + int len; + + len = strftime(dstr, sizeof (dstr), fmt, localtime(&t)); + if (len > 0) + (void) printf("%s\n", dstr); + } +} Added: vendor/illumos/dist/cmd/zdb/zdb.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/zdb/zdb.c Sun Jul 1 07:57:18 2012 (r237895) @@ -0,0 +1,3219 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#undef ZFS_MAXNAMELEN +#undef verify +#include + +#define ZDB_COMPRESS_NAME(idx) ((idx) < ZIO_COMPRESS_FUNCTIONS ? \ + zio_compress_table[(idx)].ci_name : "UNKNOWN") +#define ZDB_CHECKSUM_NAME(idx) ((idx) < ZIO_CHECKSUM_FUNCTIONS ? \ + zio_checksum_table[(idx)].ci_name : "UNKNOWN") +#define ZDB_OT_NAME(idx) ((idx) < DMU_OT_NUMTYPES ? \ + dmu_ot[(idx)].ot_name : DMU_OT_IS_VALID(idx) ? \ + dmu_ot_byteswap[DMU_OT_BYTESWAP(idx)].ob_name : "UNKNOWN") +#define ZDB_OT_TYPE(idx) ((idx) < DMU_OT_NUMTYPES ? (idx) : DMU_OT_NUMTYPES) + +#ifndef lint +extern int zfs_recover; +#else +int zfs_recover; +#endif + +const char cmdname[] = "zdb"; +uint8_t dump_opt[256]; + +typedef void object_viewer_t(objset_t *, uint64_t, void *data, size_t size); + +extern void dump_intent_log(zilog_t *); +uint64_t *zopt_object = NULL; +int zopt_objects = 0; +libzfs_handle_t *g_zfs; + +/* + * These libumem hooks provide a reasonable set of defaults for the allocator's + * debugging facilities. + */ +const char * +_umem_debug_init() +{ + return ("default,verbose"); /* $UMEM_DEBUG setting */ +} + +const char * +_umem_logging_init(void) +{ + return ("fail,contents"); /* $UMEM_LOGGING setting */ +} + +static void +usage(void) +{ + (void) fprintf(stderr, + "Usage: %s [-CumdibcsDvhLXFPA] [-t txg] [-e [-p path...]] " + "poolname [object...]\n" + " %s [-divPA] [-e -p path...] dataset [object...]\n" + " %s -m [-LXFPA] [-t txg] [-e [-p path...]] " + "poolname [vdev [metaslab...]]\n" + " %s -R [-A] [-e [-p path...]] poolname " + "vdev:offset:size[:flags]\n" + " %s -S [-PA] [-e [-p path...]] poolname\n" + " %s -l [-uA] device\n" + " %s -C [-A] [-U config]\n\n", + cmdname, cmdname, cmdname, cmdname, cmdname, cmdname, cmdname); + + (void) fprintf(stderr, " Dataset name must include at least one " + "separator character '/' or '@'\n"); + (void) fprintf(stderr, " If dataset name is specified, only that " + "dataset is dumped\n"); + (void) fprintf(stderr, " If object numbers are specified, only " + "those objects are dumped\n\n"); + (void) fprintf(stderr, " Options to control amount of output:\n"); + (void) fprintf(stderr, " -u uberblock\n"); + (void) fprintf(stderr, " -d dataset(s)\n"); + (void) fprintf(stderr, " -i intent logs\n"); + (void) fprintf(stderr, " -C config (or cachefile if alone)\n"); + (void) fprintf(stderr, " -h pool history\n"); + (void) fprintf(stderr, " -b block statistics\n"); + (void) fprintf(stderr, " -m metaslabs\n"); + (void) fprintf(stderr, " -c checksum all metadata (twice for " + "all data) blocks\n"); + (void) fprintf(stderr, " -s report stats on zdb's I/O\n"); + (void) fprintf(stderr, " -D dedup statistics\n"); + (void) fprintf(stderr, " -S simulate dedup to measure effect\n"); + (void) fprintf(stderr, " -v verbose (applies to all others)\n"); + (void) fprintf(stderr, " -l dump label contents\n"); + (void) fprintf(stderr, " -L disable leak tracking (do not " + "load spacemaps)\n"); + (void) fprintf(stderr, " -R read and display block from a " + "device\n\n"); + (void) fprintf(stderr, " Below options are intended for use " + "with other options (except -l):\n"); + (void) fprintf(stderr, " -A ignore assertions (-A), enable " + "panic recovery (-AA) or both (-AAA)\n"); + (void) fprintf(stderr, " -F attempt automatic rewind within " + "safe range of transaction groups\n"); + (void) fprintf(stderr, " -U -- use alternate " + "cachefile\n"); + (void) fprintf(stderr, " -X attempt extreme rewind (does not " + "work with dataset)\n"); + (void) fprintf(stderr, " -e pool is exported/destroyed/" + "has altroot/not in a cachefile\n"); + (void) fprintf(stderr, " -p -- use one or more with " + "-e to specify path to vdev dir\n"); + (void) fprintf(stderr, " -P print numbers in parseable form\n"); + (void) fprintf(stderr, " -t -- highest txg to use when " + "searching for uberblocks\n"); + (void) fprintf(stderr, "Specify an option more than once (e.g. -bb) " + "to make only that option verbose\n"); + (void) fprintf(stderr, "Default is to dump everything non-verbosely\n"); + exit(1); +} + +/* + * Called for usage errors that are discovered after a call to spa_open(), + * dmu_bonus_hold(), or pool_match(). abort() is called for other errors. + */ + +static void +fatal(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + (void) fprintf(stderr, "%s: ", cmdname); + (void) vfprintf(stderr, fmt, ap); + va_end(ap); + (void) fprintf(stderr, "\n"); + + exit(1); +} + +/* ARGSUSED */ +static void +dump_packed_nvlist(objset_t *os, uint64_t object, void *data, size_t size) +{ + nvlist_t *nv; + size_t nvsize = *(uint64_t *)data; + char *packed = umem_alloc(nvsize, UMEM_NOFAIL); + + VERIFY(0 == dmu_read(os, object, 0, nvsize, packed, DMU_READ_PREFETCH)); + + VERIFY(nvlist_unpack(packed, nvsize, &nv, 0) == 0); + + umem_free(packed, nvsize); + + dump_nvlist(nv, 8); + + nvlist_free(nv); +} + +static void +zdb_nicenum(uint64_t num, char *buf) +{ + if (dump_opt['P']) + (void) sprintf(buf, "%llu", (longlong_t)num); + else + nicenum(num, buf); +} + +const char dump_zap_stars[] = "****************************************"; +const int dump_zap_width = sizeof (dump_zap_stars) - 1; + +static void +dump_zap_histogram(uint64_t histo[ZAP_HISTOGRAM_SIZE]) +{ + int i; + int minidx = ZAP_HISTOGRAM_SIZE - 1; + int maxidx = 0; + uint64_t max = 0; + + for (i = 0; i < ZAP_HISTOGRAM_SIZE; i++) { + if (histo[i] > max) + max = histo[i]; + if (histo[i] > 0 && i > maxidx) + maxidx = i; + if (histo[i] > 0 && i < minidx) + minidx = i; + } + + if (max < dump_zap_width) + max = dump_zap_width; + + for (i = minidx; i <= maxidx; i++) + (void) printf("\t\t\t%u: %6llu %s\n", i, (u_longlong_t)histo[i], + &dump_zap_stars[(max - histo[i]) * dump_zap_width / max]); +} + +static void +dump_zap_stats(objset_t *os, uint64_t object) +{ + int error; + zap_stats_t zs; + + error = zap_get_stats(os, object, &zs); + if (error) + return; + + if (zs.zs_ptrtbl_len == 0) { + ASSERT(zs.zs_num_blocks == 1); + (void) printf("\tmicrozap: %llu bytes, %llu entries\n", + (u_longlong_t)zs.zs_blocksize, + (u_longlong_t)zs.zs_num_entries); + return; + } + + (void) printf("\tFat ZAP stats:\n"); + + (void) printf("\t\tPointer table:\n"); + (void) printf("\t\t\t%llu elements\n", + (u_longlong_t)zs.zs_ptrtbl_len); + (void) printf("\t\t\tzt_blk: %llu\n", + (u_longlong_t)zs.zs_ptrtbl_zt_blk); + (void) printf("\t\t\tzt_numblks: %llu\n", + (u_longlong_t)zs.zs_ptrtbl_zt_numblks); + (void) printf("\t\t\tzt_shift: %llu\n", + (u_longlong_t)zs.zs_ptrtbl_zt_shift); + (void) printf("\t\t\tzt_blks_copied: %llu\n", + (u_longlong_t)zs.zs_ptrtbl_blks_copied); + (void) printf("\t\t\tzt_nextblk: %llu\n", + (u_longlong_t)zs.zs_ptrtbl_nextblk); + + (void) printf("\t\tZAP entries: %llu\n", + (u_longlong_t)zs.zs_num_entries); + (void) printf("\t\tLeaf blocks: %llu\n", + (u_longlong_t)zs.zs_num_leafs); + (void) printf("\t\tTotal blocks: %llu\n", + (u_longlong_t)zs.zs_num_blocks); + (void) printf("\t\tzap_block_type: 0x%llx\n", + (u_longlong_t)zs.zs_block_type); + (void) printf("\t\tzap_magic: 0x%llx\n", + (u_longlong_t)zs.zs_magic); + (void) printf("\t\tzap_salt: 0x%llx\n", + (u_longlong_t)zs.zs_salt); + + (void) printf("\t\tLeafs with 2^n pointers:\n"); + dump_zap_histogram(zs.zs_leafs_with_2n_pointers); + + (void) printf("\t\tBlocks with n*5 entries:\n"); + dump_zap_histogram(zs.zs_blocks_with_n5_entries); + + (void) printf("\t\tBlocks n/10 full:\n"); + dump_zap_histogram(zs.zs_blocks_n_tenths_full); + + (void) printf("\t\tEntries with n chunks:\n"); + dump_zap_histogram(zs.zs_entries_using_n_chunks); + + (void) printf("\t\tBuckets with n entries:\n"); + dump_zap_histogram(zs.zs_buckets_with_n_entries); +} + +/*ARGSUSED*/ +static void +dump_none(objset_t *os, uint64_t object, void *data, size_t size) +{ +} + +/*ARGSUSED*/ +static void +dump_unknown(objset_t *os, uint64_t object, void *data, size_t size) +{ + (void) printf("\tUNKNOWN OBJECT TYPE\n"); +} + +/*ARGSUSED*/ +void +dump_uint8(objset_t *os, uint64_t object, void *data, size_t size) +{ +} + +/*ARGSUSED*/ +static void +dump_uint64(objset_t *os, uint64_t object, void *data, size_t size) +{ +} + +/*ARGSUSED*/ +static void +dump_zap(objset_t *os, uint64_t object, void *data, size_t size) +{ + zap_cursor_t zc; + zap_attribute_t attr; + void *prop; + int i; + + dump_zap_stats(os, object); + (void) printf("\n"); + + for (zap_cursor_init(&zc, os, object); + zap_cursor_retrieve(&zc, &attr) == 0; + zap_cursor_advance(&zc)) { + (void) printf("\t\t%s = ", attr.za_name); + if (attr.za_num_integers == 0) { + (void) printf("\n"); + continue; + } + prop = umem_zalloc(attr.za_num_integers * + attr.za_integer_length, UMEM_NOFAIL); + (void) zap_lookup(os, object, attr.za_name, + attr.za_integer_length, attr.za_num_integers, prop); + if (attr.za_integer_length == 1) { + (void) printf("%s", (char *)prop); + } else { + for (i = 0; i < attr.za_num_integers; i++) { + switch (attr.za_integer_length) { + case 2: + (void) printf("%u ", + ((uint16_t *)prop)[i]); + break; + case 4: + (void) printf("%u ", + ((uint32_t *)prop)[i]); + break; + case 8: + (void) printf("%lld ", + (u_longlong_t)((int64_t *)prop)[i]); + break; + } + } + } + (void) printf("\n"); + umem_free(prop, attr.za_num_integers * attr.za_integer_length); + } + zap_cursor_fini(&zc); +} + +/*ARGSUSED*/ +static void +dump_ddt_zap(objset_t *os, uint64_t object, void *data, size_t size) +{ + dump_zap_stats(os, object); + /* contents are printed elsewhere, properly decoded */ +} + +/*ARGSUSED*/ +static void +dump_sa_attrs(objset_t *os, uint64_t object, void *data, size_t size) +{ + zap_cursor_t zc; + zap_attribute_t attr; + + dump_zap_stats(os, object); + (void) printf("\n"); + + for (zap_cursor_init(&zc, os, object); + zap_cursor_retrieve(&zc, &attr) == 0; + zap_cursor_advance(&zc)) { + (void) printf("\t\t%s = ", attr.za_name); + if (attr.za_num_integers == 0) { + (void) printf("\n"); + continue; + } + (void) printf(" %llx : [%d:%d:%d]\n", + (u_longlong_t)attr.za_first_integer, + (int)ATTR_LENGTH(attr.za_first_integer), + (int)ATTR_BSWAP(attr.za_first_integer), + (int)ATTR_NUM(attr.za_first_integer)); + } + zap_cursor_fini(&zc); +} + +/*ARGSUSED*/ +static void +dump_sa_layouts(objset_t *os, uint64_t object, void *data, size_t size) +{ + zap_cursor_t zc; + zap_attribute_t attr; + uint16_t *layout_attrs; + int i; + + dump_zap_stats(os, object); + (void) printf("\n"); + + for (zap_cursor_init(&zc, os, object); + zap_cursor_retrieve(&zc, &attr) == 0; + zap_cursor_advance(&zc)) { + (void) printf("\t\t%s = [", attr.za_name); + if (attr.za_num_integers == 0) { + (void) printf("\n"); + continue; + } + + VERIFY(attr.za_integer_length == 2); + layout_attrs = umem_zalloc(attr.za_num_integers * + attr.za_integer_length, UMEM_NOFAIL); + + VERIFY(zap_lookup(os, object, attr.za_name, + attr.za_integer_length, + attr.za_num_integers, layout_attrs) == 0); + + for (i = 0; i != attr.za_num_integers; i++) + (void) printf(" %d ", (int)layout_attrs[i]); + (void) printf("]\n"); + umem_free(layout_attrs, + attr.za_num_integers * attr.za_integer_length); + } + zap_cursor_fini(&zc); +} + +/*ARGSUSED*/ +static void +dump_zpldir(objset_t *os, uint64_t object, void *data, size_t size) +{ + zap_cursor_t zc; + zap_attribute_t attr; + const char *typenames[] = { + /* 0 */ "not specified", + /* 1 */ "FIFO", + /* 2 */ "Character Device", + /* 3 */ "3 (invalid)", + /* 4 */ "Directory", + /* 5 */ "5 (invalid)", + /* 6 */ "Block Device", + /* 7 */ "7 (invalid)", + /* 8 */ "Regular File", + /* 9 */ "9 (invalid)", + /* 10 */ "Symbolic Link", + /* 11 */ "11 (invalid)", + /* 12 */ "Socket", + /* 13 */ "Door", + /* 14 */ "Event Port", + /* 15 */ "15 (invalid)", + }; + + dump_zap_stats(os, object); + (void) printf("\n"); + + for (zap_cursor_init(&zc, os, object); + zap_cursor_retrieve(&zc, &attr) == 0; + zap_cursor_advance(&zc)) { + (void) printf("\t\t%s = %lld (type: %s)\n", + attr.za_name, ZFS_DIRENT_OBJ(attr.za_first_integer), + typenames[ZFS_DIRENT_TYPE(attr.za_first_integer)]); + } + zap_cursor_fini(&zc); +} + +static void +dump_spacemap(objset_t *os, space_map_obj_t *smo, space_map_t *sm) +{ + uint64_t alloc, offset, entry; + uint8_t mapshift = sm->sm_shift; + uint64_t mapstart = sm->sm_start; + char *ddata[] = { "ALLOC", "FREE", "CONDENSE", "INVALID", + "INVALID", "INVALID", "INVALID", "INVALID" }; + + if (smo->smo_object == 0) + return; + + /* + * Print out the freelist entries in both encoded and decoded form. + */ + alloc = 0; + for (offset = 0; offset < smo->smo_objsize; offset += sizeof (entry)) { + VERIFY3U(0, ==, dmu_read(os, smo->smo_object, offset, + sizeof (entry), &entry, DMU_READ_PREFETCH)); + if (SM_DEBUG_DECODE(entry)) { + (void) printf("\t [%6llu] %s: txg %llu, pass %llu\n", + (u_longlong_t)(offset / sizeof (entry)), + ddata[SM_DEBUG_ACTION_DECODE(entry)], + (u_longlong_t)SM_DEBUG_TXG_DECODE(entry), + (u_longlong_t)SM_DEBUG_SYNCPASS_DECODE(entry)); + } else { + (void) printf("\t [%6llu] %c range:" + " %010llx-%010llx size: %06llx\n", + (u_longlong_t)(offset / sizeof (entry)), + SM_TYPE_DECODE(entry) == SM_ALLOC ? 'A' : 'F', + (u_longlong_t)((SM_OFFSET_DECODE(entry) << + mapshift) + mapstart), *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@FreeBSD.ORG Sun Jul 1 08:20:13 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B075C1065670; Sun, 1 Jul 2012 08:20:13 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9948D8FC0C; Sun, 1 Jul 2012 08:20:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q618KD4D076827; Sun, 1 Jul 2012 08:20:13 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q618KDuL076824; Sun, 1 Jul 2012 08:20:13 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201207010820.q618KDuL076824@svn.freebsd.org> From: Martin Matuska Date: Sun, 1 Jul 2012 08:20:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237905 - vendor/illumos/dist/man/man1m X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jul 2012 08:20:13 -0000 Author: mm Date: Sun Jul 1 08:20:13 2012 New Revision: 237905 URL: http://svn.freebsd.org/changeset/base/237905 Log: Add zfs manual pages missing in r237895 Added: vendor/illumos/dist/man/man1m/zdb.1m vendor/illumos/dist/man/man1m/zfs.1m vendor/illumos/dist/man/man1m/zpool.1m vendor/illumos/dist/man/man1m/zstreamdump.1m Added: vendor/illumos/dist/man/man1m/zdb.1m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/man/man1m/zdb.1m Sun Jul 1 08:20:13 2012 (r237905) @@ -0,0 +1,484 @@ +'\" t +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2012, Richard Lowe. +.\" +.TH "ZDB" "1M" "February 15, 2012" "" "" + +.SH "NAME" +\fBzdb\fR - Display zpool debugging and consistency information + +.SH "SYNOPSIS" +\fBzdb\fR [-CumdibcsDvhLXFPA] [-e [-p \fIpath\fR...]] [-t \fItxg\fR] + \fIpoolname\fR [\fIobject\fR ...] + +.P +\fBzdb\fR [-divPA] [-e [-p \fIpath\fR...]] \fIdataset\fR [\fIobject\fR ...] + +.P +\fBzdb\fR -m [-LXFPA] [-t \fItxg\fR] [-e [-p \fIpath\fR...]] \fIpoolname\fR + [\fIvdev\fR [\fImetaslab\fR ...]] + +.P +\fBzdb\fR -R [-A] [-e [-p \fIpath\fR...]] \fIpoolname\fR + \fIvdev\fR:\fIoffset\fR:\fIsize\fR[:\fIflags\fR] + +.P +\fBzdb\fR -S [-AP] [-e [-p \fIpath\fR...]] \fIpoolname\fR + +.P +\fBzdb\fR -l [-uA] \fIdevice\fR + +.P +\fBzdb\fR -C [-A] [-U \fIcache\fR] + +.SH "DESCRIPTION" +The \fBzdb\fR utility displays information about a ZFS pool useful for +debugging and performs some amount of consistency checking. It is a not a +general purpose tool and options (and facilities) may change. This is neither +a fsck(1M) nor an fsdb(1M) utility. + +.P +The output of this command in general reflects the on-disk structure of a ZFS +pool, and is inherently unstable. The precise output of most invocations is +not documented, a knowledge of ZFS internals is assumed. + +.P +When operating on an imported and active pool it is possible, though unlikely, +that zdb may interpret inconsistent pool data and behave erratically. + +.SH "OPTIONS" +Display options: + +.sp +.ne 2 +.na +\fB-b\fR +.ad +.sp .6 +.RS 4n +Display statistics regarding the number, size (logical, physical and +allocated) and deduplication of blocks. +.RE + +.sp +.ne 2 +.na +\fB-c\fR +.ad +.sp .6 +.RS 4n +Verify the checksum of all metadata blocks while printing block statistics +(see \fB-b\fR). +.sp +If specified multiple times, verify the checksums of all blocks. +.RE + +.sp +.ne 2 +.na +\fB-C\fR +.ad +.sp .6 +.RS 4n +Display information about the configuration. If specified with no other +options, instead display information about the cache file +(\fB/etc/zfs/zpool.cache\fR). To specify the cache file to display, see +\fB-U\fR. +.P +If specified multiple times, and a pool name is also specified display both +the cached configuration and the on-disk configuration. If specified multiple +times with \fB-e\fR also display the configuration that would be used were the +pool to be imported. +.RE + +.sp +.ne 2 +.na +\fB-d\fR +.ad +.sp .6 +.RS 4n +Display information about datasets. Specified once, displays basic dataset +information: ID, create transaction, size, and object count. +.sp +If specified multiple times provides greater and greater verbosity. +.sp +If object IDs are specified, display information about those specific objects only. +.RE + +.sp +.ne 2 +.na +\fB-D\fR +.ad +.sp .6 +.RS 4n +Display deduplication statistics, including the deduplication ratio (dedup), +compression ratio (compress), inflation due to the zfs copies property +(copies), and an overall effective ratio (dedup * compress / copies). +.sp +If specified twice, display a histogram of deduplication statistics, showing +the allocated (physically present on disk) and referenced (logically +referenced in the pool) block counts and sizes by reference count. +.RE + +.sp +.ne 2 +.na +\fB-h\fR +.ad +.sp .6 +.RS 4n +Display pool history similar to \fBzpool history\fR, but include internal +changes, transaction, and dataset information. +.RE + +.sp +.ne 2 +.na +\fB-i\fR +.ad +.sp .6 +.RS 4n +Display information about intent log (ZIL) entries relating to each +dataset. If specified multiple times, display counts of each intent log +transaction type. +.RE + +.sp +.ne 2 +.na +\fB-l\fR \fIdevice\fR +.ad +.sp .6 +.RS 4n +Display the vdev labels from the specified device. If the \fB-u\fR option is +also specified, also display the uberblocks on this device. +.RE + +.sp +.ne 2 +.na +\fB-L\fR +.ad +.sp .6 +.RS 4n +Disable leak tracing and the loading of space maps. By default, \fBzdb\fR +verifies that all non-free blocks are referenced, which can be very expensive. +.RE + +.sp +.ne 2 +.na +\fB-m\fR +.ad +.sp .6 +.RS 4n +Display the offset, spacemap, and free space of each metaslab. +When specified twice, also display information about the maximum contiguous +free space and the percentage of free space in each space map. When specified +three times display every spacemap record. +.RE + +.sp +.ne 2 +.na +\fB-R\fR \fIpoolname\fR \fIvdev\fR:\fIoffset\fR:\fIsize\fR[:\fIflags\fR] +.ad +.sp .6 +.RS 4n +Read and display a block from the specified device. By default the block is +displayed as a hex dump, but see the description of the \'r\' flag, below. +.sp +The block is specified in terms of a colon-separated tuple \fIvdev\fR (an +integer vdev identifier) \fIoffset\fR (the offset within the vdev) \fIsize\fR +(the size of the block to read) and, optionally, \fIflags\fR (a set of flags, +described below). + +.sp +.ne 2 +.na +\fBb\fR \fIoffset\fR +.ad +.sp .6 +.RS 4n +Print block pointer +.RE + +.sp +.ne 2 +.na +\fBd\fR +.ad +.sp .6 +.RS 4n +Decompress the block +.RE + +.sp +.ne 2 +.na +\fBe\fR +.ad +.sp .6 +.RS 4n +Byte swap the block +.RE + +.sp +.ne 2 +.na +\fBg\fR +.ad +.sp .6 +.RS 4n +Dump gang block header +.RE + +.sp +.ne 2 +.na +\fBi\fR +.ad +.sp .6 +.RS 4n +Dump indirect block +.RE + +.sp +.ne 2 +.na +\fBr\fR +.ad +.sp .6 +.RS 4n +Dump raw uninterpreted block data +.RE +.RE + +.sp +.ne 2 +.na +\fB-s\fR +.ad +.sp .6 +.RS 4n +Report statistics on \fBzdb\fR\'s I/O. Display operation counts, bandwidth, +and error counts of I/O to the pool from \fBzdb\fR. +.RE + +.sp +.ne 2 +.na +\fB-S\fR +.ad +.sp .6 +.RS 4n +Simulate the effects of deduplication, constructing a DDT and then display +that DDT as with \fB-DD\fR. +.RE + +.sp +.ne 2 +.na +\fB-u\fR +.ad +.sp .6 +.RS 4n +Display the current uberblock. +.RE + +.P +Other options: + +.sp +.ne 2 +.na +\fB-A\fR +.ad +.sp .6 +.RS 4n +Do not abort should any assertion fail. +.RE + +.sp +.ne 2 +.na +\fB-AA\fR +.ad +.sp .6 +.RS 4n +Enable panic recovery, certain errors which would otherwise be fatal are +demoted to warnings. +.RE + +.sp +.ne 2 +.na +\fB-AAA\fR +.ad +.sp .6 +.RS 4n +Do not abort if asserts fail and also enable panic recovery. +.RE + +.sp +.ne 2 +.na +\fB-e\fR [-p \fIpath\fR]... +.ad +.sp .6 +.RS 4n +Operate on an exported pool, not present in \fB/etc/zfs/zpool.cache\fR. The +\fB-p\fR flag specifies the path under which devices are to be searched. +.RE + +.sp +.ne 2 +.na +\fB-F\fR +.ad +.sp .6 +.RS 4n +Attempt to make an unreadable pool readable by trying progressively older +transactions. +.RE + +.sp +.ne 2 +.na +\fB-P\fR +.ad +.sp .6 +.RS 4n +Print numbers in an unscaled form more amenable to parsing, eg. 1000000 rather +than 1M. +.RE + +.sp +.ne 2 +.na +\fB-t\fR \fItransaction\fR +.ad +.sp .6 +.RS 4n +Specify the highest transaction to use when searching for uberblocks. See also +the \fB-u\fR and \fB-l\fR options for a means to see the available uberblocks +and their associated transaction numbers. +.RE + +.sp +.ne 2 +.na +\fB-U\fR \fIcachefile\fR +.ad +.sp .6 +.RS 4n +Use a cache file other than \fB/etc/zfs/zpool.cache\fR. This option is only +valid with \fB-C\fR +.RE + +.sp +.ne 2 +.na +\fB-v\fR +.ad +.sp .6 +.RS 4n +Enable verbosity. Specify multiple times for increased verbosity. +.RE + +.sp +.ne 2 +.na +\fB-X\fR +.ad +.sp .6 +.RS 4n +Attempt \'extreme\' transaction rewind, that is attempt the same recovery as +\fB-F\fR but read transactions otherwise deemed too old. +.RE + +.P +Specifying a display option more than once enables verbosity for only that +option, with more occurrences enabling more verbosity. +.P +If no options are specified, all information about the named pool will be +displayed at default verbosity. + +.SH "EXAMPLES" +.LP +\fBExample 1 \fRDisplay the configuration of imported pool 'rpool' +.sp +.in +2 +.nf +# zdb -C rpool + +MOS Configuration: + version: 28 + name: 'rpool' + ... +.fi +.in -2 +.sp + +.LP +\fBExample 2 \fRDisplay basic dataset information about 'rpool' +.sp +.in +2 +.nf +# zdb -d rpool +Dataset mos [META], ID 0, cr_txg 4, 26.9M, 1051 objects +Dataset rpool/swap [ZVOL], ID 59, cr_txg 356, 486M, 2 objects + ... +.fi +.in -2 +.sp + +.LP +\fBExample 3 \fRDisplay basic information about object 0 in +'rpool/export/home' +.sp +.in +2 +.nf +# zdb -d rpool/export/home 0 +Dataset rpool/export/home [ZPL], ID 137, cr_txg 1546, 32K, 8 objects + + Object lvl iblk dblk dsize lsize %full type + 0 7 16K 16K 15.0K 16K 25.00 DMU dnode +.fi +.in -2 +.sp + +.LP +\fBExample 4 \fRDisplay the predicted effect of enabling deduplication on 'rpool' +.sp +.in +2 +.nf +# zdb -S rpool +Simulated DDT histogram: + +bucket allocated referenced +______ ______________________________ ______________________________ +refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE +------ ------ ----- ----- ----- ------ ----- ----- ----- + 1 694K 27.1G 15.0G 15.0G 694K 27.1G 15.0G 15.0G + 2 35.0K 1.33G 699M 699M 74.7K 2.79G 1.45G 1.45G + ... +dedup = 1.11, compress = 1.80, copies = 1.00, dedup * compress / copies = 2.00 +.fi +.in -2 +.sp + +.SH "SEE ALSO" +zfs(1M), zpool(1M) Added: vendor/illumos/dist/man/man1m/zfs.1m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/man/man1m/zfs.1m Sun Jul 1 08:20:13 2012 (r237905) @@ -0,0 +1,3863 @@ +'\" te +.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. +.\" Copyright (c) 2012 by Delphix. All rights reserved. +.\" Copyright (c) 2012 Nexenta Systems, Inc. All Rights Reserved. +.\" Copyright (c) 2012, Joyent, Inc. All rights reserved. +.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. +.\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with +.\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] +.\" Copyright 2011 Joshua M. Clulow +.TH ZFS 1M "28 Jul 2011" +.SH NAME +zfs \- configures ZFS file systems +.SH SYNOPSIS +.LP +.nf +\fBzfs\fR [\fB-?\fR] +.fi + +.LP +.nf +\fBzfs\fR \fBcreate\fR [\fB-p\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fIfilesystem\fR +.fi + +.LP +.nf +\fBzfs\fR \fBcreate\fR [\fB-ps\fR] [\fB-b\fR \fIblocksize\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fB-V\fR \fIsize\fR \fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBdestroy\fR [\fB-fnpRrv\fR] \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBdestroy\fR [\fB-dnpRrv\fR] \fIfilesystem\fR|\fIvolume\fR@\fIsnap\fR[%\fIsnap\fR][,...] +.fi + +.LP +.nf +\fBzfs\fR \fBsnapshot\fR [\fB-r\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR]... + \fIfilesystem@snapname\fR|\fIvolume@snapname\fR +.fi + +.LP +.nf +\fBzfs\fR \fBrollback\fR [\fB-rRf\fR] \fIsnapshot\fR +.fi + +.LP +.nf +\fBzfs\fR \fBclone\fR [\fB-p\fR] [\fB-o\fR \fIproperty\fR=\fIvalue\fR] ... \fIsnapshot\fR \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBpromote\fR \fIclone-filesystem\fR +.fi + +.LP +.nf +\fBzfs\fR \fBrename\fR [\fB-f\fR] \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR + \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR +.fi + +.LP +.nf +\fBzfs\fR \fBrename\fR [\fB-fp\fR] \fIfilesystem\fR|\fIvolume\fR \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBrename\fR \fB-r\fR \fIsnapshot\fR \fIsnapshot\fR +.fi + +.LP +.nf +\fBzfs\fR \fBlist\fR [\fB-r\fR|\fB-d\fR \fIdepth\fR][\fB-H\fR][\fB-o\fR \fIproperty\fR[,...]] [\fB-t\fR \fItype\fR[,...]] + [\fB-s\fR \fIproperty\fR] ... [\fB-S\fR \fIproperty\fR] ... [\fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR] ... +.fi + +.LP +.nf +\fBzfs\fR \fBset\fR \fIproperty\fR=\fIvalue\fR \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR ... +.fi + +.LP +.nf +\fBzfs\fR \fBget\fR [\fB-r\fR|\fB-d\fR \fIdepth\fR][\fB-Hp\fR][\fB-o\fR \fIfield\fR[,...]] [\fB-t\fR \fItype\fR[,...]] + [\fB-s\fR \fIsource\fR[,...]] "\fIall\fR" | \fIproperty\fR[,...] \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR ... +.fi + +.LP +.nf +\fBzfs\fR \fBinherit\fR [\fB-r\fR] \fIproperty\fR \fIfilesystem\fR|\fIvolume|snapshot\fR ... +.fi + +.LP +.nf +\fBzfs\fR \fBupgrade\fR [\fB-v\fR] +.fi + +.LP +.nf +\fBzfs\fR \fBupgrade\fR [\fB-r\fR] [\fB-V\fR \fIversion\fR] \fB-a\fR | \fIfilesystem\fR +.fi + +.LP +.nf +\fBzfs\fR \fBuserspace\fR [\fB-niHp\fR] [\fB-o\fR \fIfield\fR[,...]] [\fB-sS\fR \fIfield\fR] ... + [\fB-t\fR \fItype\fR[,...]] \fIfilesystem\fR|\fIsnapshot\fR +.fi + +.LP +.nf +\fBzfs\fR \fBgroupspace\fR [\fB-niHp\fR] [\fB-o\fR \fIfield\fR[,...]] [\fB-sS\fR \fIfield\fR] ... + [\fB-t\fR \fItype\fR[,...]] \fIfilesystem\fR|\fIsnapshot\fR +.fi + +.LP +.nf +\fBzfs\fR \fBmount\fR +.fi + +.LP +.nf +\fBzfs\fR \fBmount\fR [\fB-vO\fR] [\fB-o \fIoptions\fR\fR] \fB-a\fR | \fIfilesystem\fR +.fi + +.LP +.nf +\fBzfs\fR \fBunmount\fR [\fB-f\fR] \fB-a\fR | \fIfilesystem\fR|\fImountpoint\fR +.fi + +.LP +.nf +\fBzfs\fR \fBshare\fR \fB-a\fR | \fIfilesystem\fR +.fi + +.LP +.nf +\fBzfs\fR \fBunshare\fR \fB-a\fR \fIfilesystem\fR|\fImountpoint\fR +.fi + +.LP +.nf +\fBzfs\fR \fBsend\fR [\fB-DnPpRrv\fR] [\fB-\fR[\fBiI\fR] \fIsnapshot\fR] \fIsnapshot\fR +.fi + +.LP +.nf +\fBzfs\fR \fBreceive\fR [\fB-vnFu\fR] \fIfilesystem\fR|\fIvolume\fR|\fIsnapshot\fR +.fi + +.LP +.nf +\fBzfs\fR \fBreceive\fR [\fB-vnFu\fR] [\fB-d\fR|\fB-e\fR] \fIfilesystem\fR +.fi + +.LP +.nf +\fBzfs\fR \fBallow\fR \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBallow\fR [\fB-ldug\fR] "\fIeveryone\fR"|\fIuser\fR|\fIgroup\fR[,...] \fIperm\fR|\fI@setname\fR[,...] + \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBallow\fR [\fB-ld\fR] \fB-e\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBallow\fR \fB-c\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBallow\fR \fB-s\fR @\fIsetname\fR \fIperm\fR|@\fIsetname\fR[,...] \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBunallow\fR [\fB-rldug\fR] "\fIeveryone\fR"|\fIuser\fR|\fIgroup\fR[,...] [\fIperm\fR|@\fIsetname\fR[,... ]] + \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBunallow\fR [\fB-rld\fR] \fB-e\fR [\fIperm\fR|@\fIsetname\fR[,... ]] \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBunallow\fR [\fB-r\fR] \fB-c\fR [\fIperm\fR|@\fIsetname\fR[ ... ]] \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBunallow\fR [\fB-r\fR] \fB-s\fR @\fIsetname\fR [\fIperm\fR|@\fIsetname\fR[,... ]] \fIfilesystem\fR|\fIvolume\fR +.fi + +.LP +.nf +\fBzfs\fR \fBhold\fR [\fB-r\fR] \fItag\fR \fIsnapshot\fR... +.fi + +.LP +.nf +\fBzfs\fR \fBholds\fR [\fB-r\fR] \fIsnapshot\fR... +.fi + +.LP +.nf +\fBzfs\fR \fBrelease\fR [\fB-r\fR] \fItag\fR \fIsnapshot\fR... +.fi + +.SH DESCRIPTION +.sp +.LP +The \fBzfs\fR command configures \fBZFS\fR datasets within a \fBZFS\fR storage +pool, as described in \fBzpool\fR(1M). A dataset is identified by a unique path +within the \fBZFS\fR namespace. For example: +.sp +.in +2 +.nf +pool/{filesystem,volume,snapshot} +.fi +.in -2 +.sp + +.sp +.LP +where the maximum length of a dataset name is \fBMAXNAMELEN\fR (256 bytes). +.sp +.LP +A dataset can be one of the following: +.sp +.ne 2 +.na +\fB\fIfile system\fR\fR +.ad +.sp .6 +.RS 4n +A \fBZFS\fR dataset of type \fBfilesystem\fR can be mounted within the standard +system namespace and behaves like other file systems. While \fBZFS\fR file +systems are designed to be \fBPOSIX\fR compliant, known issues exist that +prevent compliance in some cases. Applications that depend on standards +conformance might fail due to nonstandard behavior when checking file system +free space. +.RE + +.sp +.ne 2 +.na +\fB\fIvolume\fR\fR +.ad +.sp .6 +.RS 4n +A logical volume exported as a raw or block device. This type of dataset should +only be used under special circumstances. File systems are typically used in +most environments. +.RE + +.sp +.ne 2 +.na +\fB\fIsnapshot\fR\fR +.ad +.sp .6 +.RS 4n +A read-only version of a file system or volume at a given point in time. It is +specified as \fIfilesystem@name\fR or \fIvolume@name\fR. +.RE + +.SS "ZFS File System Hierarchy" +.sp +.LP +A \fBZFS\fR storage pool is a logical collection of devices that provide space +for datasets. A storage pool is also the root of the \fBZFS\fR file system +hierarchy. +.sp +.LP +The root of the pool can be accessed as a file system, such as mounting and +unmounting, taking snapshots, and setting properties. The physical storage +characteristics, however, are managed by the \fBzpool\fR(1M) command. +.sp +.LP +See \fBzpool\fR(1M) for more information on creating and administering pools. +.SS "Snapshots" +.sp +.LP +A snapshot is a read-only copy of a file system or volume. Snapshots can be +created extremely quickly, and initially consume no additional space within the +pool. As data within the active dataset changes, the snapshot consumes more +data than would otherwise be shared with the active dataset. +.sp +.LP +Snapshots can have arbitrary names. Snapshots of volumes can be cloned or +rolled back, but cannot be accessed independently. +.sp +.LP +File system snapshots can be accessed under the \fB\&.zfs/snapshot\fR directory +in the root of the file system. Snapshots are automatically mounted on demand +and may be unmounted at regular intervals. The visibility of the \fB\&.zfs\fR +directory can be controlled by the \fBsnapdir\fR property. +.SS "Clones" +.sp +.LP +A clone is a writable volume or file system whose initial contents are the same +as another dataset. As with snapshots, creating a clone is nearly +instantaneous, and initially consumes no additional space. +.sp +.LP +Clones can only be created from a snapshot. When a snapshot is cloned, it +creates an implicit dependency between the parent and child. Even though the +clone is created somewhere else in the dataset hierarchy, the original snapshot +cannot be destroyed as long as a clone exists. The \fBorigin\fR property +exposes this dependency, and the \fBdestroy\fR command lists any such +dependencies, if they exist. +.sp +.LP +The clone parent-child dependency relationship can be reversed by using the +\fBpromote\fR subcommand. This causes the "origin" file system to become a +clone of the specified file system, which makes it possible to destroy the file +system that the clone was created from. +.SS "Mount Points" +.sp +.LP +Creating a \fBZFS\fR file system is a simple operation, so the number of file +systems per system is likely to be numerous. To cope with this, \fBZFS\fR +automatically manages mounting and unmounting file systems without the need to +edit the \fB/etc/vfstab\fR file. All automatically managed file systems are +mounted by \fBZFS\fR at boot time. +.sp +.LP +By default, file systems are mounted under \fB/\fIpath\fR\fR, where \fIpath\fR +is the name of the file system in the \fBZFS\fR namespace. Directories are +created and destroyed as needed. +.sp +.LP +A file system can also have a mount point set in the \fBmountpoint\fR property. +This directory is created as needed, and \fBZFS\fR automatically mounts the +file system when the \fBzfs mount -a\fR command is invoked (without editing +\fB/etc/vfstab\fR). The \fBmountpoint\fR property can be inherited, so if +\fBpool/home\fR has a mount point of \fB/export/stuff\fR, then +\fBpool/home/user\fR automatically inherits a mount point of +\fB/export/stuff/user\fR. +.sp +.LP +A file system \fBmountpoint\fR property of \fBnone\fR prevents the file system +from being mounted. +.sp +.LP +If needed, \fBZFS\fR file systems can also be managed with traditional tools +(\fBmount\fR, \fBumount\fR, \fB/etc/vfstab\fR). If a file system's mount point +is set to \fBlegacy\fR, \fBZFS\fR makes no attempt to manage the file system, +and the administrator is responsible for mounting and unmounting the file +system. +.SS "Zones" +.sp +.LP +A \fBZFS\fR file system can be added to a non-global zone by using the +\fBzonecfg\fR \fBadd fs\fR subcommand. A \fBZFS\fR file system that is added to +a non-global zone must have its \fBmountpoint\fR property set to \fBlegacy\fR. +.sp +.LP +The physical properties of an added file system are controlled by the global +administrator. However, the zone administrator can create, modify, or destroy +files within the added file system, depending on how the file system is +mounted. +.sp +.LP +A dataset can also be delegated to a non-global zone by using the \fBzonecfg\fR +\fBadd dataset\fR subcommand. You cannot delegate a dataset to one zone and the +children of the same dataset to another zone. The zone administrator can change +properties of the dataset or any of its children. However, the \fBquota\fR +property is controlled by the global administrator. +.sp +.LP +A \fBZFS\fR volume can be added as a device to a non-global zone by using the +\fBzonecfg\fR \fBadd device\fR subcommand. However, its physical properties can +be modified only by the global administrator. +.sp +.LP +For more information about \fBzonecfg\fR syntax, see \fBzonecfg\fR(1M). +.sp +.LP +After a dataset is delegated to a non-global zone, the \fBzoned\fR property is +automatically set. A zoned file system cannot be mounted in the global zone, +since the zone administrator might have to set the mount point to an +unacceptable value. +.sp +.LP +The global administrator can forcibly clear the \fBzoned\fR property, though +this should be done with extreme care. The global administrator should verify +that all the mount points are acceptable before clearing the property. +.SS "Native Properties" +.sp +.LP +Properties are divided into two types, native properties and user-defined (or +"user") properties. Native properties either export internal statistics or +control \fBZFS\fR behavior. In addition, native properties are either editable +or read-only. User properties have no effect on \fBZFS\fR behavior, but you can +use them to annotate datasets in a way that is meaningful in your environment. +For more information about user properties, see the "User Properties" section, +below. +.sp +.LP +Every dataset has a set of properties that export statistics about the dataset +as well as control various behaviors. Properties are inherited from the parent +unless overridden by the child. Some properties apply only to certain types of +datasets (file systems, volumes, or snapshots). +.sp +.LP +The values of numeric properties can be specified using human-readable suffixes +(for example, \fBk\fR, \fBKB\fR, \fBM\fR, \fBGb\fR, and so forth, up to \fBZ\fR +for zettabyte). The following are all valid (and equal) specifications: +.sp +.in +2 +.nf +1536M, 1.5g, 1.50GB +.fi +.in -2 +.sp + +.sp +.LP +The values of non-numeric properties are case sensitive and must be lowercase, +except for \fBmountpoint\fR, \fBsharenfs\fR, and \fBsharesmb\fR. +.sp +.LP +The following native properties consist of read-only statistics about the +dataset. These properties can be neither set, nor inherited. Native properties +apply to all dataset types unless otherwise noted. +.sp +.ne 2 +.na +\fB\fBavailable\fR\fR +.ad +.sp .6 +.RS 4n +The amount of space available to the dataset and all its children, assuming +that there is no other activity in the pool. Because space is shared within a +pool, availability can be limited by any number of factors, including physical +pool size, quotas, reservations, or other datasets within the pool. +.sp +This property can also be referred to by its shortened column name, +\fBavail\fR. +.RE + +.sp +.ne 2 +.na +\fB\fBcompressratio\fR\fR +.ad +.sp .6 +.RS 4n +For non-snapshots, the compression ratio achieved for the \fBused\fR +space of this dataset, expressed as a multiplier. The \fBused\fR +property includes descendant datasets, and, for clones, does not include +the space shared with the origin snapshot. For snapshots, the +\fBcompressratio\fR is the same as the \fBrefcompressratio\fR property. +Compression can be turned on by running: \fBzfs set compression=on +\fIdataset\fR\fR. The default value is \fBoff\fR. +.RE + +.sp +.ne 2 +.na +\fB\fBcreation\fR\fR +.ad +.sp .6 +.RS 4n +The time this dataset was created. +.RE + +.sp +.ne 2 +.na +\fB\fBclones\fR\fR +.ad +.sp .6 +.RS 4n +For snapshots, this property is a comma-separated list of filesystems or +volumes which are clones of this snapshot. The clones' \fBorigin\fR property +is this snapshot. If the \fBclones\fR property is not empty, then this +snapshot can not be destroyed (even with the \fB-r\fR or \fB-f\fR options). +.RE + +.sp +.ne 2 +.na +\fB\fBdefer_destroy\fR\fR +.ad +.sp .6 +.RS 4n +This property is \fBon\fR if the snapshot has been marked for deferred destroy +by using the \fBzfs destroy\fR \fB-d\fR command. Otherwise, the property is +\fBoff\fR. +.RE + +.sp +.ne 2 +.na +\fB\fBmounted\fR\fR *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@FreeBSD.ORG Sun Jul 1 14:55:36 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9F034106566C; Sun, 1 Jul 2012 14:55:36 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8616E8FC08; Sun, 1 Jul 2012 14:55:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q61EtaOb008224; Sun, 1 Jul 2012 14:55:36 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q61EtapK008220; Sun, 1 Jul 2012 14:55:36 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201207011455.q61EtapK008220@svn.freebsd.org> From: Martin Matuska Date: Sun, 1 Jul 2012 14:55:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237927 - in vendor/illumos/dist: common/acl common/atomic common/atomic/amd64 common/atomic/i386 common/atomic/sparc common/nvpair common/unicode common/zfs uts uts/common uts/common/c... X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Jul 2012 14:55:36 -0000 Author: mm Date: Sun Jul 1 14:55:35 2012 New Revision: 237927 URL: http://svn.freebsd.org/changeset/base/237927 Log: Add kernel part (uts) with ZFS to vendor/illumos illumos-gate revision 13742:b6bbdd77139c Added: vendor/illumos/dist/common/acl/ vendor/illumos/dist/common/acl/acl_common.c vendor/illumos/dist/common/acl/acl_common.h vendor/illumos/dist/common/atomic/ vendor/illumos/dist/common/atomic/amd64/ vendor/illumos/dist/common/atomic/amd64/atomic.s vendor/illumos/dist/common/atomic/i386/ vendor/illumos/dist/common/atomic/i386/atomic.s vendor/illumos/dist/common/atomic/sparc/ vendor/illumos/dist/common/atomic/sparc/atomic.s vendor/illumos/dist/common/nvpair/ vendor/illumos/dist/common/nvpair/fnvpair.c vendor/illumos/dist/common/nvpair/nvpair.c vendor/illumos/dist/common/nvpair/nvpair_alloc_fixed.c vendor/illumos/dist/common/unicode/ vendor/illumos/dist/common/unicode/u8_textprep.c vendor/illumos/dist/common/zfs/ vendor/illumos/dist/common/zfs/zfeature_common.c vendor/illumos/dist/common/zfs/zfeature_common.h vendor/illumos/dist/common/zfs/zfs_comutil.c vendor/illumos/dist/common/zfs/zfs_comutil.h vendor/illumos/dist/common/zfs/zfs_deleg.c vendor/illumos/dist/common/zfs/zfs_deleg.h vendor/illumos/dist/common/zfs/zfs_fletcher.c vendor/illumos/dist/common/zfs/zfs_fletcher.h vendor/illumos/dist/common/zfs/zfs_namecheck.c vendor/illumos/dist/common/zfs/zfs_namecheck.h vendor/illumos/dist/common/zfs/zfs_prop.c vendor/illumos/dist/common/zfs/zfs_prop.h vendor/illumos/dist/common/zfs/zpool_prop.c vendor/illumos/dist/common/zfs/zprop_common.c vendor/illumos/dist/uts/ vendor/illumos/dist/uts/common/ vendor/illumos/dist/uts/common/Makefile.files vendor/illumos/dist/uts/common/ctf/ vendor/illumos/dist/uts/common/ctf/ctf_mod.c vendor/illumos/dist/uts/common/ctf/ctf_subr.c vendor/illumos/dist/uts/common/dtrace/ vendor/illumos/dist/uts/common/dtrace/dcpc.c vendor/illumos/dist/uts/common/dtrace/dtrace.c vendor/illumos/dist/uts/common/dtrace/fasttrap.c vendor/illumos/dist/uts/common/dtrace/lockstat.c vendor/illumos/dist/uts/common/dtrace/profile.c vendor/illumos/dist/uts/common/dtrace/sdt_subr.c vendor/illumos/dist/uts/common/dtrace/systrace.c vendor/illumos/dist/uts/common/fs/ vendor/illumos/dist/uts/common/fs/gfs.c vendor/illumos/dist/uts/common/fs/vnode.c vendor/illumos/dist/uts/common/fs/zfs/ vendor/illumos/dist/uts/common/fs/zfs/arc.c vendor/illumos/dist/uts/common/fs/zfs/bplist.c vendor/illumos/dist/uts/common/fs/zfs/bpobj.c vendor/illumos/dist/uts/common/fs/zfs/bptree.c vendor/illumos/dist/uts/common/fs/zfs/dbuf.c vendor/illumos/dist/uts/common/fs/zfs/ddt.c vendor/illumos/dist/uts/common/fs/zfs/ddt_zap.c vendor/illumos/dist/uts/common/fs/zfs/dmu.c vendor/illumos/dist/uts/common/fs/zfs/dmu_diff.c vendor/illumos/dist/uts/common/fs/zfs/dmu_object.c vendor/illumos/dist/uts/common/fs/zfs/dmu_objset.c vendor/illumos/dist/uts/common/fs/zfs/dmu_send.c vendor/illumos/dist/uts/common/fs/zfs/dmu_traverse.c vendor/illumos/dist/uts/common/fs/zfs/dmu_tx.c vendor/illumos/dist/uts/common/fs/zfs/dmu_zfetch.c vendor/illumos/dist/uts/common/fs/zfs/dnode.c vendor/illumos/dist/uts/common/fs/zfs/dnode_sync.c vendor/illumos/dist/uts/common/fs/zfs/dsl_dataset.c vendor/illumos/dist/uts/common/fs/zfs/dsl_deadlist.c vendor/illumos/dist/uts/common/fs/zfs/dsl_deleg.c vendor/illumos/dist/uts/common/fs/zfs/dsl_dir.c vendor/illumos/dist/uts/common/fs/zfs/dsl_pool.c vendor/illumos/dist/uts/common/fs/zfs/dsl_prop.c vendor/illumos/dist/uts/common/fs/zfs/dsl_scan.c vendor/illumos/dist/uts/common/fs/zfs/dsl_synctask.c vendor/illumos/dist/uts/common/fs/zfs/gzip.c vendor/illumos/dist/uts/common/fs/zfs/lzjb.c vendor/illumos/dist/uts/common/fs/zfs/metaslab.c vendor/illumos/dist/uts/common/fs/zfs/refcount.c vendor/illumos/dist/uts/common/fs/zfs/rrwlock.c vendor/illumos/dist/uts/common/fs/zfs/sa.c vendor/illumos/dist/uts/common/fs/zfs/sha256.c vendor/illumos/dist/uts/common/fs/zfs/spa.c vendor/illumos/dist/uts/common/fs/zfs/spa_config.c vendor/illumos/dist/uts/common/fs/zfs/spa_errlog.c vendor/illumos/dist/uts/common/fs/zfs/spa_history.c vendor/illumos/dist/uts/common/fs/zfs/spa_misc.c vendor/illumos/dist/uts/common/fs/zfs/space_map.c vendor/illumos/dist/uts/common/fs/zfs/sys/ vendor/illumos/dist/uts/common/fs/zfs/sys/arc.h vendor/illumos/dist/uts/common/fs/zfs/sys/bplist.h vendor/illumos/dist/uts/common/fs/zfs/sys/bpobj.h vendor/illumos/dist/uts/common/fs/zfs/sys/bptree.h vendor/illumos/dist/uts/common/fs/zfs/sys/dbuf.h vendor/illumos/dist/uts/common/fs/zfs/sys/ddt.h vendor/illumos/dist/uts/common/fs/zfs/sys/dmu.h vendor/illumos/dist/uts/common/fs/zfs/sys/dmu_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/dmu_objset.h vendor/illumos/dist/uts/common/fs/zfs/sys/dmu_traverse.h vendor/illumos/dist/uts/common/fs/zfs/sys/dmu_tx.h vendor/illumos/dist/uts/common/fs/zfs/sys/dmu_zfetch.h vendor/illumos/dist/uts/common/fs/zfs/sys/dnode.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_dataset.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_deadlist.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_deleg.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_dir.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_pool.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_prop.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_scan.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_synctask.h vendor/illumos/dist/uts/common/fs/zfs/sys/metaslab.h vendor/illumos/dist/uts/common/fs/zfs/sys/metaslab_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/refcount.h vendor/illumos/dist/uts/common/fs/zfs/sys/rrwlock.h vendor/illumos/dist/uts/common/fs/zfs/sys/sa.h vendor/illumos/dist/uts/common/fs/zfs/sys/sa_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/spa.h vendor/illumos/dist/uts/common/fs/zfs/sys/spa_boot.h vendor/illumos/dist/uts/common/fs/zfs/sys/spa_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/space_map.h vendor/illumos/dist/uts/common/fs/zfs/sys/txg.h vendor/illumos/dist/uts/common/fs/zfs/sys/txg_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/uberblock.h vendor/illumos/dist/uts/common/fs/zfs/sys/uberblock_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/unique.h vendor/illumos/dist/uts/common/fs/zfs/sys/vdev.h vendor/illumos/dist/uts/common/fs/zfs/sys/vdev_disk.h vendor/illumos/dist/uts/common/fs/zfs/sys/vdev_file.h vendor/illumos/dist/uts/common/fs/zfs/sys/vdev_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/zap.h vendor/illumos/dist/uts/common/fs/zfs/sys/zap_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/zap_leaf.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfeature.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_acl.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_context.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_ctldir.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_debug.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_dir.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_fuid.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_ioctl.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_onexit.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_rlock.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_sa.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_stat.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_vfsops.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_znode.h vendor/illumos/dist/uts/common/fs/zfs/sys/zil.h vendor/illumos/dist/uts/common/fs/zfs/sys/zil_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/zio.h vendor/illumos/dist/uts/common/fs/zfs/sys/zio_checksum.h vendor/illumos/dist/uts/common/fs/zfs/sys/zio_compress.h vendor/illumos/dist/uts/common/fs/zfs/sys/zio_impl.h vendor/illumos/dist/uts/common/fs/zfs/sys/zrlock.h vendor/illumos/dist/uts/common/fs/zfs/sys/zvol.h vendor/illumos/dist/uts/common/fs/zfs/txg.c vendor/illumos/dist/uts/common/fs/zfs/uberblock.c vendor/illumos/dist/uts/common/fs/zfs/unique.c vendor/illumos/dist/uts/common/fs/zfs/vdev.c vendor/illumos/dist/uts/common/fs/zfs/vdev_cache.c vendor/illumos/dist/uts/common/fs/zfs/vdev_disk.c vendor/illumos/dist/uts/common/fs/zfs/vdev_file.c vendor/illumos/dist/uts/common/fs/zfs/vdev_label.c vendor/illumos/dist/uts/common/fs/zfs/vdev_mirror.c vendor/illumos/dist/uts/common/fs/zfs/vdev_missing.c vendor/illumos/dist/uts/common/fs/zfs/vdev_queue.c vendor/illumos/dist/uts/common/fs/zfs/vdev_raidz.c vendor/illumos/dist/uts/common/fs/zfs/vdev_root.c vendor/illumos/dist/uts/common/fs/zfs/zap.c vendor/illumos/dist/uts/common/fs/zfs/zap_leaf.c vendor/illumos/dist/uts/common/fs/zfs/zap_micro.c vendor/illumos/dist/uts/common/fs/zfs/zfeature.c vendor/illumos/dist/uts/common/fs/zfs/zfs.conf vendor/illumos/dist/uts/common/fs/zfs/zfs_acl.c vendor/illumos/dist/uts/common/fs/zfs/zfs_byteswap.c vendor/illumos/dist/uts/common/fs/zfs/zfs_ctldir.c vendor/illumos/dist/uts/common/fs/zfs/zfs_debug.c vendor/illumos/dist/uts/common/fs/zfs/zfs_dir.c vendor/illumos/dist/uts/common/fs/zfs/zfs_fm.c vendor/illumos/dist/uts/common/fs/zfs/zfs_fuid.c vendor/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c vendor/illumos/dist/uts/common/fs/zfs/zfs_log.c vendor/illumos/dist/uts/common/fs/zfs/zfs_onexit.c vendor/illumos/dist/uts/common/fs/zfs/zfs_replay.c vendor/illumos/dist/uts/common/fs/zfs/zfs_rlock.c vendor/illumos/dist/uts/common/fs/zfs/zfs_sa.c vendor/illumos/dist/uts/common/fs/zfs/zfs_vfsops.c vendor/illumos/dist/uts/common/fs/zfs/zfs_vnops.c vendor/illumos/dist/uts/common/fs/zfs/zfs_znode.c vendor/illumos/dist/uts/common/fs/zfs/zil.c vendor/illumos/dist/uts/common/fs/zfs/zio.c vendor/illumos/dist/uts/common/fs/zfs/zio_checksum.c vendor/illumos/dist/uts/common/fs/zfs/zio_compress.c vendor/illumos/dist/uts/common/fs/zfs/zio_inject.c vendor/illumos/dist/uts/common/fs/zfs/zle.c vendor/illumos/dist/uts/common/fs/zfs/zrlock.c vendor/illumos/dist/uts/common/fs/zfs/zvol.c vendor/illumos/dist/uts/common/os/ vendor/illumos/dist/uts/common/os/callb.c vendor/illumos/dist/uts/common/os/fm.c vendor/illumos/dist/uts/common/os/nvpair_alloc_system.c vendor/illumos/dist/uts/common/sys/ vendor/illumos/dist/uts/common/sys/acl.h vendor/illumos/dist/uts/common/sys/acl_impl.h vendor/illumos/dist/uts/common/sys/avl.h vendor/illumos/dist/uts/common/sys/avl_impl.h vendor/illumos/dist/uts/common/sys/bitmap.h vendor/illumos/dist/uts/common/sys/callb.h vendor/illumos/dist/uts/common/sys/ccompile.h vendor/illumos/dist/uts/common/sys/cmn_err.h vendor/illumos/dist/uts/common/sys/compress.h vendor/illumos/dist/uts/common/sys/cpupart.h vendor/illumos/dist/uts/common/sys/cpuvar.h vendor/illumos/dist/uts/common/sys/cred.h vendor/illumos/dist/uts/common/sys/ctf.h vendor/illumos/dist/uts/common/sys/ctf_api.h vendor/illumos/dist/uts/common/sys/debug.h vendor/illumos/dist/uts/common/sys/dtrace.h vendor/illumos/dist/uts/common/sys/dtrace_impl.h vendor/illumos/dist/uts/common/sys/errorq.h vendor/illumos/dist/uts/common/sys/extdirent.h vendor/illumos/dist/uts/common/sys/fasttrap.h vendor/illumos/dist/uts/common/sys/fasttrap_impl.h vendor/illumos/dist/uts/common/sys/feature_tests.h vendor/illumos/dist/uts/common/sys/fm/ vendor/illumos/dist/uts/common/sys/fm/fs/ vendor/illumos/dist/uts/common/sys/fm/fs/zfs.h vendor/illumos/dist/uts/common/sys/fm/protocol.h vendor/illumos/dist/uts/common/sys/fm/util.h vendor/illumos/dist/uts/common/sys/fs/ vendor/illumos/dist/uts/common/sys/fs/zfs.h vendor/illumos/dist/uts/common/sys/fs/zut.h vendor/illumos/dist/uts/common/sys/gfs.h vendor/illumos/dist/uts/common/sys/idmap.h vendor/illumos/dist/uts/common/sys/isa_defs.h vendor/illumos/dist/uts/common/sys/list.h vendor/illumos/dist/uts/common/sys/list_impl.h vendor/illumos/dist/uts/common/sys/note.h vendor/illumos/dist/uts/common/sys/nvpair.h vendor/illumos/dist/uts/common/sys/nvpair_impl.h vendor/illumos/dist/uts/common/sys/processor.h vendor/illumos/dist/uts/common/sys/procset.h vendor/illumos/dist/uts/common/sys/synch.h vendor/illumos/dist/uts/common/sys/sysevent/ vendor/illumos/dist/uts/common/sys/sysevent.h vendor/illumos/dist/uts/common/sys/sysevent/dev.h vendor/illumos/dist/uts/common/sys/sysevent/eventdefs.h vendor/illumos/dist/uts/common/sys/sysmacros.h vendor/illumos/dist/uts/common/sys/taskq.h vendor/illumos/dist/uts/common/sys/u8_textprep.h vendor/illumos/dist/uts/common/sys/u8_textprep_data.h vendor/illumos/dist/uts/common/sys/vnode.h vendor/illumos/dist/uts/common/sys/zmod.h vendor/illumos/dist/uts/common/zmod/ vendor/illumos/dist/uts/common/zmod/adler32.c vendor/illumos/dist/uts/common/zmod/crc32.h vendor/illumos/dist/uts/common/zmod/deflate.c vendor/illumos/dist/uts/common/zmod/deflate.h vendor/illumos/dist/uts/common/zmod/inffast.c vendor/illumos/dist/uts/common/zmod/inffast.h vendor/illumos/dist/uts/common/zmod/inffixed.h vendor/illumos/dist/uts/common/zmod/inflate.c vendor/illumos/dist/uts/common/zmod/inflate.h vendor/illumos/dist/uts/common/zmod/inftrees.c vendor/illumos/dist/uts/common/zmod/inftrees.h vendor/illumos/dist/uts/common/zmod/trees.c vendor/illumos/dist/uts/common/zmod/zconf.h vendor/illumos/dist/uts/common/zmod/zlib.h vendor/illumos/dist/uts/common/zmod/zmod.c vendor/illumos/dist/uts/common/zmod/zmod_subr.c vendor/illumos/dist/uts/common/zmod/zutil.c vendor/illumos/dist/uts/common/zmod/zutil.h vendor/illumos/dist/uts/intel/ vendor/illumos/dist/uts/intel/dtrace/ vendor/illumos/dist/uts/intel/dtrace/fasttrap_isa.c vendor/illumos/dist/uts/intel/sys/ vendor/illumos/dist/uts/intel/sys/fasttrap_isa.h vendor/illumos/dist/uts/sparc/ vendor/illumos/dist/uts/sparc/dtrace/ vendor/illumos/dist/uts/sparc/dtrace/fasttrap_isa.c vendor/illumos/dist/uts/sparc/sys/ vendor/illumos/dist/uts/sparc/sys/fasttrap_isa.h Added: vendor/illumos/dist/common/acl/acl_common.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/common/acl/acl_common.c Sun Jul 1 14:55:35 2012 (r237927) @@ -0,0 +1,1760 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ + +#include +#include +#include +#if defined(_KERNEL) +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define ASSERT assert +#endif + +#define ACE_POSIX_SUPPORTED_BITS (ACE_READ_DATA | \ + ACE_WRITE_DATA | ACE_APPEND_DATA | ACE_EXECUTE | \ + ACE_READ_ATTRIBUTES | ACE_READ_ACL | ACE_WRITE_ACL) + + +#define ACL_SYNCHRONIZE_SET_DENY 0x0000001 +#define ACL_SYNCHRONIZE_SET_ALLOW 0x0000002 +#define ACL_SYNCHRONIZE_ERR_DENY 0x0000004 +#define ACL_SYNCHRONIZE_ERR_ALLOW 0x0000008 + +#define ACL_WRITE_OWNER_SET_DENY 0x0000010 +#define ACL_WRITE_OWNER_SET_ALLOW 0x0000020 +#define ACL_WRITE_OWNER_ERR_DENY 0x0000040 +#define ACL_WRITE_OWNER_ERR_ALLOW 0x0000080 + +#define ACL_DELETE_SET_DENY 0x0000100 +#define ACL_DELETE_SET_ALLOW 0x0000200 +#define ACL_DELETE_ERR_DENY 0x0000400 +#define ACL_DELETE_ERR_ALLOW 0x0000800 + +#define ACL_WRITE_ATTRS_OWNER_SET_DENY 0x0001000 +#define ACL_WRITE_ATTRS_OWNER_SET_ALLOW 0x0002000 +#define ACL_WRITE_ATTRS_OWNER_ERR_DENY 0x0004000 +#define ACL_WRITE_ATTRS_OWNER_ERR_ALLOW 0x0008000 + +#define ACL_WRITE_ATTRS_WRITER_SET_DENY 0x0010000 +#define ACL_WRITE_ATTRS_WRITER_SET_ALLOW 0x0020000 +#define ACL_WRITE_ATTRS_WRITER_ERR_DENY 0x0040000 +#define ACL_WRITE_ATTRS_WRITER_ERR_ALLOW 0x0080000 + +#define ACL_WRITE_NAMED_WRITER_SET_DENY 0x0100000 +#define ACL_WRITE_NAMED_WRITER_SET_ALLOW 0x0200000 +#define ACL_WRITE_NAMED_WRITER_ERR_DENY 0x0400000 +#define ACL_WRITE_NAMED_WRITER_ERR_ALLOW 0x0800000 + +#define ACL_READ_NAMED_READER_SET_DENY 0x1000000 +#define ACL_READ_NAMED_READER_SET_ALLOW 0x2000000 +#define ACL_READ_NAMED_READER_ERR_DENY 0x4000000 +#define ACL_READ_NAMED_READER_ERR_ALLOW 0x8000000 + + +#define ACE_VALID_MASK_BITS (\ + ACE_READ_DATA | \ + ACE_LIST_DIRECTORY | \ + ACE_WRITE_DATA | \ + ACE_ADD_FILE | \ + ACE_APPEND_DATA | \ + ACE_ADD_SUBDIRECTORY | \ + ACE_READ_NAMED_ATTRS | \ + ACE_WRITE_NAMED_ATTRS | \ + ACE_EXECUTE | \ + ACE_DELETE_CHILD | \ + ACE_READ_ATTRIBUTES | \ + ACE_WRITE_ATTRIBUTES | \ + ACE_DELETE | \ + ACE_READ_ACL | \ + ACE_WRITE_ACL | \ + ACE_WRITE_OWNER | \ + ACE_SYNCHRONIZE) + +#define ACE_MASK_UNDEFINED 0x80000000 + +#define ACE_VALID_FLAG_BITS (ACE_FILE_INHERIT_ACE | \ + ACE_DIRECTORY_INHERIT_ACE | \ + ACE_NO_PROPAGATE_INHERIT_ACE | ACE_INHERIT_ONLY_ACE | \ + ACE_SUCCESSFUL_ACCESS_ACE_FLAG | ACE_FAILED_ACCESS_ACE_FLAG | \ + ACE_IDENTIFIER_GROUP | ACE_OWNER | ACE_GROUP | ACE_EVERYONE) + +/* + * ACL conversion helpers + */ + +typedef enum { + ace_unused, + ace_user_obj, + ace_user, + ace_group, /* includes GROUP and GROUP_OBJ */ + ace_other_obj +} ace_to_aent_state_t; + +typedef struct acevals { + uid_t key; + avl_node_t avl; + uint32_t mask; + uint32_t allowed; + uint32_t denied; + int aent_type; +} acevals_t; + +typedef struct ace_list { + acevals_t user_obj; + avl_tree_t user; + int numusers; + acevals_t group_obj; + avl_tree_t group; + int numgroups; + acevals_t other_obj; + uint32_t acl_mask; + int hasmask; + int dfacl_flag; + ace_to_aent_state_t state; + int seen; /* bitmask of all aclent_t a_type values seen */ +} ace_list_t; + +/* + * Generic shellsort, from K&R (1st ed, p 58.), somewhat modified. + * v = Ptr to array/vector of objs + * n = # objs in the array + * s = size of each obj (must be multiples of a word size) + * f = ptr to function to compare two objs + * returns (-1 = less than, 0 = equal, 1 = greater than + */ +void +ksort(caddr_t v, int n, int s, int (*f)()) +{ + int g, i, j, ii; + unsigned int *p1, *p2; + unsigned int tmp; + + /* No work to do */ + if (v == NULL || n <= 1) + return; + + /* Sanity check on arguments */ + ASSERT(((uintptr_t)v & 0x3) == 0 && (s & 0x3) == 0); + ASSERT(s > 0); + for (g = n / 2; g > 0; g /= 2) { + for (i = g; i < n; i++) { + for (j = i - g; j >= 0 && + (*f)(v + j * s, v + (j + g) * s) == 1; + j -= g) { + p1 = (void *)(v + j * s); + p2 = (void *)(v + (j + g) * s); + for (ii = 0; ii < s / 4; ii++) { + tmp = *p1; + *p1++ = *p2; + *p2++ = tmp; + } + } + } + } +} + +/* + * Compare two acls, all fields. Returns: + * -1 (less than) + * 0 (equal) + * +1 (greater than) + */ +int +cmp2acls(void *a, void *b) +{ + aclent_t *x = (aclent_t *)a; + aclent_t *y = (aclent_t *)b; + + /* Compare types */ + if (x->a_type < y->a_type) + return (-1); + if (x->a_type > y->a_type) + return (1); + /* Equal types; compare id's */ + if (x->a_id < y->a_id) + return (-1); + if (x->a_id > y->a_id) + return (1); + /* Equal ids; compare perms */ + if (x->a_perm < y->a_perm) + return (-1); + if (x->a_perm > y->a_perm) + return (1); + /* Totally equal */ + return (0); +} + +/*ARGSUSED*/ +static void * +cacl_realloc(void *ptr, size_t size, size_t new_size) +{ +#if defined(_KERNEL) + void *tmp; + + tmp = kmem_alloc(new_size, KM_SLEEP); + (void) memcpy(tmp, ptr, (size < new_size) ? size : new_size); + kmem_free(ptr, size); + return (tmp); +#else + return (realloc(ptr, new_size)); +#endif +} + +static int +cacl_malloc(void **ptr, size_t size) +{ +#if defined(_KERNEL) + *ptr = kmem_zalloc(size, KM_SLEEP); + return (0); +#else + *ptr = calloc(1, size); + if (*ptr == NULL) + return (errno); + + return (0); +#endif +} + +/*ARGSUSED*/ +static void +cacl_free(void *ptr, size_t size) +{ +#if defined(_KERNEL) + kmem_free(ptr, size); +#else + free(ptr); +#endif +} + +acl_t * +acl_alloc(enum acl_type type) +{ + acl_t *aclp; + + if (cacl_malloc((void **)&aclp, sizeof (acl_t)) != 0) + return (NULL); + + aclp->acl_aclp = NULL; + aclp->acl_cnt = 0; + + switch (type) { + case ACE_T: + aclp->acl_type = ACE_T; + aclp->acl_entry_size = sizeof (ace_t); + break; + case ACLENT_T: + aclp->acl_type = ACLENT_T; + aclp->acl_entry_size = sizeof (aclent_t); + break; + default: + acl_free(aclp); + aclp = NULL; + } + return (aclp); +} + +/* + * Free acl_t structure + */ +void +acl_free(acl_t *aclp) +{ + int acl_size; + + if (aclp == NULL) + return; + + if (aclp->acl_aclp) { + acl_size = aclp->acl_cnt * aclp->acl_entry_size; + cacl_free(aclp->acl_aclp, acl_size); + } + + cacl_free(aclp, sizeof (acl_t)); +} + +static uint32_t +access_mask_set(int haswriteperm, int hasreadperm, int isowner, int isallow) +{ + uint32_t access_mask = 0; + int acl_produce; + int synchronize_set = 0, write_owner_set = 0; + int delete_set = 0, write_attrs_set = 0; + int read_named_set = 0, write_named_set = 0; + + acl_produce = (ACL_SYNCHRONIZE_SET_ALLOW | + ACL_WRITE_ATTRS_OWNER_SET_ALLOW | + ACL_WRITE_ATTRS_WRITER_SET_DENY); + + if (isallow) { + synchronize_set = ACL_SYNCHRONIZE_SET_ALLOW; + write_owner_set = ACL_WRITE_OWNER_SET_ALLOW; + delete_set = ACL_DELETE_SET_ALLOW; + if (hasreadperm) + read_named_set = ACL_READ_NAMED_READER_SET_ALLOW; + if (haswriteperm) + write_named_set = ACL_WRITE_NAMED_WRITER_SET_ALLOW; + if (isowner) + write_attrs_set = ACL_WRITE_ATTRS_OWNER_SET_ALLOW; + else if (haswriteperm) + write_attrs_set = ACL_WRITE_ATTRS_WRITER_SET_ALLOW; + } else { + + synchronize_set = ACL_SYNCHRONIZE_SET_DENY; + write_owner_set = ACL_WRITE_OWNER_SET_DENY; + delete_set = ACL_DELETE_SET_DENY; + if (hasreadperm) + read_named_set = ACL_READ_NAMED_READER_SET_DENY; + if (haswriteperm) + write_named_set = ACL_WRITE_NAMED_WRITER_SET_DENY; + if (isowner) + write_attrs_set = ACL_WRITE_ATTRS_OWNER_SET_DENY; + else if (haswriteperm) + write_attrs_set = ACL_WRITE_ATTRS_WRITER_SET_DENY; + else + /* + * If the entity is not the owner and does not + * have write permissions ACE_WRITE_ATTRIBUTES will + * always go in the DENY ACE. + */ + access_mask |= ACE_WRITE_ATTRIBUTES; + } + + if (acl_produce & synchronize_set) + access_mask |= ACE_SYNCHRONIZE; + if (acl_produce & write_owner_set) + access_mask |= ACE_WRITE_OWNER; + if (acl_produce & delete_set) + access_mask |= ACE_DELETE; + if (acl_produce & write_attrs_set) + access_mask |= ACE_WRITE_ATTRIBUTES; + if (acl_produce & read_named_set) + access_mask |= ACE_READ_NAMED_ATTRS; + if (acl_produce & write_named_set) + access_mask |= ACE_WRITE_NAMED_ATTRS; + + return (access_mask); +} + +/* + * Given an mode_t, convert it into an access_mask as used + * by nfsace, assuming aclent_t -> nfsace semantics. + */ +static uint32_t +mode_to_ace_access(mode_t mode, boolean_t isdir, int isowner, int isallow) +{ + uint32_t access = 0; + int haswriteperm = 0; + int hasreadperm = 0; + + if (isallow) { + haswriteperm = (mode & S_IWOTH); + hasreadperm = (mode & S_IROTH); + } else { + haswriteperm = !(mode & S_IWOTH); + hasreadperm = !(mode & S_IROTH); + } + + /* + * The following call takes care of correctly setting the following + * mask bits in the access_mask: + * ACE_SYNCHRONIZE, ACE_WRITE_OWNER, ACE_DELETE, + * ACE_WRITE_ATTRIBUTES, ACE_WRITE_NAMED_ATTRS, ACE_READ_NAMED_ATTRS + */ + access = access_mask_set(haswriteperm, hasreadperm, isowner, isallow); + + if (isallow) { + access |= ACE_READ_ACL | ACE_READ_ATTRIBUTES; + if (isowner) + access |= ACE_WRITE_ACL; + } else { + if (! isowner) + access |= ACE_WRITE_ACL; + } + + /* read */ + if (mode & S_IROTH) { + access |= ACE_READ_DATA; + } + /* write */ + if (mode & S_IWOTH) { + access |= ACE_WRITE_DATA | + ACE_APPEND_DATA; + if (isdir) + access |= ACE_DELETE_CHILD; + } + /* exec */ + if (mode & S_IXOTH) { + access |= ACE_EXECUTE; + } + + return (access); +} + +/* + * Given an nfsace (presumably an ALLOW entry), make a + * corresponding DENY entry at the address given. + */ +static void +ace_make_deny(ace_t *allow, ace_t *deny, int isdir, int isowner) +{ + (void) memcpy(deny, allow, sizeof (ace_t)); + + deny->a_who = allow->a_who; + + deny->a_type = ACE_ACCESS_DENIED_ACE_TYPE; + deny->a_access_mask ^= ACE_POSIX_SUPPORTED_BITS; + if (isdir) + deny->a_access_mask ^= ACE_DELETE_CHILD; + + deny->a_access_mask &= ~(ACE_SYNCHRONIZE | ACE_WRITE_OWNER | + ACE_DELETE | ACE_WRITE_ATTRIBUTES | ACE_READ_NAMED_ATTRS | + ACE_WRITE_NAMED_ATTRS); + deny->a_access_mask |= access_mask_set((allow->a_access_mask & + ACE_WRITE_DATA), (allow->a_access_mask & ACE_READ_DATA), isowner, + B_FALSE); +} +/* + * Make an initial pass over an array of aclent_t's. Gather + * information such as an ACL_MASK (if any), number of users, + * number of groups, and whether the array needs to be sorted. + */ +static int +ln_aent_preprocess(aclent_t *aclent, int n, + int *hasmask, mode_t *mask, + int *numuser, int *numgroup, int *needsort) +{ + int error = 0; + int i; + int curtype = 0; + + *hasmask = 0; + *mask = 07; + *needsort = 0; + *numuser = 0; + *numgroup = 0; + + for (i = 0; i < n; i++) { + if (aclent[i].a_type < curtype) + *needsort = 1; + else if (aclent[i].a_type > curtype) + curtype = aclent[i].a_type; + if (aclent[i].a_type & USER) + (*numuser)++; + if (aclent[i].a_type & (GROUP | GROUP_OBJ)) + (*numgroup)++; + if (aclent[i].a_type & CLASS_OBJ) { + if (*hasmask) { + error = EINVAL; + goto out; + } else { + *hasmask = 1; + *mask = aclent[i].a_perm; + } + } + } + + if ((! *hasmask) && (*numuser + *numgroup > 1)) { + error = EINVAL; + goto out; + } + +out: + return (error); +} + +/* + * Convert an array of aclent_t into an array of nfsace entries, + * following POSIX draft -> nfsv4 conversion semantics as outlined in + * the IETF draft. + */ +static int +ln_aent_to_ace(aclent_t *aclent, int n, ace_t **acepp, int *rescount, int isdir) +{ + int error = 0; + mode_t mask; + int numuser, numgroup, needsort; + int resultsize = 0; + int i, groupi = 0, skip; + ace_t *acep, *result = NULL; + int hasmask; + + error = ln_aent_preprocess(aclent, n, &hasmask, &mask, + &numuser, &numgroup, &needsort); + if (error != 0) + goto out; + + /* allow + deny for each aclent */ + resultsize = n * 2; + if (hasmask) { + /* + * stick extra deny on the group_obj and on each + * user|group for the mask (the group_obj was added + * into the count for numgroup) + */ + resultsize += numuser + numgroup; + /* ... and don't count the mask itself */ + resultsize -= 2; + } + + /* sort the source if necessary */ + if (needsort) + ksort((caddr_t)aclent, n, sizeof (aclent_t), cmp2acls); + + if (cacl_malloc((void **)&result, resultsize * sizeof (ace_t)) != 0) + goto out; + + acep = result; + + for (i = 0; i < n; i++) { + /* + * don't process CLASS_OBJ (mask); mask was grabbed in + * ln_aent_preprocess() + */ + if (aclent[i].a_type & CLASS_OBJ) + continue; + + /* If we need an ACL_MASK emulator, prepend it now */ + if ((hasmask) && + (aclent[i].a_type & (USER | GROUP | GROUP_OBJ))) { + acep->a_type = ACE_ACCESS_DENIED_ACE_TYPE; + acep->a_flags = 0; + if (aclent[i].a_type & GROUP_OBJ) { + acep->a_who = (uid_t)-1; + acep->a_flags |= + (ACE_IDENTIFIER_GROUP|ACE_GROUP); + } else if (aclent[i].a_type & USER) { + acep->a_who = aclent[i].a_id; + } else { + acep->a_who = aclent[i].a_id; + acep->a_flags |= ACE_IDENTIFIER_GROUP; + } + if (aclent[i].a_type & ACL_DEFAULT) { + acep->a_flags |= ACE_INHERIT_ONLY_ACE | + ACE_FILE_INHERIT_ACE | + ACE_DIRECTORY_INHERIT_ACE; + } + /* + * Set the access mask for the prepended deny + * ace. To do this, we invert the mask (found + * in ln_aent_preprocess()) then convert it to an + * DENY ace access_mask. + */ + acep->a_access_mask = mode_to_ace_access((mask ^ 07), + isdir, 0, 0); + acep += 1; + } + + /* handle a_perm -> access_mask */ + acep->a_access_mask = mode_to_ace_access(aclent[i].a_perm, + isdir, aclent[i].a_type & USER_OBJ, 1); + + /* emulate a default aclent */ + if (aclent[i].a_type & ACL_DEFAULT) { + acep->a_flags |= ACE_INHERIT_ONLY_ACE | + ACE_FILE_INHERIT_ACE | + ACE_DIRECTORY_INHERIT_ACE; + } + + /* + * handle a_perm and a_id + * + * this must be done last, since it involves the + * corresponding deny aces, which are handled + * differently for each different a_type. + */ + if (aclent[i].a_type & USER_OBJ) { + acep->a_who = (uid_t)-1; + acep->a_flags |= ACE_OWNER; + ace_make_deny(acep, acep + 1, isdir, B_TRUE); + acep += 2; + } else if (aclent[i].a_type & USER) { + acep->a_who = aclent[i].a_id; + ace_make_deny(acep, acep + 1, isdir, B_FALSE); + acep += 2; + } else if (aclent[i].a_type & (GROUP_OBJ | GROUP)) { + if (aclent[i].a_type & GROUP_OBJ) { + acep->a_who = (uid_t)-1; + acep->a_flags |= ACE_GROUP; + } else { + acep->a_who = aclent[i].a_id; + } + acep->a_flags |= ACE_IDENTIFIER_GROUP; + /* + * Set the corresponding deny for the group ace. + * + * The deny aces go after all of the groups, unlike + * everything else, where they immediately follow + * the allow ace. + * + * We calculate "skip", the number of slots to + * skip ahead for the deny ace, here. + * + * The pattern is: + * MD1 A1 MD2 A2 MD3 A3 D1 D2 D3 + * thus, skip is + * (2 * numgroup) - 1 - groupi + * (2 * numgroup) to account for MD + A + * - 1 to account for the fact that we're on the + * access (A), not the mask (MD) + * - groupi to account for the fact that we have + * passed up groupi number of MD's. + */ + skip = (2 * numgroup) - 1 - groupi; + ace_make_deny(acep, acep + skip, isdir, B_FALSE); + /* + * If we just did the last group, skip acep past + * all of the denies; else, just move ahead one. + */ + if (++groupi >= numgroup) + acep += numgroup + 1; + else + acep += 1; + } else if (aclent[i].a_type & OTHER_OBJ) { + acep->a_who = (uid_t)-1; + acep->a_flags |= ACE_EVERYONE; + ace_make_deny(acep, acep + 1, isdir, B_FALSE); + acep += 2; + } else { + error = EINVAL; + goto out; + } + } + + *acepp = result; + *rescount = resultsize; + +out: + if (error != 0) { + if ((result != NULL) && (resultsize > 0)) { + cacl_free(result, resultsize * sizeof (ace_t)); + } + } + + return (error); +} + +static int +convert_aent_to_ace(aclent_t *aclentp, int aclcnt, boolean_t isdir, + ace_t **retacep, int *retacecnt) +{ + ace_t *acep; + ace_t *dfacep; + int acecnt = 0; + int dfacecnt = 0; + int dfaclstart = 0; + int dfaclcnt = 0; + aclent_t *aclp; + int i; + int error; + int acesz, dfacesz; + + ksort((caddr_t)aclentp, aclcnt, sizeof (aclent_t), cmp2acls); + + for (i = 0, aclp = aclentp; i < aclcnt; aclp++, i++) { + if (aclp->a_type & ACL_DEFAULT) + break; + } + + if (i < aclcnt) { + dfaclstart = i; + dfaclcnt = aclcnt - i; + } + + if (dfaclcnt && !isdir) { + return (EINVAL); + } + + error = ln_aent_to_ace(aclentp, i, &acep, &acecnt, isdir); + if (error) + return (error); + + if (dfaclcnt) { + error = ln_aent_to_ace(&aclentp[dfaclstart], dfaclcnt, + &dfacep, &dfacecnt, isdir); + if (error) { + if (acep) { + cacl_free(acep, acecnt * sizeof (ace_t)); + } + return (error); + } + } + + if (dfacecnt != 0) { + acesz = sizeof (ace_t) * acecnt; + dfacesz = sizeof (ace_t) * dfacecnt; + acep = cacl_realloc(acep, acesz, acesz + dfacesz); + if (acep == NULL) + return (ENOMEM); + if (dfaclcnt) { + (void) memcpy(acep + acecnt, dfacep, dfacesz); + } + } + if (dfaclcnt) + cacl_free(dfacep, dfacecnt * sizeof (ace_t)); + + *retacecnt = acecnt + dfacecnt; + *retacep = acep; + return (0); +} + +static int +ace_mask_to_mode(uint32_t mask, o_mode_t *modep, boolean_t isdir) +{ + int error = 0; + o_mode_t mode = 0; + uint32_t bits, wantbits; + + /* read */ + if (mask & ACE_READ_DATA) + mode |= S_IROTH; + + /* write */ + wantbits = (ACE_WRITE_DATA | ACE_APPEND_DATA); + if (isdir) + wantbits |= ACE_DELETE_CHILD; + bits = mask & wantbits; + if (bits != 0) { + if (bits != wantbits) { + error = ENOTSUP; + goto out; + } + mode |= S_IWOTH; + } + + /* exec */ + if (mask & ACE_EXECUTE) { + mode |= S_IXOTH; + } + + *modep = mode; + +out: + return (error); +} + +static void +acevals_init(acevals_t *vals, uid_t key) +{ + bzero(vals, sizeof (*vals)); + vals->allowed = ACE_MASK_UNDEFINED; + vals->denied = ACE_MASK_UNDEFINED; + vals->mask = ACE_MASK_UNDEFINED; + vals->key = key; +} + +static void +ace_list_init(ace_list_t *al, int dfacl_flag) +{ + acevals_init(&al->user_obj, NULL); + acevals_init(&al->group_obj, NULL); + acevals_init(&al->other_obj, NULL); + al->numusers = 0; + al->numgroups = 0; + al->acl_mask = 0; + al->hasmask = 0; + al->state = ace_unused; + al->seen = 0; + al->dfacl_flag = dfacl_flag; +} + +/* + * Find or create an acevals holder for a given id and avl tree. + * + * Note that only one thread will ever touch these avl trees, so + * there is no need for locking. + */ +static acevals_t * +acevals_find(ace_t *ace, avl_tree_t *avl, int *num) +{ + acevals_t key, *rc; + avl_index_t where; + + key.key = ace->a_who; + rc = avl_find(avl, &key, &where); + if (rc != NULL) + return (rc); + + /* this memory is freed by ln_ace_to_aent()->ace_list_free() */ + if (cacl_malloc((void **)&rc, sizeof (acevals_t)) != 0) + return (NULL); + + acevals_init(rc, ace->a_who); + avl_insert(avl, rc, where); + (*num)++; + + return (rc); +} + +static int +access_mask_check(ace_t *acep, int mask_bit, int isowner) +{ + int set_deny, err_deny; + int set_allow, err_allow; + int acl_consume; + int haswriteperm, hasreadperm; + + if (acep->a_type == ACE_ACCESS_DENIED_ACE_TYPE) { + haswriteperm = (acep->a_access_mask & ACE_WRITE_DATA) ? 0 : 1; + hasreadperm = (acep->a_access_mask & ACE_READ_DATA) ? 0 : 1; + } else { + haswriteperm = (acep->a_access_mask & ACE_WRITE_DATA) ? 1 : 0; + hasreadperm = (acep->a_access_mask & ACE_READ_DATA) ? 1 : 0; + } + + acl_consume = (ACL_SYNCHRONIZE_ERR_DENY | + ACL_DELETE_ERR_DENY | + ACL_WRITE_OWNER_ERR_DENY | + ACL_WRITE_OWNER_ERR_ALLOW | + ACL_WRITE_ATTRS_OWNER_SET_ALLOW | + ACL_WRITE_ATTRS_OWNER_ERR_DENY | + ACL_WRITE_ATTRS_WRITER_SET_DENY | + ACL_WRITE_ATTRS_WRITER_ERR_ALLOW | + ACL_WRITE_NAMED_WRITER_ERR_DENY | + ACL_READ_NAMED_READER_ERR_DENY); + + if (mask_bit == ACE_SYNCHRONIZE) { + set_deny = ACL_SYNCHRONIZE_SET_DENY; + err_deny = ACL_SYNCHRONIZE_ERR_DENY; + set_allow = ACL_SYNCHRONIZE_SET_ALLOW; + err_allow = ACL_SYNCHRONIZE_ERR_ALLOW; + } else if (mask_bit == ACE_WRITE_OWNER) { + set_deny = ACL_WRITE_OWNER_SET_DENY; + err_deny = ACL_WRITE_OWNER_ERR_DENY; + set_allow = ACL_WRITE_OWNER_SET_ALLOW; + err_allow = ACL_WRITE_OWNER_ERR_ALLOW; + } else if (mask_bit == ACE_DELETE) { + set_deny = ACL_DELETE_SET_DENY; + err_deny = ACL_DELETE_ERR_DENY; + set_allow = ACL_DELETE_SET_ALLOW; + err_allow = ACL_DELETE_ERR_ALLOW; + } else if (mask_bit == ACE_WRITE_ATTRIBUTES) { + if (isowner) { + set_deny = ACL_WRITE_ATTRS_OWNER_SET_DENY; + err_deny = ACL_WRITE_ATTRS_OWNER_ERR_DENY; + set_allow = ACL_WRITE_ATTRS_OWNER_SET_ALLOW; + err_allow = ACL_WRITE_ATTRS_OWNER_ERR_ALLOW; + } else if (haswriteperm) { + set_deny = ACL_WRITE_ATTRS_WRITER_SET_DENY; + err_deny = ACL_WRITE_ATTRS_WRITER_ERR_DENY; + set_allow = ACL_WRITE_ATTRS_WRITER_SET_ALLOW; + err_allow = ACL_WRITE_ATTRS_WRITER_ERR_ALLOW; + } else { + if ((acep->a_access_mask & mask_bit) && + (acep->a_type & ACE_ACCESS_ALLOWED_ACE_TYPE)) { + return (ENOTSUP); + } + return (0); + } + } else if (mask_bit == ACE_READ_NAMED_ATTRS) { + if (!hasreadperm) + return (0); + + set_deny = ACL_READ_NAMED_READER_SET_DENY; + err_deny = ACL_READ_NAMED_READER_ERR_DENY; + set_allow = ACL_READ_NAMED_READER_SET_ALLOW; + err_allow = ACL_READ_NAMED_READER_ERR_ALLOW; + } else if (mask_bit == ACE_WRITE_NAMED_ATTRS) { + if (!haswriteperm) + return (0); + + set_deny = ACL_WRITE_NAMED_WRITER_SET_DENY; + err_deny = ACL_WRITE_NAMED_WRITER_ERR_DENY; + set_allow = ACL_WRITE_NAMED_WRITER_SET_ALLOW; + err_allow = ACL_WRITE_NAMED_WRITER_ERR_ALLOW; + } else { + return (EINVAL); + } + + if (acep->a_type == ACE_ACCESS_DENIED_ACE_TYPE) { + if (acl_consume & set_deny) { + if (!(acep->a_access_mask & mask_bit)) { + return (ENOTSUP); + } + } else if (acl_consume & err_deny) { + if (acep->a_access_mask & mask_bit) { + return (ENOTSUP); + } + } + } else { + /* ACE_ACCESS_ALLOWED_ACE_TYPE */ + if (acl_consume & set_allow) { + if (!(acep->a_access_mask & mask_bit)) { + return (ENOTSUP); + } + } else if (acl_consume & err_allow) { + if (acep->a_access_mask & mask_bit) { + return (ENOTSUP); + } + } + } + return (0); +} + +static int +ace_to_aent_legal(ace_t *acep) +{ + int error = 0; + int isowner; + + /* only ALLOW or DENY */ + if ((acep->a_type != ACE_ACCESS_ALLOWED_ACE_TYPE) && + (acep->a_type != ACE_ACCESS_DENIED_ACE_TYPE)) { + error = ENOTSUP; + goto out; + } + + /* check for invalid flags */ + if (acep->a_flags & ~(ACE_VALID_FLAG_BITS)) { + error = EINVAL; + goto out; + } + + /* some flags are illegal */ + if (acep->a_flags & (ACE_SUCCESSFUL_ACCESS_ACE_FLAG | + ACE_FAILED_ACCESS_ACE_FLAG | + ACE_NO_PROPAGATE_INHERIT_ACE)) { + error = ENOTSUP; + goto out; + } + + /* check for invalid masks */ + if (acep->a_access_mask & ~(ACE_VALID_MASK_BITS)) { + error = EINVAL; + goto out; + } + + if ((acep->a_flags & ACE_OWNER)) { + isowner = 1; + } else { + isowner = 0; + } + + error = access_mask_check(acep, ACE_SYNCHRONIZE, isowner); + if (error) + goto out; + + error = access_mask_check(acep, ACE_WRITE_OWNER, isowner); + if (error) + goto out; + + error = access_mask_check(acep, ACE_DELETE, isowner); + if (error) + goto out; + + error = access_mask_check(acep, ACE_WRITE_ATTRIBUTES, isowner); + if (error) + goto out; + + error = access_mask_check(acep, ACE_READ_NAMED_ATTRS, isowner); + if (error) + goto out; + + error = access_mask_check(acep, ACE_WRITE_NAMED_ATTRS, isowner); + if (error) + goto out; + + /* more detailed checking of masks */ + if (acep->a_type == ACE_ACCESS_ALLOWED_ACE_TYPE) { + if (! (acep->a_access_mask & ACE_READ_ATTRIBUTES)) { + error = ENOTSUP; + goto out; + } + if ((acep->a_access_mask & ACE_WRITE_DATA) && + (! (acep->a_access_mask & ACE_APPEND_DATA))) { + error = ENOTSUP; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@FreeBSD.ORG Mon Jul 2 07:50:16 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C11F6106566B; Mon, 2 Jul 2012 07:50:16 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A9A9E8FC14; Mon, 2 Jul 2012 07:50:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q627oGoP056064; Mon, 2 Jul 2012 07:50:16 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q627oGjc056052; Mon, 2 Jul 2012 07:50:16 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201207020750.q627oGjc056052@svn.freebsd.org> From: Martin Matuska Date: Mon, 2 Jul 2012 07:50:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237976 - in vendor/illumos/dist: cmd/zdb cmd/zfs cmd/zhack cmd/zpool cmd/ztest common/zfs lib/libzfs/common lib/libzfs_core lib/libzfs_core/common lib/libzpool/common lib/libzpool/comm... X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Jul 2012 07:50:16 -0000 Author: mm Date: Mon Jul 2 07:50:15 2012 New Revision: 237976 URL: http://svn.freebsd.org/changeset/base/237976 Log: Update vendor/illumos/dist to illumos-gate revision 13743:95aba6e49b9f Obtained from: illumos Added: vendor/illumos/dist/lib/libzfs_core/ vendor/illumos/dist/lib/libzfs_core/common/ vendor/illumos/dist/lib/libzfs_core/common/libzfs_core.c vendor/illumos/dist/lib/libzfs_core/common/libzfs_core.h Modified: vendor/illumos/dist/cmd/zdb/zdb.c vendor/illumos/dist/cmd/zfs/zfs_main.c vendor/illumos/dist/cmd/zhack/zhack.c vendor/illumos/dist/cmd/zpool/zpool_main.c vendor/illumos/dist/cmd/ztest/ztest.c vendor/illumos/dist/common/zfs/zfs_comutil.c vendor/illumos/dist/common/zfs/zfs_comutil.h vendor/illumos/dist/common/zfs/zprop_common.c vendor/illumos/dist/lib/libzfs/common/libzfs.h vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c vendor/illumos/dist/lib/libzfs/common/libzfs_impl.h vendor/illumos/dist/lib/libzfs/common/libzfs_iter.c vendor/illumos/dist/lib/libzfs/common/libzfs_pool.c vendor/illumos/dist/lib/libzfs/common/libzfs_util.c vendor/illumos/dist/lib/libzpool/common/kernel.c vendor/illumos/dist/lib/libzpool/common/sys/zfs_context.h vendor/illumos/dist/man/man1m/zfs.1m vendor/illumos/dist/uts/common/fs/zfs/dmu_objset.c vendor/illumos/dist/uts/common/fs/zfs/dmu_send.c vendor/illumos/dist/uts/common/fs/zfs/dmu_tx.c vendor/illumos/dist/uts/common/fs/zfs/dsl_dataset.c vendor/illumos/dist/uts/common/fs/zfs/dsl_deleg.c vendor/illumos/dist/uts/common/fs/zfs/dsl_dir.c vendor/illumos/dist/uts/common/fs/zfs/dsl_prop.c vendor/illumos/dist/uts/common/fs/zfs/dsl_scan.c vendor/illumos/dist/uts/common/fs/zfs/dsl_synctask.c vendor/illumos/dist/uts/common/fs/zfs/rrwlock.c vendor/illumos/dist/uts/common/fs/zfs/spa.c vendor/illumos/dist/uts/common/fs/zfs/spa_history.c vendor/illumos/dist/uts/common/fs/zfs/sys/dmu.h vendor/illumos/dist/uts/common/fs/zfs/sys/dmu_objset.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_dataset.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_deleg.h vendor/illumos/dist/uts/common/fs/zfs/sys/dsl_prop.h vendor/illumos/dist/uts/common/fs/zfs/sys/rrwlock.h vendor/illumos/dist/uts/common/fs/zfs/sys/spa.h vendor/illumos/dist/uts/common/fs/zfs/sys/zfs_ioctl.h vendor/illumos/dist/uts/common/fs/zfs/zfs_ctldir.c vendor/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c vendor/illumos/dist/uts/common/fs/zfs/zfs_vfsops.c vendor/illumos/dist/uts/common/fs/zfs/zvol.c vendor/illumos/dist/uts/common/sys/fs/zfs.h Modified: vendor/illumos/dist/cmd/zdb/zdb.c ============================================================================== --- vendor/illumos/dist/cmd/zdb/zdb.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/cmd/zdb/zdb.c Mon Jul 2 07:50:15 2012 (r237976) @@ -57,6 +57,7 @@ #include #include #include +#include #undef ZFS_MAXNAMELEN #undef verify #include @@ -204,6 +205,27 @@ dump_packed_nvlist(objset_t *os, uint64_ nvlist_free(nv); } +/* ARGSUSED */ +static void +dump_history_offsets(objset_t *os, uint64_t object, void *data, size_t size) +{ + spa_history_phys_t *shp = data; + + if (shp == NULL) + return; + + (void) printf("\t\tpool_create_len = %llu\n", + (u_longlong_t)shp->sh_pool_create_len); + (void) printf("\t\tphys_max_off = %llu\n", + (u_longlong_t)shp->sh_phys_max_off); + (void) printf("\t\tbof = %llu\n", + (u_longlong_t)shp->sh_bof); + (void) printf("\t\teof = %llu\n", + (u_longlong_t)shp->sh_eof); + (void) printf("\t\trecords_lost = %llu\n", + (u_longlong_t)shp->sh_records_lost); +} + static void zdb_nicenum(uint64_t num, char *buf) { @@ -853,21 +875,22 @@ dump_history(spa_t *spa) for (int i = 0; i < num; i++) { uint64_t time, txg, ievent; char *cmd, *intstr; + boolean_t printed = B_FALSE; if (nvlist_lookup_uint64(events[i], ZPOOL_HIST_TIME, &time) != 0) - continue; + goto next; if (nvlist_lookup_string(events[i], ZPOOL_HIST_CMD, &cmd) != 0) { if (nvlist_lookup_uint64(events[i], ZPOOL_HIST_INT_EVENT, &ievent) != 0) - continue; + goto next; verify(nvlist_lookup_uint64(events[i], ZPOOL_HIST_TXG, &txg) == 0); verify(nvlist_lookup_string(events[i], ZPOOL_HIST_INT_STR, &intstr) == 0); - if (ievent >= LOG_END) - continue; + if (ievent >= ZFS_NUM_LEGACY_HISTORY_EVENTS) + goto next; (void) snprintf(internalstr, sizeof (internalstr), @@ -880,6 +903,14 @@ dump_history(spa_t *spa) (void) localtime_r(&tsec, &t); (void) strftime(tbuf, sizeof (tbuf), "%F.%T", &t); (void) printf("%s %s\n", tbuf, cmd); + printed = B_TRUE; + +next: + if (dump_opt['h'] > 1) { + if (!printed) + (void) printf("unrecognized record:\n"); + dump_nvlist(events[i], 2); + } } } @@ -1456,7 +1487,7 @@ static object_viewer_t *object_viewer[DM dump_zap, /* other ZAP */ dump_zap, /* persistent error log */ dump_uint8, /* SPA history */ - dump_uint64, /* SPA history offsets */ + dump_history_offsets, /* SPA history offsets */ dump_zap, /* Pool properties */ dump_zap, /* DSL permissions */ dump_acl, /* ZFS ACL */ Modified: vendor/illumos/dist/cmd/zfs/zfs_main.c ============================================================================== --- vendor/illumos/dist/cmd/zfs/zfs_main.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/cmd/zfs/zfs_main.c Mon Jul 2 07:50:15 2012 (r237976) @@ -56,6 +56,7 @@ #include #include +#include #include #include #include @@ -70,6 +71,7 @@ libzfs_handle_t *g_zfs; static FILE *mnttab_file; static char history_str[HIS_MAX_RECORD_LEN]; +static boolean_t log_history = B_TRUE; static int zfs_do_clone(int argc, char **argv); static int zfs_do_create(int argc, char **argv); @@ -259,7 +261,7 @@ get_usage(zfs_help_t idx) return (gettext("\tshare <-a | filesystem>\n")); case HELP_SNAPSHOT: return (gettext("\tsnapshot [-r] [-o property=value] ... " - "\n")); + " ...\n")); case HELP_UNMOUNT: return (gettext("\tunmount [-f] " "<-a | filesystem|mountpoint>\n")); @@ -888,9 +890,9 @@ typedef struct destroy_cbdata { nvlist_t *cb_nvl; /* first snap in contiguous run */ - zfs_handle_t *cb_firstsnap; + char *cb_firstsnap; /* previous snap in contiguous run */ - zfs_handle_t *cb_prevsnap; + char *cb_prevsnap; int64_t cb_snapused; char *cb_snapspec; } destroy_cbdata_t; @@ -1004,11 +1006,13 @@ destroy_print_cb(zfs_handle_t *zhp, void if (nvlist_exists(cb->cb_nvl, name)) { if (cb->cb_firstsnap == NULL) - cb->cb_firstsnap = zfs_handle_dup(zhp); + cb->cb_firstsnap = strdup(name); if (cb->cb_prevsnap != NULL) - zfs_close(cb->cb_prevsnap); + free(cb->cb_prevsnap); /* this snap continues the current range */ - cb->cb_prevsnap = zfs_handle_dup(zhp); + cb->cb_prevsnap = strdup(name); + if (cb->cb_firstsnap == NULL || cb->cb_prevsnap == NULL) + nomem(); if (cb->cb_verbose) { if (cb->cb_parsable) { (void) printf("destroy\t%s\n", name); @@ -1023,12 +1027,12 @@ destroy_print_cb(zfs_handle_t *zhp, void } else if (cb->cb_firstsnap != NULL) { /* end of this range */ uint64_t used = 0; - err = zfs_get_snapused_int(cb->cb_firstsnap, + err = lzc_snaprange_space(cb->cb_firstsnap, cb->cb_prevsnap, &used); cb->cb_snapused += used; - zfs_close(cb->cb_firstsnap); + free(cb->cb_firstsnap); cb->cb_firstsnap = NULL; - zfs_close(cb->cb_prevsnap); + free(cb->cb_prevsnap); cb->cb_prevsnap = NULL; } zfs_close(zhp); @@ -1045,13 +1049,13 @@ destroy_print_snapshots(zfs_handle_t *fs if (cb->cb_firstsnap != NULL) { uint64_t used = 0; if (err == 0) { - err = zfs_get_snapused_int(cb->cb_firstsnap, + err = lzc_snaprange_space(cb->cb_firstsnap, cb->cb_prevsnap, &used); } cb->cb_snapused += used; - zfs_close(cb->cb_firstsnap); + free(cb->cb_firstsnap); cb->cb_firstsnap = NULL; - zfs_close(cb->cb_prevsnap); + free(cb->cb_prevsnap); cb->cb_prevsnap = NULL; } return (err); @@ -1904,9 +1908,11 @@ upgrade_set_callback(zfs_handle_t *zhp, /* * If they did "zfs upgrade -a", then we could * be doing ioctls to different pools. We need - * to log this history once to each pool. + * to log this history once to each pool, and bypass + * the normal history logging that happens in main(). */ - verify(zpool_stage_history(g_zfs, history_str) == 0); + (void) zpool_log_history(g_zfs, history_str); + log_history = B_FALSE; } if (zfs_prop_set(zhp, "version", verstr) == 0) cb->cb_numupgraded++; @@ -3424,6 +3430,32 @@ zfs_do_set(int argc, char **argv) return (ret); } +typedef struct snap_cbdata { + nvlist_t *sd_nvl; + boolean_t sd_recursive; + const char *sd_snapname; +} snap_cbdata_t; + +static int +zfs_snapshot_cb(zfs_handle_t *zhp, void *arg) +{ + snap_cbdata_t *sd = arg; + char *name; + int rv = 0; + int error; + + error = asprintf(&name, "%s@%s", zfs_get_name(zhp), sd->sd_snapname); + if (error == -1) + nomem(); + fnvlist_add_boolean(sd->sd_nvl, name); + free(name); + + if (sd->sd_recursive) + rv = zfs_iter_filesystems(zhp, zfs_snapshot_cb, sd); + zfs_close(zhp); + return (rv); +} + /* * zfs snapshot [-r] [-o prop=value] ... * @@ -3433,13 +3465,16 @@ zfs_do_set(int argc, char **argv) static int zfs_do_snapshot(int argc, char **argv) { - boolean_t recursive = B_FALSE; int ret = 0; char c; nvlist_t *props; + snap_cbdata_t sd = { 0 }; + boolean_t multiple_snaps = B_FALSE; if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0) nomem(); + if (nvlist_alloc(&sd.sd_nvl, NV_UNIQUE_NAME, 0) != 0) + nomem(); /* check options */ while ((c = getopt(argc, argv, "ro:")) != -1) { @@ -3449,7 +3484,8 @@ zfs_do_snapshot(int argc, char **argv) return (1); break; case 'r': - recursive = B_TRUE; + sd.sd_recursive = B_TRUE; + multiple_snaps = B_TRUE; break; case '?': (void) fprintf(stderr, gettext("invalid option '%c'\n"), @@ -3466,18 +3502,35 @@ zfs_do_snapshot(int argc, char **argv) (void) fprintf(stderr, gettext("missing snapshot argument\n")); goto usage; } - if (argc > 1) { - (void) fprintf(stderr, gettext("too many arguments\n")); - goto usage; + + if (argc > 1) + multiple_snaps = B_TRUE; + for (; argc > 0; argc--, argv++) { + char *atp; + zfs_handle_t *zhp; + + atp = strchr(argv[0], '@'); + if (atp == NULL) + goto usage; + *atp = '\0'; + sd.sd_snapname = atp + 1; + zhp = zfs_open(g_zfs, argv[0], + ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); + if (zhp == NULL) + goto usage; + if (zfs_snapshot_cb(zhp, &sd) != 0) + goto usage; } - ret = zfs_snapshot(g_zfs, argv[0], recursive, props); + ret = zfs_snapshot_nvl(g_zfs, sd.sd_nvl, props); + nvlist_free(sd.sd_nvl); nvlist_free(props); - if (ret && recursive) + if (ret != 0 && multiple_snaps) (void) fprintf(stderr, gettext("no snapshots were created\n")); return (ret != 0); usage: + nvlist_free(sd.sd_nvl); nvlist_free(props); usage(B_FALSE); return (-1); @@ -6479,8 +6532,7 @@ main(int argc, char **argv) return (1); } - zpool_set_history_str("zfs", argc, argv, history_str); - verify(zpool_stage_history(g_zfs, history_str) == 0); + zfs_save_arguments(argc, argv, history_str, sizeof (history_str)); libzfs_print_on_error(g_zfs, B_TRUE); @@ -6549,6 +6601,9 @@ main(int argc, char **argv) (void) fclose(mnttab_file); + if (ret == 0 && log_history) + (void) zpool_log_history(g_zfs, history_str); + libzfs_fini(g_zfs); /* Modified: vendor/illumos/dist/cmd/zhack/zhack.c ============================================================================== --- vendor/illumos/dist/cmd/zhack/zhack.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/cmd/zhack/zhack.c Mon Jul 2 07:50:15 2012 (r237976) @@ -279,6 +279,9 @@ feature_enable_sync(void *arg1, void *ar zfeature_info_t *feature = arg2; spa_feature_enable(spa, feature, tx); + spa_history_log_internal(spa, "zhack enable feature", tx, + "name=%s can_readonly=%u", + feature->fi_guid, feature->fi_can_readonly); } static void @@ -356,6 +359,8 @@ feature_incr_sync(void *arg1, void *arg2 zfeature_info_t *feature = arg2; spa_feature_incr(spa, feature, tx); + spa_history_log_internal(spa, "zhack feature incr", tx, + "name=%s", feature->fi_guid); } static void @@ -365,6 +370,8 @@ feature_decr_sync(void *arg1, void *arg2 zfeature_info_t *feature = arg2; spa_feature_decr(spa, feature, tx); + spa_history_log_internal(spa, "zhack feature decr", tx, + "name=%s", feature->fi_guid); } static void Modified: vendor/illumos/dist/cmd/zpool/zpool_main.c ============================================================================== --- vendor/illumos/dist/cmd/zpool/zpool_main.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/cmd/zpool/zpool_main.c Mon Jul 2 07:50:15 2012 (r237976) @@ -185,9 +185,9 @@ static zpool_command_t command_table[] = #define NCOMMAND (sizeof (command_table) / sizeof (command_table[0])) -zpool_command_t *current_command; +static zpool_command_t *current_command; static char history_str[HIS_MAX_RECORD_LEN]; - +static boolean_t log_history = B_TRUE; static uint_t timestamp_fmt = NODATE; static const char * @@ -935,7 +935,10 @@ zpool_do_destroy(int argc, char **argv) return (1); } - ret = (zpool_destroy(zhp) != 0); + /* The history must be logged as part of the export */ + log_history = B_FALSE; + + ret = (zpool_destroy(zhp, history_str) != 0); zpool_close(zhp); @@ -999,10 +1002,13 @@ zpool_do_export(int argc, char **argv) continue; } + /* The history must be logged as part of the export */ + log_history = B_FALSE; + if (hardforce) { - if (zpool_export_force(zhp) != 0) + if (zpool_export_force(zhp, history_str) != 0) ret = 1; - } else if (zpool_export(zhp, force) != 0) { + } else if (zpool_export(zhp, force, history_str) != 0) { ret = 1; } @@ -4269,6 +4275,14 @@ upgrade_cb(zpool_handle_t *zhp, void *ar (void) printf(gettext("Successfully upgraded " "'%s'\n\n"), zpool_get_name(zhp)); } + /* + * If they did "zpool upgrade -a", then we could + * be doing ioctls to different pools. We need + * to log this history once to each pool, and bypass + * the normal history logging that happens in main(). + */ + (void) zpool_log_history(g_zfs, history_str); + log_history = B_FALSE; } } else if (cbp->cb_newer && !SPA_VERSION_IS_SUPPORTED(version)) { assert(!cbp->cb_all); @@ -4491,8 +4505,8 @@ zpool_do_upgrade(int argc, char **argv) typedef struct hist_cbdata { boolean_t first; - int longfmt; - int internal; + boolean_t longfmt; + boolean_t internal; } hist_cbdata_t; /* @@ -4504,21 +4518,8 @@ get_history_one(zpool_handle_t *zhp, voi nvlist_t *nvhis; nvlist_t **records; uint_t numrecords; - char *cmdstr; - char *pathstr; - uint64_t dst_time; - time_t tsec; - struct tm t; - char tbuf[30]; int ret, i; - uint64_t who; - struct passwd *pwd; - char *hostname; - char *zonename; - char internalstr[MAXPATHLEN]; hist_cbdata_t *cb = (hist_cbdata_t *)data; - uint64_t txg; - uint64_t ievent; cb->first = B_FALSE; @@ -4530,64 +4531,94 @@ get_history_one(zpool_handle_t *zhp, voi verify(nvlist_lookup_nvlist_array(nvhis, ZPOOL_HIST_RECORD, &records, &numrecords) == 0); for (i = 0; i < numrecords; i++) { - if (nvlist_lookup_uint64(records[i], ZPOOL_HIST_TIME, - &dst_time) != 0) - continue; + nvlist_t *rec = records[i]; + char tbuf[30] = ""; - /* is it an internal event or a standard event? */ - if (nvlist_lookup_string(records[i], ZPOOL_HIST_CMD, - &cmdstr) != 0) { - if (cb->internal == 0) + if (nvlist_exists(rec, ZPOOL_HIST_TIME)) { + time_t tsec; + struct tm t; + + tsec = fnvlist_lookup_uint64(records[i], + ZPOOL_HIST_TIME); + (void) localtime_r(&tsec, &t); + (void) strftime(tbuf, sizeof (tbuf), "%F.%T", &t); + } + + if (nvlist_exists(rec, ZPOOL_HIST_CMD)) { + (void) printf("%s %s", tbuf, + fnvlist_lookup_string(rec, ZPOOL_HIST_CMD)); + } else if (nvlist_exists(rec, ZPOOL_HIST_INT_EVENT)) { + int ievent = + fnvlist_lookup_uint64(rec, ZPOOL_HIST_INT_EVENT); + if (!cb->internal) continue; - - if (nvlist_lookup_uint64(records[i], - ZPOOL_HIST_INT_EVENT, &ievent) != 0) + if (ievent >= ZFS_NUM_LEGACY_HISTORY_EVENTS) { + (void) printf("%s unrecognized record:\n", + tbuf); + dump_nvlist(rec, 4); + continue; + } + (void) printf("%s [internal %s txg:%lld] %s", tbuf, + zfs_history_event_names[ievent], + fnvlist_lookup_uint64(rec, ZPOOL_HIST_TXG), + fnvlist_lookup_string(rec, ZPOOL_HIST_INT_STR)); + } else if (nvlist_exists(rec, ZPOOL_HIST_INT_NAME)) { + if (!cb->internal) continue; - verify(nvlist_lookup_uint64(records[i], - ZPOOL_HIST_TXG, &txg) == 0); - verify(nvlist_lookup_string(records[i], - ZPOOL_HIST_INT_STR, &pathstr) == 0); - if (ievent >= LOG_END) + (void) printf("%s [txg:%lld] %s", tbuf, + fnvlist_lookup_uint64(rec, ZPOOL_HIST_TXG), + fnvlist_lookup_string(rec, ZPOOL_HIST_INT_NAME)); + if (nvlist_exists(rec, ZPOOL_HIST_DSNAME)) { + (void) printf(" %s (%llu)", + fnvlist_lookup_string(rec, + ZPOOL_HIST_DSNAME), + fnvlist_lookup_uint64(rec, + ZPOOL_HIST_DSID)); + } + (void) printf(" %s", fnvlist_lookup_string(rec, + ZPOOL_HIST_INT_STR)); + } else if (nvlist_exists(rec, ZPOOL_HIST_IOCTL)) { + if (!cb->internal) continue; - (void) snprintf(internalstr, - sizeof (internalstr), - "[internal %s txg:%lld] %s", - zfs_history_event_names[ievent], txg, - pathstr); - cmdstr = internalstr; - } - tsec = dst_time; - (void) localtime_r(&tsec, &t); - (void) strftime(tbuf, sizeof (tbuf), "%F.%T", &t); - (void) printf("%s %s", tbuf, cmdstr); + (void) printf("%s ioctl %s\n", tbuf, + fnvlist_lookup_string(rec, ZPOOL_HIST_IOCTL)); + if (nvlist_exists(rec, ZPOOL_HIST_INPUT_NVL)) { + (void) printf(" input:\n"); + dump_nvlist(fnvlist_lookup_nvlist(rec, + ZPOOL_HIST_INPUT_NVL), 8); + } + if (nvlist_exists(rec, ZPOOL_HIST_OUTPUT_NVL)) { + (void) printf(" output:\n"); + dump_nvlist(fnvlist_lookup_nvlist(rec, + ZPOOL_HIST_OUTPUT_NVL), 8); + } + } else { + if (!cb->internal) + continue; + (void) printf("%s unrecognized record:\n", tbuf); + dump_nvlist(rec, 4); + } if (!cb->longfmt) { (void) printf("\n"); continue; } (void) printf(" ["); - if (nvlist_lookup_uint64(records[i], - ZPOOL_HIST_WHO, &who) == 0) { - pwd = getpwuid((uid_t)who); - if (pwd) - (void) printf("user %s on", - pwd->pw_name); - else - (void) printf("user %d on", - (int)who); - } else { - (void) printf(gettext("no info]\n")); - continue; + if (nvlist_exists(rec, ZPOOL_HIST_WHO)) { + uid_t who = fnvlist_lookup_uint64(rec, ZPOOL_HIST_WHO); + struct passwd *pwd = getpwuid(who); + (void) printf("user %d ", (int)who); + if (pwd != NULL) + (void) printf("(%s) ", pwd->pw_name); + } + if (nvlist_exists(rec, ZPOOL_HIST_HOST)) { + (void) printf("on %s", + fnvlist_lookup_string(rec, ZPOOL_HIST_HOST)); + } + if (nvlist_exists(rec, ZPOOL_HIST_ZONE)) { + (void) printf(":%s", + fnvlist_lookup_string(rec, ZPOOL_HIST_ZONE)); } - if (nvlist_lookup_string(records[i], - ZPOOL_HIST_HOST, &hostname) == 0) { - (void) printf(" %s", hostname); - } - if (nvlist_lookup_string(records[i], - ZPOOL_HIST_ZONE, &zonename) == 0) { - (void) printf(":%s", zonename); - } - (void) printf("]"); (void) printf("\n"); } @@ -4602,8 +4633,6 @@ get_history_one(zpool_handle_t *zhp, voi * * Displays the history of commands that modified pools. */ - - int zpool_do_history(int argc, char **argv) { @@ -4616,10 +4645,10 @@ zpool_do_history(int argc, char **argv) while ((c = getopt(argc, argv, "li")) != -1) { switch (c) { case 'l': - cbdata.longfmt = 1; + cbdata.longfmt = B_TRUE; break; case 'i': - cbdata.internal = 1; + cbdata.internal = B_TRUE; break; case '?': (void) fprintf(stderr, gettext("invalid option '%c'\n"), @@ -4844,8 +4873,7 @@ main(int argc, char **argv) if (strcmp(cmdname, "-?") == 0) usage(B_TRUE); - zpool_set_history_str("zpool", argc, argv, history_str); - verify(zpool_stage_history(g_zfs, history_str) == 0); + zfs_save_arguments(argc, argv, history_str, sizeof (history_str)); /* * Run the appropriate command. @@ -4872,6 +4900,9 @@ main(int argc, char **argv) usage(B_FALSE); } + if (ret == 0 && log_history) + (void) zpool_log_history(g_zfs, history_str); + libzfs_fini(g_zfs); /* Modified: vendor/illumos/dist/cmd/ztest/ztest.c ============================================================================== --- vendor/illumos/dist/cmd/ztest/ztest.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/cmd/ztest/ztest.c Mon Jul 2 07:50:15 2012 (r237976) @@ -2252,7 +2252,7 @@ ztest_spa_create_destroy(ztest_ds_t *zd, */ nvroot = make_vdev_root("/dev/bogus", NULL, 0, 0, 0, 0, 0, 1); VERIFY3U(ENOENT, ==, - spa_create("ztest_bad_file", nvroot, NULL, NULL, NULL)); + spa_create("ztest_bad_file", nvroot, NULL, NULL)); nvlist_free(nvroot); /* @@ -2260,7 +2260,7 @@ ztest_spa_create_destroy(ztest_ds_t *zd, */ nvroot = make_vdev_root("/dev/bogus", NULL, 0, 0, 0, 0, 2, 1); VERIFY3U(ENOENT, ==, - spa_create("ztest_bad_mirror", nvroot, NULL, NULL, NULL)); + spa_create("ztest_bad_mirror", nvroot, NULL, NULL)); nvlist_free(nvroot); /* @@ -2269,7 +2269,7 @@ ztest_spa_create_destroy(ztest_ds_t *zd, */ (void) rw_rdlock(&ztest_name_lock); nvroot = make_vdev_root("/dev/bogus", NULL, 0, 0, 0, 0, 0, 1); - VERIFY3U(EEXIST, ==, spa_create(zo->zo_pool, nvroot, NULL, NULL, NULL)); + VERIFY3U(EEXIST, ==, spa_create(zo->zo_pool, nvroot, NULL, NULL)); nvlist_free(nvroot); VERIFY3U(0, ==, spa_open(zo->zo_pool, &spa, FTAG)); VERIFY3U(EBUSY, ==, spa_destroy(zo->zo_pool)); @@ -3056,8 +3056,7 @@ ztest_snapshot_create(char *osname, uint (void) snprintf(snapname, MAXNAMELEN, "%s@%llu", osname, (u_longlong_t)id); - error = dmu_objset_snapshot(osname, strchr(snapname, '@') + 1, - NULL, NULL, B_FALSE, B_FALSE, -1); + error = dmu_objset_snapshot_one(osname, strchr(snapname, '@') + 1); if (error == ENOSPC) { ztest_record_enospc(FTAG); return (B_FALSE); @@ -3257,8 +3256,7 @@ ztest_dsl_dataset_promote_busy(ztest_ds_ (void) snprintf(clone2name, MAXNAMELEN, "%s/c2_%llu", osname, id); (void) snprintf(snap3name, MAXNAMELEN, "%s@s3_%llu", clone1name, id); - error = dmu_objset_snapshot(osname, strchr(snap1name, '@')+1, - NULL, NULL, B_FALSE, B_FALSE, -1); + error = dmu_objset_snapshot_one(osname, strchr(snap1name, '@') + 1); if (error && error != EEXIST) { if (error == ENOSPC) { ztest_record_enospc(FTAG); @@ -3281,8 +3279,7 @@ ztest_dsl_dataset_promote_busy(ztest_ds_ fatal(0, "dmu_objset_create(%s) = %d", clone1name, error); } - error = dmu_objset_snapshot(clone1name, strchr(snap2name, '@')+1, - NULL, NULL, B_FALSE, B_FALSE, -1); + error = dmu_objset_snapshot_one(clone1name, strchr(snap2name, '@') + 1); if (error && error != EEXIST) { if (error == ENOSPC) { ztest_record_enospc(FTAG); @@ -3291,8 +3288,7 @@ ztest_dsl_dataset_promote_busy(ztest_ds_ fatal(0, "dmu_open_snapshot(%s) = %d", snap2name, error); } - error = dmu_objset_snapshot(clone1name, strchr(snap3name, '@')+1, - NULL, NULL, B_FALSE, B_FALSE, -1); + error = dmu_objset_snapshot_one(clone1name, strchr(snap3name, '@') + 1); if (error && error != EEXIST) { if (error == ENOSPC) { ztest_record_enospc(FTAG); @@ -4480,8 +4476,7 @@ ztest_dmu_snapshot_hold(ztest_ds_t *zd, * Create snapshot, clone it, mark snap for deferred destroy, * destroy clone, verify snap was also destroyed. */ - error = dmu_objset_snapshot(osname, snapname, NULL, NULL, FALSE, - FALSE, -1); + error = dmu_objset_snapshot_one(osname, snapname); if (error) { if (error == ENOSPC) { ztest_record_enospc("dmu_objset_snapshot"); @@ -4523,8 +4518,7 @@ ztest_dmu_snapshot_hold(ztest_ds_t *zd, * destroy a held snapshot, mark for deferred destroy, * release hold, verify snapshot was destroyed. */ - error = dmu_objset_snapshot(osname, snapname, NULL, NULL, FALSE, - FALSE, -1); + error = dmu_objset_snapshot_one(osname, snapname); if (error) { if (error == ENOSPC) { ztest_record_enospc("dmu_objset_snapshot"); @@ -5612,8 +5606,7 @@ ztest_init(ztest_shared_t *zs) spa_feature_table[i].fi_uname); VERIFY3U(0, ==, nvlist_add_uint64(props, buf, 0)); } - VERIFY3U(0, ==, spa_create(ztest_opts.zo_pool, nvroot, props, - NULL, NULL)); + VERIFY3U(0, ==, spa_create(ztest_opts.zo_pool, nvroot, props, NULL)); nvlist_free(nvroot); VERIFY3U(0, ==, spa_open(ztest_opts.zo_pool, &spa, FTAG)); Modified: vendor/illumos/dist/common/zfs/zfs_comutil.c ============================================================================== --- vendor/illumos/dist/common/zfs/zfs_comutil.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/common/zfs/zfs_comutil.c Mon Jul 2 07:50:15 2012 (r237976) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ /* @@ -157,7 +158,11 @@ zfs_spa_version_map(int zpl_version) return (version); } -const char *zfs_history_event_names[LOG_END] = { +/* + * This is the table of legacy internal event names; it should not be modified. + * The internal events are now stored in the history log as strings. + */ +const char *zfs_history_event_names[ZFS_NUM_LEGACY_HISTORY_EVENTS] = { "invalid event", "pool create", "vdev add", Modified: vendor/illumos/dist/common/zfs/zfs_comutil.h ============================================================================== --- vendor/illumos/dist/common/zfs/zfs_comutil.h Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/common/zfs/zfs_comutil.h Mon Jul 2 07:50:15 2012 (r237976) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #ifndef _ZFS_COMUTIL_H @@ -37,7 +38,8 @@ extern void zpool_get_rewind_policy(nvli extern int zfs_zpl_version_map(int spa_version); extern int zfs_spa_version_map(int zpl_version); -extern const char *zfs_history_event_names[LOG_END]; +#define ZFS_NUM_LEGACY_HISTORY_EVENTS 41 +extern const char *zfs_history_event_names[ZFS_NUM_LEGACY_HISTORY_EVENTS]; #ifdef __cplusplus } Modified: vendor/illumos/dist/common/zfs/zprop_common.c ============================================================================== --- vendor/illumos/dist/common/zfs/zprop_common.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/common/zfs/zprop_common.c Mon Jul 2 07:50:15 2012 (r237976) @@ -22,6 +22,9 @@ * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ /* * Common routines used by zfs and zpool property management. @@ -129,7 +132,8 @@ zprop_register_hidden(int prop, const ch zprop_attr_t attr, int objset_types, const char *colname) { zprop_register_impl(prop, name, type, 0, NULL, attr, - objset_types, NULL, colname, B_FALSE, B_FALSE, NULL); + objset_types, NULL, colname, + type == PROP_TYPE_NUMBER, B_FALSE, NULL); } Modified: vendor/illumos/dist/lib/libzfs/common/libzfs.h ============================================================================== --- vendor/illumos/dist/lib/libzfs/common/libzfs.h Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/lib/libzfs/common/libzfs.h Mon Jul 2 07:50:15 2012 (r237976) @@ -54,7 +54,8 @@ extern "C" { /* * libzfs errors */ -enum { +typedef enum zfs_error { + EZFS_SUCCESS = 0, /* no error -- success */ EZFS_NOMEM = 2000, /* out of memory */ EZFS_BADPROP, /* invalid property value */ EZFS_PROPREADONLY, /* cannot set readonly property */ @@ -126,7 +127,7 @@ enum { EZFS_DIFFDATA, /* bad zfs diff data */ EZFS_POOLREADONLY, /* pool is in read-only mode */ EZFS_UNKNOWN -}; +} zfs_error_t; /* * The following data structures are all part @@ -182,6 +183,9 @@ extern libzfs_handle_t *zfs_get_handle(z extern void libzfs_print_on_error(libzfs_handle_t *, boolean_t); +extern void zfs_save_arguments(int argc, char **, char *, int); +extern int zpool_log_history(libzfs_handle_t *, const char *); + extern int libzfs_errno(libzfs_handle_t *); extern const char *libzfs_error_action(libzfs_handle_t *); extern const char *libzfs_error_description(libzfs_handle_t *); @@ -216,7 +220,7 @@ extern int zpool_iter(libzfs_handle_t *, */ extern int zpool_create(libzfs_handle_t *, const char *, nvlist_t *, nvlist_t *, nvlist_t *); -extern int zpool_destroy(zpool_handle_t *); +extern int zpool_destroy(zpool_handle_t *, const char *); extern int zpool_add(zpool_handle_t *, nvlist_t *); typedef struct splitflags { @@ -338,8 +342,8 @@ extern int zpool_get_errlog(zpool_handle /* * Import and export functions */ -extern int zpool_export(zpool_handle_t *, boolean_t); -extern int zpool_export_force(zpool_handle_t *); +extern int zpool_export(zpool_handle_t *, boolean_t, const char *); +extern int zpool_export_force(zpool_handle_t *, const char *); extern int zpool_import(libzfs_handle_t *, nvlist_t *, const char *, char *altroot); extern int zpool_import_props(libzfs_handle_t *, nvlist_t *, const char *, @@ -373,7 +377,7 @@ extern nvlist_t *zpool_find_import_cache */ struct zfs_cmd; -extern const char *zfs_history_event_names[LOG_END]; +extern const char *zfs_history_event_names[]; extern char *zpool_vdev_name(libzfs_handle_t *, zpool_handle_t *, nvlist_t *, boolean_t verbose); @@ -381,9 +385,6 @@ extern int zpool_upgrade(zpool_handle_t extern int zpool_get_history(zpool_handle_t *, nvlist_t **); extern int zpool_history_unpack(char *, uint64_t, uint64_t *, nvlist_t ***, uint_t *); -extern void zpool_set_history_str(const char *subcommand, int argc, - char **argv, char *history_str); -extern int zpool_stage_history(libzfs_handle_t *, const char *); extern void zpool_obj_to_path(zpool_handle_t *, uint64_t, uint64_t, char *, size_t len); extern int zfs_ioctl(libzfs_handle_t *, int, struct zfs_cmd *); @@ -436,8 +437,6 @@ extern int zfs_prop_get_written(zfs_hand char *propbuf, int proplen, boolean_t literal); extern int zfs_prop_get_feature(zfs_handle_t *zhp, const char *propname, char *buf, size_t len); -extern int zfs_get_snapused_int(zfs_handle_t *firstsnap, zfs_handle_t *lastsnap, - uint64_t *usedp); extern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t); extern int zfs_prop_inherit(zfs_handle_t *, const char *, boolean_t); extern const char *zfs_prop_values(zfs_prop_t); @@ -553,6 +552,8 @@ extern int zfs_destroy_snaps(zfs_handle_ extern int zfs_destroy_snaps_nvl(zfs_handle_t *, nvlist_t *, boolean_t); extern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *); extern int zfs_snapshot(libzfs_handle_t *, const char *, boolean_t, nvlist_t *); +extern int zfs_snapshot_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, + nvlist_t *props); extern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, boolean_t); extern int zfs_rename(zfs_handle_t *, const char *, boolean_t, boolean_t); Modified: vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c ============================================================================== --- vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c Mon Jul 2 07:39:55 2012 (r237975) +++ vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c Mon Jul 2 07:50:15 2012 (r237976) @@ -1407,8 +1407,7 @@ zfs_prop_set(zfs_handle_t *zhp, const ch libzfs_handle_t *hdl = zhp->zfs_hdl; nvlist_t *nvl = NULL, *realprops; zfs_prop_t prop; - boolean_t do_prefix; - uint64_t idx; + boolean_t do_prefix = B_TRUE; int added_resv; (void) snprintf(errbuf, sizeof (errbuf), @@ -1447,12 +1446,17 @@ zfs_prop_set(zfs_handle_t *zhp, const ch } /* - * If the dataset's canmount property is being set to noauto, - * then we want to prevent unmounting & remounting it. - */ - do_prefix = !((prop == ZFS_PROP_CANMOUNT) && - (zprop_string_to_index(prop, propval, &idx, - ZFS_TYPE_DATASET) == 0) && (idx == ZFS_CANMOUNT_NOAUTO)); + * We don't want to unmount & remount the dataset when changing + * its canmount property to 'on' or 'noauto'. We only use + * the changelist logic to unmount when setting canmount=off. + */ + if (prop == ZFS_PROP_CANMOUNT) { + uint64_t idx; + int err = zprop_string_to_index(prop, propval, &idx, + ZFS_TYPE_DATASET); + if (err == 0 && idx != ZFS_CANMOUNT_OFF) + do_prefix = B_FALSE; + } if (do_prefix && (ret = changelist_prefix(cl)) != 0) goto error; @@ -2641,25 +2645,6 @@ zfs_prop_get_written(zfs_handle_t *zhp, return (0); } -int -zfs_get_snapused_int(zfs_handle_t *firstsnap, zfs_handle_t *lastsnap, - uint64_t *usedp) -{ - int err; - zfs_cmd_t zc = { 0 }; - - (void) strlcpy(zc.zc_name, lastsnap->zfs_name, sizeof (zc.zc_name)); - (void) strlcpy(zc.zc_value, firstsnap->zfs_name, sizeof (zc.zc_value)); - - err = ioctl(lastsnap->zfs_hdl->libzfs_fd, ZFS_IOC_SPACE_SNAPS, &zc); - if (err) - return (err); - - *usedp = zc.zc_cookie; - - return (0); -} - /* * Returns the name of the given zfs handle. */ @@ -2860,7 +2845,6 @@ create_parents(libzfs_handle_t *hdl, cha */ for (cp = target + prefixlen + 1; cp = strchr(cp, '/'); *cp = '/', cp++) { - char *logstr; *cp = '\0'; @@ -2871,16 +2855,12 @@ create_parents(libzfs_handle_t *hdl, cha continue; } - logstr = hdl->libzfs_log_str; - hdl->libzfs_log_str = NULL; if (zfs_create(hdl, target, ZFS_TYPE_FILESYSTEM, NULL) != 0) { - hdl->libzfs_log_str = logstr; opname = dgettext(TEXT_DOMAIN, "create"); goto ancestorerr; } - hdl->libzfs_log_str = logstr; h = zfs_open(hdl, target, ZFS_TYPE_FILESYSTEM); if (h == NULL) { opname = dgettext(TEXT_DOMAIN, "open"); @@ -2938,12 +2918,12 @@ int zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type, nvlist_t *props) { - zfs_cmd_t zc = { 0 }; int ret; uint64_t size = 0; uint64_t blocksize = zfs_prop_default_numeric(ZFS_PROP_VOLBLOCKSIZE); char errbuf[1024]; uint64_t zoned; + dmu_objset_type_t ost; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create '%s'"), path); @@ -2963,17 +2943,16 @@ zfs_create(libzfs_handle_t *hdl, const c * will return ENOENT, not EEXIST. To prevent this from happening, we * first try to see if the dataset exists. */ - (void) strlcpy(zc.zc_name, path, sizeof (zc.zc_name)); - if (zfs_dataset_exists(hdl, zc.zc_name, ZFS_TYPE_DATASET)) { + if (zfs_dataset_exists(hdl, path, ZFS_TYPE_DATASET)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset already exists")); return (zfs_error(hdl, EZFS_EXISTS, errbuf)); } if (type == ZFS_TYPE_VOLUME) - zc.zc_objset_type = DMU_OST_ZVOL; + ost = DMU_OST_ZVOL; else - zc.zc_objset_type = DMU_OST_ZFS; + ost = DMU_OST_ZFS; if (props && (props = zfs_valid_proplist(hdl, type, props, zoned, NULL, errbuf)) == 0) @@ -3025,14 +3004,9 @@ zfs_create(libzfs_handle_t *hdl, const c } } - if (props && zcmd_write_src_nvlist(hdl, &zc, props) != 0) - return (-1); - nvlist_free(props); - *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@FreeBSD.ORG Tue Jul 3 06:54:38 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BC9481065672; Tue, 3 Jul 2012 06:54:38 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 556B18FC0A; Tue, 3 Jul 2012 06:54:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q636scC4026861; Tue, 3 Jul 2012 06:54:38 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q636scaX026844; Tue, 3 Jul 2012 06:54:38 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201207030654.q636scaX026844@svn.freebsd.org> From: "David E. O'Brien" Date: Tue, 3 Jul 2012 06:54:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238052 - in vendor/gcc/dist/libstdc++: . config/os/aix include/bits include/ext include/tr1 libsupc++ scripts src X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2012 06:54:38 -0000 Author: obrien Date: Tue Jul 3 06:54:37 2012 New Revision: 238052 URL: http://svn.freebsd.org/changeset/base/238052 Log: Vendor import the latest GPLv2 libstdc++ sources. It happens to be that while libstdc++ is a subset of gcc which was changed to GPLv3, libstdc++ was kept under LGPLv2 until the end of the 4.2 branch (gcc 4.2.4) (@ GRN 135556). Obtained from: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch/libstdc++-v3 Requested by: pfg Reviewed by: pfg Added: vendor/gcc/dist/libstdc++/scripts/check_compile (contents, props changed) Modified: vendor/gcc/dist/libstdc++/ChangeLog vendor/gcc/dist/libstdc++/config/os/aix/os_defines.h vendor/gcc/dist/libstdc++/include/bits/allocator.h vendor/gcc/dist/libstdc++/include/bits/basic_string.h vendor/gcc/dist/libstdc++/include/bits/fstream.tcc vendor/gcc/dist/libstdc++/include/bits/locale_facets.tcc vendor/gcc/dist/libstdc++/include/ext/atomicity.h vendor/gcc/dist/libstdc++/include/ext/codecvt_specializations.h vendor/gcc/dist/libstdc++/include/ext/concurrence.h vendor/gcc/dist/libstdc++/include/ext/vstring.h vendor/gcc/dist/libstdc++/include/tr1/boost_shared_ptr.h vendor/gcc/dist/libstdc++/include/tr1/random vendor/gcc/dist/libstdc++/libsupc++/eh_personality.cc vendor/gcc/dist/libstdc++/libsupc++/typeinfo vendor/gcc/dist/libstdc++/src/valarray-inst.cc Modified: vendor/gcc/dist/libstdc++/ChangeLog ============================================================================== --- vendor/gcc/dist/libstdc++/ChangeLog Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/ChangeLog Tue Jul 3 06:54:37 2012 (r238052) @@ -1,3 +1,133 @@ +2008-05-19 Release Manager + + * GCC 4.2.4 released. + +2008-03-13 David Edelsohn + + Backport from mainline: + 2008-01-26 David Edelsohn + + PR target/34794 + * config/os/aix/os_defines.h: Define __COMPATMATH__. + +2008-02-14 Kaveh R. Ghazi + + * testsuite/27_io/fpos/14320-1.cc: Check for "long long" and + remove XFAIL. + +2008-02-01 Release Manager + + * GCC 4.2.3 released. + +2008-01-06 Ted Phelps + + PR c++/34152 + * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Check + _GLIBCXX_HAVE_GETIPINFO instead of HAVE_GETIPINFO. + +2008-01-05 Paolo Carlini + + PR libstdc++/34680 + + Revert: + 2007-12-17 Jonathan Wakely + * include/bits/locale_facets.tcc (has_facet, use_facet): Simplify + RTTI checks. + + 2007-12-14 Benjamin Kosnik + + PR libstdc++/30127 + PR libstdc++/34449 + * include/bits/locale_facets.tcc (use_facet): Check facet hierarchy. + (has_facet): Same. + * testsuite/22_locale/global_templates/user_facet_hierarchies.cc: New. + * testsuite/22_locale/global_templates/ + standard_facet_hierarchies.cc: New. + +2007-12-17 Jonathan Wakely + + * include/bits/locale_facets.tcc (has_facet, use_facet): Simplify + RTTI checks. + +2007-12-17 Benjamin Kosnik + + * testsuite/22_locale/global_templates/ + standard_facet_hierarchies.cc: Fix for generic locale model. + +2007-12-14 Benjamin Kosnik + + PR libstdc++/30127 + PR libstdc++/34449 + * include/bits/locale_facets.tcc (use_facet): Check facet hierarchy. + (has_facet): Same. + * testsuite/22_locale/global_templates/user_facet_hierarchies.cc: New. + * testsuite/22_locale/global_templates/ + standard_facet_hierarchies.cc: New. + +2007-11-26 Paolo Carlini + + * include/bits/locale_facets.tcc (num_put<>::_M_insert_int): When + ios_base::showpos and the type is signed and the value is zero, + prepend +. + * testsuite/22_locale/num_put/put/char/12.cc: New. + * testsuite/22_locale/num_put/put/wchar_t/12.cc: Likewise. + +2007-10-20 Paolo Carlini + + * include/tr1/random + (uniform_int<>::_M_call(_UniformRandomNumberGenerator&, result_type, + result_type, true_type)): Fix small thinko. + +2007-10-19 Paolo Carlini + + PR libstdc++/33815 + * include/tr1/random + (uniform_int<>::_M_call(_UniformRandomNumberGenerator&, result_type, + result_type, true_type)): Avoid the modulo (which uses the low-order + bits). + +2007-10-18 Paolo Carlini + + PR libstdc++/33807 + * include/bits/allocator.h (operator==(const allocator<_Tp>&, + const allocator<_Tp>&), operator!=(const allocator<_Tp>&, + const allocator<_Tp>&)): Add. + * testsuite/20_util/memory/allocator/33807.cc: New. + +2007-10-14 Jonathan Wakely + + * docs/html/Makefile: Follow up to libstdc++/14991, remove target. + +2007-10-14 Jonathan Wakely + + * src/valarray-inst.cc, include/ext/atomicity.h, + include/ext/concurrence.h, include/bits/basic_string.h, + include/bits/fstream.tcc, include/ext/vstring.h: Fix comment typos. + +2007-10-14 Jonathan Wakely + + * include/tr1_impl/boost_shared_ptr.h: (__weak_ptr::lock()): Add + missing template argument. + * testsuite/tr1/2_general_utilities/memory/shared_ptr/ + explicit_instantiation/2.cc: New. + * testsuite/tr1/2_general_utilities/memory/weak_ptr/ + explicit_instantiation/2.cc: New. + +2007-10-11 Paolo Carlini + + PR libstdc++/33734 + * include/ext/codecvt_specializations.h (encoding_state::good, + init, destroy): Use cast notation instead of reinterpret_cast. + +2007-10-07 Release Manager + + * GCC 4.2.2 released. + +2007-10-06 Benjamin Kosnik + + PR libstdc++/33678 + * libsupc++/typeinfo (typeinfo): Revert ordering of virtual components. + 2007-08-28 Paolo Carlini PR libstdc++/33128 Modified: vendor/gcc/dist/libstdc++/config/os/aix/os_defines.h ============================================================================== --- vendor/gcc/dist/libstdc++/config/os/aix/os_defines.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/config/os/aix/os_defines.h Tue Jul 3 06:54:37 2012 (r238052) @@ -1,6 +1,6 @@ // Specific definitions for AIX -*- C++ -*- -// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc. +// Copyright (C) 2000, 2002, 2005, 2008 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -48,4 +48,9 @@ #define _ALL_SOURCE #endif +// C99 math +#ifndef __COMPATMATH__ +#define __COMPATMATH__ +#endif + #endif Modified: vendor/gcc/dist/libstdc++/include/bits/allocator.h ============================================================================== --- vendor/gcc/dist/libstdc++/include/bits/allocator.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/bits/allocator.h Tue Jul 3 06:54:37 2012 (r238052) @@ -115,11 +115,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std) operator==(const allocator<_T1>&, const allocator<_T2>&) { return true; } + template + inline bool + operator==(const allocator<_Tp>&, const allocator<_Tp>&) + { return true; } + template inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&) { return false; } + template + inline bool + operator!=(const allocator<_Tp>&, const allocator<_Tp>&) + { return false; } + // Inhibit implicit instantiations for required instantiations, // which are defined via explicit instantiations elsewhere. // NB: This syntax is a GNU extension. Modified: vendor/gcc/dist/libstdc++/include/bits/basic_string.h ============================================================================== --- vendor/gcc/dist/libstdc++/include/bits/basic_string.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/bits/basic_string.h Tue Jul 3 06:54:37 2012 (r238052) @@ -1672,7 +1672,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find position of a character of C substring. * @param s String containing characters to locate. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to search for. * @return Index of first occurrence. * @@ -1733,7 +1733,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character of C substring. * @param s C string containing characters to locate. - * @param pos Index of character to search back from (default end). + * @param pos Index of character to search back from. * @param n Number of characters from s to search for. * @return Index of last occurrence. * @@ -1764,7 +1764,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character. * @param c Character to locate. - * @param pos Index of character to search back from (default 0). + * @param pos Index of character to search back from (default end). * @return Index of last occurrence. * * Starting from @a pos, searches backward for @a c within this string. @@ -1794,7 +1794,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to consider. * @return Index of first occurrence. * @@ -1839,8 +1839,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character not in string. * @param str String containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a str within this string. If found, returns the index @@ -1853,9 +1853,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search back from. * @param n Number of characters from s to consider. - * @return Index of first occurrence. + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in the first @a n characters of @a s within this string. @@ -1866,10 +1866,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const; /** - * @brief Find position of a character not in C string. + * @brief Find last position of a character not in C string. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a s within this string. If found, returns the index @@ -1885,8 +1885,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) /** * @brief Find last position of a different character. * @param c Character to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character other than * @a c within this string. If found, returns the index where it was Modified: vendor/gcc/dist/libstdc++/include/bits/fstream.tcc ============================================================================== --- vendor/gcc/dist/libstdc++/include/bits/fstream.tcc Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/bits/fstream.tcc Tue Jul 3 06:54:37 2012 (r238052) @@ -194,7 +194,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const bool __testin = _M_mode & ios_base::in; if (__testin && !_M_writing) { - // Check for pback madness, and if so swich back to the + // Check for pback madness, and if so switch back to the // normal buffers and jet outta here before expensive // fileops happen... _M_destroy_pback(); Modified: vendor/gcc/dist/libstdc++/include/bits/locale_facets.tcc ============================================================================== --- vendor/gcc/dist/libstdc++/include/bits/locale_facets.tcc Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/bits/locale_facets.tcc Tue Jul 3 06:54:37 2012 (r238052) @@ -1,6 +1,7 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +// 2006, 2007, 2008 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -117,6 +118,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) return static_cast(*__facets[__i]); } + // Routine to access a cache for the facet. If the cache didn't // exist before, it gets constructed on the fly. template @@ -1015,13 +1017,13 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE if (__builtin_expect(__dec, true)) { // Decimal. - if (__v > 0) + if (__v >= 0) { if (__flags & ios_base::showpos && numeric_limits<_ValueT>::is_signed) *--__cs = __lit[__num_base::_S_oplus], ++__len; } - else if (__v) + else *--__cs = __lit[__num_base::_S_ominus], ++__len; } else if (__flags & ios_base::showbase && __v) Modified: vendor/gcc/dist/libstdc++/include/ext/atomicity.h ============================================================================== --- vendor/gcc/dist/libstdc++/include/ext/atomicity.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/ext/atomicity.h Tue Jul 3 06:54:37 2012 (r238052) @@ -42,7 +42,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) // Functions for portable atomic access. - // To abstract locking primatives across all thread policies, use: + // To abstract locking primitives across all thread policies, use: // __exchange_and_add_dispatch // __atomic_add_dispatch #ifdef _GLIBCXX_ATOMIC_BUILTINS Modified: vendor/gcc/dist/libstdc++/include/ext/codecvt_specializations.h ============================================================================== --- vendor/gcc/dist/libstdc++/include/ext/codecvt_specializations.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/ext/codecvt_specializations.h Tue Jul 3 06:54:37 2012 (r238052) @@ -128,7 +128,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) bool good() const throw() { - const descriptor_type __err = reinterpret_cast(-1); + const descriptor_type __err = (iconv_t)(-1); bool __test = _M_in_desc && _M_in_desc != __err; __test &= _M_out_desc && _M_out_desc != __err; return __test; @@ -166,7 +166,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) void init() { - const descriptor_type __err = reinterpret_cast(-1); + const descriptor_type __err = (iconv_t)(-1); const bool __have_encodings = _M_int_enc.size() && _M_ext_enc.size(); if (!_M_in_desc && __have_encodings) { @@ -199,7 +199,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) void destroy() throw() { - const descriptor_type __err = reinterpret_cast(-1); + const descriptor_type __err = (iconv_t)(-1); if (_M_in_desc && _M_in_desc != __err) { iconv_close(_M_in_desc); Modified: vendor/gcc/dist/libstdc++/include/ext/concurrence.h ============================================================================== --- vendor/gcc/dist/libstdc++/include/ext/concurrence.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/ext/concurrence.h Tue Jul 3 06:54:37 2012 (r238052) @@ -46,7 +46,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) // Available locking policies: // _S_single single-threaded code that doesn't need to be locked. // _S_mutex multi-threaded code that requires additional support - // from gthr.h or abstraction layers in concurrance.h. + // from gthr.h or abstraction layers in concurrence.h. // _S_atomic multi-threaded code using atomic operations. enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; Modified: vendor/gcc/dist/libstdc++/include/ext/vstring.h ============================================================================== --- vendor/gcc/dist/libstdc++/include/ext/vstring.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/ext/vstring.h Tue Jul 3 06:54:37 2012 (r238052) @@ -1407,7 +1407,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find position of a character of C substring. * @param s String containing characters to locate. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to search for. * @return Index of first occurrence. * @@ -1468,7 +1468,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character of C substring. * @param s C string containing characters to locate. - * @param pos Index of character to search back from (default end). + * @param pos Index of character to search back from. * @param n Number of characters from s to search for. * @return Index of last occurrence. * @@ -1499,7 +1499,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character. * @param c Character to locate. - * @param pos Index of character to search back from (default 0). + * @param pos Index of character to search back from (default end). * @return Index of last occurrence. * * Starting from @a pos, searches backward for @a c within this string. @@ -1529,7 +1529,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search from. * @param n Number of characters from s to consider. * @return Index of first occurrence. * @@ -1574,8 +1574,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character not in string. * @param str String containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a str within this string. If found, returns the index @@ -1589,9 +1589,9 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a character not in C substring. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). + * @param pos Index of character to search back from. * @param n Number of characters from s to consider. - * @return Index of first occurrence. + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in the first @a n characters of @a s within this string. @@ -1602,10 +1602,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const; /** - * @brief Find position of a character not in C string. + * @brief Find last position of a character not in C string. * @param s C string containing characters to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character not * contained in @a s within this string. If found, returns the index @@ -1621,8 +1621,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) /** * @brief Find last position of a different character. * @param c Character to avoid. - * @param pos Index of character to search from (default 0). - * @return Index of first occurrence. + * @param pos Index of character to search back from (default end). + * @return Index of last occurrence. * * Starting from @a pos, searches backward for a character other than * @a c within this string. If found, returns the index where it was Modified: vendor/gcc/dist/libstdc++/include/tr1/boost_shared_ptr.h ============================================================================== --- vendor/gcc/dist/libstdc++/include/tr1/boost_shared_ptr.h Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/tr1/boost_shared_ptr.h Tue Jul 3 06:54:37 2012 (r238052) @@ -857,7 +857,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) // Q: How can we get here? // A: Another thread may have invalidated r after the // use_count test above. - return __shared_ptr(); + return __shared_ptr(); } #else Modified: vendor/gcc/dist/libstdc++/include/tr1/random ============================================================================== --- vendor/gcc/dist/libstdc++/include/tr1/random Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/include/tr1/random Tue Jul 3 06:54:37 2012 (r238052) @@ -1618,10 +1618,15 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1) result_type _M_call(_UniformRandomNumberGenerator& __urng, result_type __min, result_type __max, true_type) - { + { + // XXX Must be fixed to also work when __urng.max() - __urng.min() + // is smaller than __max - __min. typedef typename __gnu_cxx::__add_unsigned::__type __utype; - return result_type(__utype(__urng()) % (__max - __min + 1)) + __min; + return result_type((__max - __min + 1.0L) + * (__utype(__urng()) - __utype(__urng.min())) + / (__utype(__urng.max()) + - __utype(__urng.min()) + 1.0L)) + __min; } template Modified: vendor/gcc/dist/libstdc++/libsupc++/eh_personality.cc ============================================================================== --- vendor/gcc/dist/libstdc++/libsupc++/eh_personality.cc Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/libsupc++/eh_personality.cc Tue Jul 3 06:54:37 2012 (r238052) @@ -1,5 +1,5 @@ // -*- C++ -*- The GNU C++ exception personality routine. -// Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2006, 2008 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -434,7 +434,7 @@ PERSONALITY_FUNCTION (int version, // Parse the LSDA header. p = parse_lsda_header (context, language_specific_data, &info); info.ttype_base = base_of_encoded_value (info.ttype_encoding, context); -#ifdef HAVE_GETIPINFO +#ifdef _GLIBCXX_HAVE_GETIPINFO ip = _Unwind_GetIPInfo (context, &ip_before_insn); #else ip = _Unwind_GetIP (context); Modified: vendor/gcc/dist/libstdc++/libsupc++/typeinfo ============================================================================== --- vendor/gcc/dist/libstdc++/libsupc++/typeinfo Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/libsupc++/typeinfo Tue Jul 3 06:54:37 2012 (r238052) @@ -99,7 +99,13 @@ namespace std #endif bool operator!=(const type_info& __arg) const { return !operator==(__arg); } - + + // Return true if this is a pointer type of some kind + virtual bool __is_pointer_p() const; + + // Return true if this is a function type + virtual bool __is_function_p() const; + // Try and catch a thrown type. Store an adjusted pointer to the // caught type in THR_OBJ. If THR_TYPE is not a pointer type, then // THR_OBJ points to the thrown object. If THR_TYPE is a pointer @@ -113,12 +119,6 @@ namespace std virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, void **__obj_ptr) const; - // Return true if this is a pointer type of some kind - virtual bool __is_pointer_p() const; - - // Return true if this is a function type - virtual bool __is_function_p() const; - protected: const char *__name; Added: vendor/gcc/dist/libstdc++/scripts/check_compile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/gcc/dist/libstdc++/scripts/check_compile Tue Jul 3 06:54:37 2012 (r238052) @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +# Script to do performance testing. + +# Invocation +# check_performance SRC_DIR BUILD_DIR + +# 1: variables +# +SRC_DIR=$1 +BUILD_DIR=$2 + +# Now that we've successfully translated the numerical option into +# a symbolic one, we can safely ignore it. +shift + +# This has been true all along. Found out about it the hard way... +case $BASH_VERSION in + 1*) + echo 'You need bash 2.x to run check_performance. Exiting.'; + exit 1 ;; + *) ;; +esac + +flags_script=$BUILD_DIR/scripts/testsuite_flags +INCLUDES=`$flags_script --build-includes` +PCH_FLAGS=`$flags_script --cxxpchflags` +FLAGS=`$flags_script --cxxflags` +TEST_FLAGS="-S" +COMPILER=`$flags_script --build-cxx` +CXX="$COMPILER $INCLUDES $PCH_FLAGS $FLAGS $TEST_FLAGS" + +echo "compile line is:" +echo $CXX +echo "" + +TESTS_FILE="testsuite_files" + +#mkdir binaries +UNIQUE_ID=0 + +for NAME in `cat $TESTS_FILE` +do + if $RUN; then + echo $NAME + OUTPUT_NAME=$UNIQUE_ID + $CXX $SRC_DIR/testsuite/$NAME -o $OUTPUT_NAME + if [ -f $OUTPUT_NAME ]; then +# mv $OUTPUT_NAME binaries + rm $OUTPUT_NAME + fi + echo "" + let UNIQUE_ID+=1 + fi +done + +exit 0 Modified: vendor/gcc/dist/libstdc++/src/valarray-inst.cc ============================================================================== --- vendor/gcc/dist/libstdc++/src/valarray-inst.cc Tue Jul 3 06:41:00 2012 (r238051) +++ vendor/gcc/dist/libstdc++/src/valarray-inst.cc Tue Jul 3 06:54:37 2012 (r238052) @@ -68,7 +68,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __gslice_to_index(size_t __o, const valarray& __l, const valarray& __s, valarray& __i) { - // There are as much as dimensions as there are strides. + // There are as many dimensions as there are strides. size_t __n = __l.size(); // Get a buffer to hold current multi-index as we go through From owner-svn-src-vendor@FreeBSD.ORG Tue Jul 3 06:55:50 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D4C5106564A; Tue, 3 Jul 2012 06:55:50 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4D7198FC16; Tue, 3 Jul 2012 06:55:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q636toQk026961; Tue, 3 Jul 2012 06:55:50 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q636tomL026960; Tue, 3 Jul 2012 06:55:50 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201207030655.q636tomL026960@svn.freebsd.org> From: "David E. O'Brien" Date: Tue, 3 Jul 2012 06:55:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238053 - vendor/gcc/4.2.4-20080519-SVN135556-libstdc++ X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2012 06:55:50 -0000 Author: obrien Date: Tue Jul 3 06:55:49 2012 New Revision: 238053 URL: http://svn.freebsd.org/changeset/base/238053 Log: "Tag" the r238052 libstdc++ version 4.2.4 import. Added: - copied from r238052, vendor/gcc/dist/libstdc++/ Directory Properties: vendor/gcc/4.2.4-20080519-SVN135556-libstdc++/ (props changed) From owner-svn-src-vendor@FreeBSD.ORG Wed Jul 4 14:21:41 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 47AF2106564A; Wed, 4 Jul 2012 14:21:41 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1AD1A8FC0A; Wed, 4 Jul 2012 14:21:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q64ELeH2015185; Wed, 4 Jul 2012 14:21:40 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q64ELe8a015184; Wed, 4 Jul 2012 14:21:40 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201207041421.q64ELe8a015184@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Wed, 4 Jul 2012 14:21:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238103 - in vendor: ldns ldns/dist unbound unbound/dist X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jul 2012 14:21:41 -0000 Author: des Date: Wed Jul 4 14:21:40 2012 New Revision: 238103 URL: http://svn.freebsd.org/changeset/base/238103 Log: Create vendor trees for ldns and unbound. Added: vendor/ldns/ vendor/ldns/dist/ vendor/unbound/ vendor/unbound/dist/ From owner-svn-src-vendor@FreeBSD.ORG Wed Jul 4 14:22:30 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2118A106566C; Wed, 4 Jul 2012 14:22:30 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 09C6B8FC08; Wed, 4 Jul 2012 14:22:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q64EMT0e015267; Wed, 4 Jul 2012 14:22:29 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q64EMThr015262; Wed, 4 Jul 2012 14:22:29 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201207041422.q64EMThr015262@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Wed, 4 Jul 2012 14:22:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238104 - in vendor/ldns/dist: . compat contrib contrib/ldnsx contrib/ldnsx/examples contrib/ldnsx/source contrib/ldnsx/source/api contrib/ldnsx/source/examples contrib/python contrib/p... X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jul 2012 14:22:30 -0000 Author: des Date: Wed Jul 4 14:22:28 2012 New Revision: 238104 URL: http://svn.freebsd.org/changeset/base/238104 Log: import ldns 1.6.13 Added: vendor/ldns/dist/Changelog vendor/ldns/dist/LICENSE vendor/ldns/dist/Makefile.in vendor/ldns/dist/README vendor/ldns/dist/README.snapshots vendor/ldns/dist/README.svn vendor/ldns/dist/aclocal.m4 vendor/ldns/dist/acx_nlnetlabs.m4 vendor/ldns/dist/ax_pkg_swig.m4 vendor/ldns/dist/ax_python_devel.m4 vendor/ldns/dist/buffer.c vendor/ldns/dist/compat/ vendor/ldns/dist/compat/b32_ntop.c vendor/ldns/dist/compat/b32_pton.c vendor/ldns/dist/compat/b64_ntop.c vendor/ldns/dist/compat/b64_pton.c vendor/ldns/dist/compat/calloc.c vendor/ldns/dist/compat/ctime_r.c vendor/ldns/dist/compat/fake-rfc2553.c vendor/ldns/dist/compat/fake-rfc2553.h vendor/ldns/dist/compat/gmtime_r.c vendor/ldns/dist/compat/inet_aton.c vendor/ldns/dist/compat/inet_ntop.c vendor/ldns/dist/compat/inet_pton.c vendor/ldns/dist/compat/isascii.c vendor/ldns/dist/compat/isblank.c vendor/ldns/dist/compat/localtime_r.c vendor/ldns/dist/compat/malloc.c vendor/ldns/dist/compat/memmove.c vendor/ldns/dist/compat/realloc.c vendor/ldns/dist/compat/snprintf.c vendor/ldns/dist/compat/strlcpy.c vendor/ldns/dist/compat/timegm.c vendor/ldns/dist/config.guess (contents, props changed) vendor/ldns/dist/config.sub (contents, props changed) vendor/ldns/dist/configure (contents, props changed) vendor/ldns/dist/configure.ac vendor/ldns/dist/contrib/ vendor/ldns/dist/contrib/NETLDNS.readme.txt vendor/ldns/dist/contrib/NETLDNS.tar.gz (contents, props changed) vendor/ldns/dist/contrib/build-solaris.sh (contents, props changed) vendor/ldns/dist/contrib/ldnsx/ vendor/ldns/dist/contrib/ldnsx/LICENSE vendor/ldns/dist/contrib/ldnsx/Makefile vendor/ldns/dist/contrib/ldnsx/README vendor/ldns/dist/contrib/ldnsx/examples/ vendor/ldns/dist/contrib/ldnsx/examples/ldnsx-axfr.py vendor/ldns/dist/contrib/ldnsx/examples/ldnsx-dnssec.py vendor/ldns/dist/contrib/ldnsx/examples/ldnsx-mx1.py vendor/ldns/dist/contrib/ldnsx/examples/ldnsx-mx2.py vendor/ldns/dist/contrib/ldnsx/examples/ldnsx-walk.py (contents, props changed) vendor/ldns/dist/contrib/ldnsx/ldnsx.py vendor/ldns/dist/contrib/ldnsx/source/ vendor/ldns/dist/contrib/ldnsx/source/api/ vendor/ldns/dist/contrib/ldnsx/source/api/ldnsx.rst vendor/ldns/dist/contrib/ldnsx/source/api/packet.rst vendor/ldns/dist/contrib/ldnsx/source/api/resolver.rst vendor/ldns/dist/contrib/ldnsx/source/api/resource_record.rst vendor/ldns/dist/contrib/ldnsx/source/conf.py vendor/ldns/dist/contrib/ldnsx/source/examples/ vendor/ldns/dist/contrib/ldnsx/source/examples/ldnsx-axfr.rst vendor/ldns/dist/contrib/ldnsx/source/examples/ldnsx-dnssec.rst vendor/ldns/dist/contrib/ldnsx/source/examples/ldnsx-mx1.rst vendor/ldns/dist/contrib/ldnsx/source/examples/ldnsx-mx2.rst vendor/ldns/dist/contrib/ldnsx/source/examples/ldnsx-walk.rst vendor/ldns/dist/contrib/ldnsx/source/index.rst vendor/ldns/dist/contrib/python/ vendor/ldns/dist/contrib/python/LICENSE vendor/ldns/dist/contrib/python/Makefile vendor/ldns/dist/contrib/python/docs/ vendor/ldns/dist/contrib/python/docs/Makefile vendor/ldns/dist/contrib/python/docs/source/ vendor/ldns/dist/contrib/python/docs/source/_static/ vendor/ldns/dist/contrib/python/docs/source/conf.py vendor/ldns/dist/contrib/python/docs/source/examples/ vendor/ldns/dist/contrib/python/docs/source/examples/example1.rst vendor/ldns/dist/contrib/python/docs/source/examples/example2.py (contents, props changed) vendor/ldns/dist/contrib/python/docs/source/examples/example2.rst vendor/ldns/dist/contrib/python/docs/source/examples/example3.rst vendor/ldns/dist/contrib/python/docs/source/examples/example4.rst vendor/ldns/dist/contrib/python/docs/source/examples/example5.rst vendor/ldns/dist/contrib/python/docs/source/examples/example6.rst vendor/ldns/dist/contrib/python/docs/source/examples/example7.rst vendor/ldns/dist/contrib/python/docs/source/examples/example8.rst vendor/ldns/dist/contrib/python/docs/source/examples/index.rst vendor/ldns/dist/contrib/python/docs/source/index.rst vendor/ldns/dist/contrib/python/docs/source/install.rst vendor/ldns/dist/contrib/python/docs/source/modules/ vendor/ldns/dist/contrib/python/docs/source/modules/ldns.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_buffer.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_dname.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_dnssec.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_func.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_key.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_key_list.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_pkt.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_rdf.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_resolver.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_rr.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_rr_list.rst vendor/ldns/dist/contrib/python/docs/source/modules/ldns_zone.rst vendor/ldns/dist/contrib/python/examples/ vendor/ldns/dist/contrib/python/examples/ldns-axfr.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-buf.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-dnssec.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-higher.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-keygen.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-mx.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-mx1.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-mx2.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-newpkt.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-signzone.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns-zone.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/ldns_rr_iter_frm_fp_l.demo.py vendor/ldns/dist/contrib/python/examples/ldns_rr_new_frm_fp_l.demo.py vendor/ldns/dist/contrib/python/examples/python3/ vendor/ldns/dist/contrib/python/examples/python3/ldns-axfr.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-buf.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-dnssec.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-higher.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-keygen.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-mx.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-mx1.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-mx2.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-newpkt.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns-zone.py (contents, props changed) vendor/ldns/dist/contrib/python/examples/python3/ldns_rr_iter_frm_fp_l.demo.py vendor/ldns/dist/contrib/python/examples/python3/ldns_rr_new_frm_fp_l.demo.py vendor/ldns/dist/contrib/python/examples/zone.txt vendor/ldns/dist/contrib/python/file_py3.i vendor/ldns/dist/contrib/python/ldns.i vendor/ldns/dist/contrib/python/ldns_buffer.i vendor/ldns/dist/contrib/python/ldns_dname.i vendor/ldns/dist/contrib/python/ldns_dnssec.i vendor/ldns/dist/contrib/python/ldns_key.i vendor/ldns/dist/contrib/python/ldns_packet.i vendor/ldns/dist/contrib/python/ldns_rdf.i vendor/ldns/dist/contrib/python/ldns_resolver.i vendor/ldns/dist/contrib/python/ldns_rr.i vendor/ldns/dist/contrib/python/ldns_zone.i vendor/ldns/dist/dname.c vendor/ldns/dist/dnssec.c vendor/ldns/dist/dnssec_sign.c vendor/ldns/dist/dnssec_verify.c vendor/ldns/dist/dnssec_zone.c vendor/ldns/dist/doc/ vendor/ldns/dist/doc/API-header.xml (contents, props changed) vendor/ldns/dist/doc/API.xml (contents, props changed) vendor/ldns/dist/doc/CodingStyle vendor/ldns/dist/doc/TODO vendor/ldns/dist/doc/design.dox vendor/ldns/dist/doc/dns-lib-implementations vendor/ldns/dist/doc/doxyparse.pl (contents, props changed) vendor/ldns/dist/doc/function_manpages vendor/ldns/dist/doc/header.html vendor/ldns/dist/doc/images/ vendor/ldns/dist/doc/images/LogoInGradientBar2-y100.png (contents, props changed) vendor/ldns/dist/doc/images/libdnsoverview.png (contents, props changed) vendor/ldns/dist/doc/images/libdnsoverview.svg (contents, props changed) vendor/ldns/dist/doc/libdns.css vendor/ldns/dist/doc/tutorial1_mx.dox vendor/ldns/dist/doc/tutorial2_zone.dox vendor/ldns/dist/doc/tutorial3_signzone.dox vendor/ldns/dist/drill/ vendor/ldns/dist/drill/ChangeLog.22-nov-2005 vendor/ldns/dist/drill/Makefile.in vendor/ldns/dist/drill/README vendor/ldns/dist/drill/REGRESSIONS vendor/ldns/dist/drill/chasetrace.c vendor/ldns/dist/drill/config.h.in vendor/ldns/dist/drill/configure (contents, props changed) vendor/ldns/dist/drill/configure.ac vendor/ldns/dist/drill/dnssec.c vendor/ldns/dist/drill/drill.1 vendor/ldns/dist/drill/drill.c vendor/ldns/dist/drill/drill.h vendor/ldns/dist/drill/drill_util.c vendor/ldns/dist/drill/drill_util.h vendor/ldns/dist/drill/error.c vendor/ldns/dist/drill/install-sh (contents, props changed) vendor/ldns/dist/drill/root.c vendor/ldns/dist/drill/securetrace.c vendor/ldns/dist/drill/work.c vendor/ldns/dist/duration.c vendor/ldns/dist/error.c vendor/ldns/dist/examples/ vendor/ldns/dist/examples/Makefile.in vendor/ldns/dist/examples/README vendor/ldns/dist/examples/config.h.in vendor/ldns/dist/examples/configure (contents, props changed) vendor/ldns/dist/examples/configure.ac vendor/ldns/dist/examples/fake-rfc2553.h vendor/ldns/dist/examples/ldns-chaos.1 vendor/ldns/dist/examples/ldns-chaos.c vendor/ldns/dist/examples/ldns-compare-zones.1 vendor/ldns/dist/examples/ldns-compare-zones.c vendor/ldns/dist/examples/ldns-dpa.1 vendor/ldns/dist/examples/ldns-dpa.c vendor/ldns/dist/examples/ldns-dpa.h vendor/ldns/dist/examples/ldns-gen-zone.1 vendor/ldns/dist/examples/ldns-gen-zone.c vendor/ldns/dist/examples/ldns-key2ds.1 vendor/ldns/dist/examples/ldns-key2ds.c vendor/ldns/dist/examples/ldns-keyfetcher.1 vendor/ldns/dist/examples/ldns-keyfetcher.c vendor/ldns/dist/examples/ldns-keygen.1 vendor/ldns/dist/examples/ldns-keygen.c vendor/ldns/dist/examples/ldns-mx.1 vendor/ldns/dist/examples/ldns-mx.c vendor/ldns/dist/examples/ldns-notify.1 vendor/ldns/dist/examples/ldns-notify.c vendor/ldns/dist/examples/ldns-nsec3-hash.1 vendor/ldns/dist/examples/ldns-nsec3-hash.c vendor/ldns/dist/examples/ldns-read-zone.1 vendor/ldns/dist/examples/ldns-read-zone.c vendor/ldns/dist/examples/ldns-resolver.1 vendor/ldns/dist/examples/ldns-resolver.c vendor/ldns/dist/examples/ldns-revoke.1 vendor/ldns/dist/examples/ldns-revoke.c vendor/ldns/dist/examples/ldns-rrsig.1 vendor/ldns/dist/examples/ldns-rrsig.c vendor/ldns/dist/examples/ldns-signzone.1 vendor/ldns/dist/examples/ldns-signzone.c vendor/ldns/dist/examples/ldns-test-edns.1 vendor/ldns/dist/examples/ldns-test-edns.c vendor/ldns/dist/examples/ldns-testns.1 vendor/ldns/dist/examples/ldns-testns.c vendor/ldns/dist/examples/ldns-testpkts.c vendor/ldns/dist/examples/ldns-testpkts.h vendor/ldns/dist/examples/ldns-update.1 vendor/ldns/dist/examples/ldns-update.c vendor/ldns/dist/examples/ldns-verify-zone.1 vendor/ldns/dist/examples/ldns-verify-zone.c vendor/ldns/dist/examples/ldns-version.1 vendor/ldns/dist/examples/ldns-version.c vendor/ldns/dist/examples/ldns-walk.1 vendor/ldns/dist/examples/ldns-walk.c vendor/ldns/dist/examples/ldns-zcat.1 vendor/ldns/dist/examples/ldns-zcat.c vendor/ldns/dist/examples/ldns-zsplit.1 vendor/ldns/dist/examples/ldns-zsplit.c vendor/ldns/dist/examples/ldnsd.1 vendor/ldns/dist/examples/ldnsd.c vendor/ldns/dist/higher.c vendor/ldns/dist/host2str.c vendor/ldns/dist/host2wire.c vendor/ldns/dist/install-sh (contents, props changed) vendor/ldns/dist/keys.c vendor/ldns/dist/ldns/ vendor/ldns/dist/ldns/buffer.h vendor/ldns/dist/ldns/common.h.in vendor/ldns/dist/ldns/config.h.in vendor/ldns/dist/ldns/dname.h vendor/ldns/dist/ldns/dnssec.h vendor/ldns/dist/ldns/dnssec_sign.h vendor/ldns/dist/ldns/dnssec_verify.h vendor/ldns/dist/ldns/dnssec_zone.h vendor/ldns/dist/ldns/duration.h vendor/ldns/dist/ldns/error.h vendor/ldns/dist/ldns/higher.h vendor/ldns/dist/ldns/host2str.h vendor/ldns/dist/ldns/host2wire.h vendor/ldns/dist/ldns/keys.h vendor/ldns/dist/ldns/ldns.h vendor/ldns/dist/ldns/net.h.in vendor/ldns/dist/ldns/packet.h vendor/ldns/dist/ldns/parse.h vendor/ldns/dist/ldns/rbtree.h vendor/ldns/dist/ldns/rdata.h vendor/ldns/dist/ldns/resolver.h vendor/ldns/dist/ldns/rr.h vendor/ldns/dist/ldns/rr_functions.h vendor/ldns/dist/ldns/sha1.h vendor/ldns/dist/ldns/sha2.h vendor/ldns/dist/ldns/str2host.h vendor/ldns/dist/ldns/tsig.h vendor/ldns/dist/ldns/update.h vendor/ldns/dist/ldns/util.h.in vendor/ldns/dist/ldns/wire2host.h vendor/ldns/dist/ldns/zone.h vendor/ldns/dist/ldns_symbols.def vendor/ldns/dist/libdns.doxygen vendor/ldns/dist/libdns.vim vendor/ldns/dist/linktest.c vendor/ldns/dist/ltmain.sh (contents, props changed) vendor/ldns/dist/net.c vendor/ldns/dist/packaging/ vendor/ldns/dist/packaging/fedora/ vendor/ldns/dist/packaging/fedora/ldns.spec vendor/ldns/dist/packaging/ldns-config.1 vendor/ldns/dist/packaging/ldns-config.in (contents, props changed) vendor/ldns/dist/packaging/libldns.pc.in vendor/ldns/dist/packet.c vendor/ldns/dist/parse.c vendor/ldns/dist/rbtree.c vendor/ldns/dist/rdata.c vendor/ldns/dist/resolver.c vendor/ldns/dist/rr.c vendor/ldns/dist/rr_functions.c vendor/ldns/dist/sha1.c vendor/ldns/dist/sha2.c vendor/ldns/dist/str2host.c vendor/ldns/dist/tsig.c vendor/ldns/dist/update.c vendor/ldns/dist/util.c vendor/ldns/dist/wire2host.c vendor/ldns/dist/zone.c Added: vendor/ldns/dist/Changelog ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/ldns/dist/Changelog Wed Jul 4 14:22:28 2012 (r238104) @@ -0,0 +1,704 @@ +1.6.13 2012-05-21 + * New -S option for ldns-verify-zone to chase signatures online. + * New -k option for ldns-verify-zone to validate using a trusted key. + * New inception and expiration margin options (-i and -e) to + ldns-verify-zone. + * New ldns_dnssec_zone_new_frm_fp and ldns_dnssec_zone_new_frm_fp_l + functions. + * New ldns_duration* functions (copied from OpenDNSSEC source) + * fix ldns-verify-zone to allow NSEC3 signatures to come before + the NSEC3 RR in all cases. Thanks Wolfgang Nagele. + * Zero the correct flag (opt-out) when creating NSEC3PARAMS. + Thanks Peter van Dijk. + * Canonicalize RRSIG's Signer's name too when validating, because + bind and unbound do that too. Thanks Peter van Dijk. + * bugfix #433: Allocate rdf using ldns_rdf_new in ldns_dname_label + * bugfix #432: Use LDNS_MALLOC & LDNS_FREE i.s.o. malloc & free + * bugfix #431: Added error message for LDNS_STATUS_INVALID_B32_EXT + * bugfix #427: Explicitely link ssl with the programs that use it. + * Fix reading \DDD: Error on values that are outside range (>255). + * bugfix #429: fix doxyparse.pl fails on NetBSD because specified + path to perl. + * New ECDSA support (RFC 6605), use --disable-ecdsa for older openssl. + * fix verifying denial of existence for DS's in NSEC3 Opt-Out zones. + Thanks John Barnitz + +1.6.12 2012-01-11 + * bugfix #413: Fix manpage source for srcdir != builddir + * Canonicalize the signers name rdata field in RRSIGs when signing + * Ignore minor version of Private-key-format (so v1.3 may be used) + * Allow a check_time to be given in stead of always checking against + the current time. With ldns-verify-zone the check_time can be set + with the -t option. + * Added functions for updating and manipulating SOA serial numbers. + ldns-read-zone has an option -S for updating and manipulating the + serial numbers. + * The library Makefile is now GNU and BSD make compatible. + * bugfix #419: NSEC3 validation of a name covered by a wildcard with + no data. + * Two new options (--with-drill and --with-examples) to the main + configure script (in the root of the source tree) to build drill + and examples too. + * Fix days_since_epoch to year_yday calculation on 32bits systems. + +1.6.11 2011-09-29 + * bugfix #394: Fix socket leak on errors + * bugfix #392: Apex only and percentage checks for ldns-verify-zone + (thanks Miek Gieben) + * bugfix #398: Allow NSEC RRSIGs before the NSEC3 in ldns-verify-zone + * Fix python site package path from sitelib to sitearch for pyldns. + * Fix python api to support python2 and python3 (thanks Karel Slany). + * bugfix #401: Correction of date/time functions algorithm and + prevention of an infinite loop therein + * bugfix #402: Correct the minimum and maximum number of rdata fields + in TSIG. (thanks David Keeler) + * bugfix #403: Fix heap overflow (thanks David Keeler) + * bugfix #404: Make parsing APL strings more robust + (thanks David Keeler) + * bugfix #391: Complete library assessment to prevent assertion errors + through ldns_rdf_size usage. + * Slightly more specific error messaging on wrong number of rdata + fields with the LDNS_STATUS_MISSING_RDATA_FIELDS_RRSIG and + LDNS_STATUS_MISSING_RDATA_FIELDS_KEY result codes. + * bugfix #406: More rigorous openssl result code handling to prevent + future crashes within openssl. + * Fix ldns_fetch_valid_domain_keys to search deeper than just one level + for a DNSKEY that signed a DS RR. (this function was used in the + check_dnssec_trace nagios module) + * bugfix #407: Canonicalize TSIG dnames and algorithm fields + * A new output specifier to accommodate configuration of what to show + in comment texts when converting host and/or wire-format data to + string. All conversion to string and printing functions have a new + version that have such a format specifier as an extra argument. + The default is changed so that only DNSKEY RR's are annotated with + an comment show the Key Tag of the DNSKEY. + * Fixed the ldns resolver to not mark a nameserver unreachable when + edns0 is tried unsuccessfully with size 4096 (no return packet came), + but to still try TCP. A big UDP packet might have been corrupted by + fragments dropping firewalls. + * Update of libdns.vim (thanks Miek Gieben) + * Added the ldnsx Python module to our contrib section, which adds even + more pythonisticism to the usage of ldns with Python. (Many thanks + to Christpher Olah and Paul Wouters) + The ldnsx module is automatically installed when --with-pyldns is + used with configuring, but may explicitly be excluded with the + --without-pyldnsx option to configure. + * bugfix #410: Fix clearing out temporary data on stack in sha2.c + * bugfix #411: Don't let empty non-terminal NSEC3s cause assertion failure. + +1.6.10 2011-05-31 + * New example tool added: ldns-gen-zone. + * bugfix #359: Serial-arithmetic for the inception and expiration + fields of a RRSIG and correctly converting them to broken-out time + information. + * bugfix #364: Slight performance increase of ldns-verifyzone. + * bugfix #367: Fix to allow glue records with the same name as the + delegation. + * Fix ldns-verifyzone to allow NSEC3-less records for NS rrsets *and* + glue when the zone is opt-out. + * bugfix #376: Adapt ldns_nsec3_salt, ldns_nsec3_iterations, + ldns_nsec3_flags and ldns_nsec3_algorithm to work for NSEC3PARAMS too. + * pyldns memory leaks fixed by Bedrich Kosata (at the cost of a bit + performance) + * Better handling of reference variables in ldns_rr_new_frm_fp_l from + pyldns, with a very nice generator function by Bedrich Kosata. + * Decoupling of the rdfs in rrs in the python wrappers to enable + the python garbage collector by Bedrich Kosata. + * bugfix #380: Minimizing effect of discrepancies in sizeof(bool) at + build time and when used. + * bugfix #383: Fix detection of empty nonterminals of multiple labels. + * Fixed the ommission of rrsets in nsec(3)s and rrsigs to all occluded + names (in stead of just the ones that contain glue only) and all + occluded records on the delegation points (in stead of just the glue). + * Clarify the operation of ldns_dnssec_mark_glue and the usage of + ldns_dnssec_node_next_nonglue functions in the documentation. + * Added function ldns_dnssec_mark_and_get_glue as an real fast + alternative for ldns_zone_glue_rr_list. + * Fix parse buffer overflow for max length domain names. + * Fix Makefile for U in environment, since wrong U is more common than + deansification necessity. + +1.6.9 2011-03-16 + * Fix creating NSEC(3) bitmaps: make array size 65536, + don't add doubles. + * Fix printout of escaped binary in TXT records. + * Parsing TXT records: don't skip starting whitespace that is quoted. + * bugfix #358: Check if memory was successfully allocated in + ldns_rdf2str(). + * Added more memory allocation checks in host2str.c + * python wrapper for ldns_fetch_valid_domain_keys by Bedrich Kosata. + * fix to compile python wrapper with swig 2.0.2. + * Don't fallback to SHA-1 when creating NSEC3 hash with another + algorithm identifier, fail instead (no other algorithm identifiers + are assigned yet). + +1.6.8 2011-01-24 + * Fix ldns zone, so that $TTL definition match RFC 2308. + * Fix lots of missing checks on allocation failures and parse of + NSEC with many types and max parse length in hosts_frm_fp routine + and off by one in read_anchor_file routine (thanks Dan Kaminsky and + Justin Ferguson). + * bugfix #335: Drill: Print both SHA-1 and SHA-256 corresponding DS + records. + * Print correct WHEN in query packet (is not always 1-1-1970) + * ldns-test-edns: new example tool that detects EDNS support. + * fix ldns_resolver_send without openssl. + * bugfix #342: patch for support for more CERT key types (RFC4398). + * bugfix #351: fix udp_send hang if UDP checksum error. + * fix set_bit (from NSEC3 sign) patch from Jan Komissar. + +1.6.7 2010-11-08 + * EXPERIMENTAL ecdsa implementation, please do not enable on real + servers. + * GOST code enabled by default (RFC 5933). + * bugfix #326: ignore whitespace between directives and their values. + * Header comment to advertise ldns_axfr_complete to check for + successfully completed zone transfers. + * read resolv.conf skips interface labels, e.g. %eth0. + * Fix drill verify NSEC3 denials. + * Use closesocket() on windows. + * Add ldns_get_signing_algorithm_by_name that understand aliases, + names changed to RFC names and aliases for compatibility added. + * bugfix: don't print final dot if the domain is relative. + * bugfix: resolver search continue when packet rcode != NOERROR. + * bugfix: resolver push all domains in search directive to list. + * bugfix: resolver search by default includes the root domain. + * bugfix: tcp read could fail on single octet recv. + * bugfix: read of RR in unknown syntax with missing fields. + * added ldns_pkt_tsig_sign_next() and ldns_pkt_tsig_verify_next() + to sign and verify TSIG RRs on subsequent messages + (section 4.4, RFC 2845, thanks to Michael Sheldon). + * bugfix: signer sigs nsecs with zsks only. + * bugfix #333: fix ldns_dname_absolute for name ending with backslash. + +1.6.6 2010-08-09 + * Fix ldns_rr_clone to copy question rrs properly. + * Fix ldns_sign_zone(_nsec3) to clone the soa for the new zone. + * Fix ldns_wire2dname size check from reading 1 byte beyond buffer end. + * Fix ldns_wire2dname from reading 1 byte beyond end for pointer. + * Fix crash using GOST for particular platform configurations. + * extern C declarations used in the header file. + * Removed debug fprintf from resolver.c. + * ldns-signzone checks if public key file is for the right zone. + * NETLDNS, .NET port of ldns functionality, by Alex Nicoll, in contrib. + * Fix handling of comments in resolv.conf parse. + * GOST code enabled if SSL recent, RFC 5933. + * bugfix #317: segfault util.c ldns_init_random() fixed. + * Fix ldns_tsig_mac_new: allocate enough memory for the hash, fix use of + b64_pton_calculate_size. + * Fix ldns_dname_cat: size calculation and handling of realloc(). + * Fix ldns_rr_pop_rdf: fix handling of realloc(). + * Fix ldns-signzone for single type key scheme: sign whole zone if there + are only KSKs. + * Fix ldns_resolver: also close socket if AXFR failed (if you don't, + it would block subsequent transfers (thanks Roland van Rijswijk). + * Fix drill: allow for a secure trace if you use DS records as trust + anchors (thanks Jan Komissar). + +1.6.5 2010-06-15 + * Catch \X where X is a digit as an error. + * Fix segfault when ip6 ldns resolver only has ip4 servers. + * Fix NSEC record after DNSKEY at zone apex not properly signed. + * Fix syntax error if last label too long and no dot at end of domain. + * Fix parse of \# syntax with space for type LOC. + * Fix ldns_dname_absolute for escape sequences, fixes some parse errs. + * bugfix #297: linking ssl, bug due to patch submitted as #296. + * bugfix #299: added missing declarations to host2str.h + * ldns-compare-zones -s to not exclude SOA record from comparison. + * --disable-rpath fix + * fix ldns_pkt_empty(), reported by Alex Nicoll. + * fix ldns_resolver_new_frm_fp not ignore lines after a comment. + * python code for ldns_rr.new_question_frm_str() + * Fix ldns_dnssec_verify_denial: the signature selection routine. + * Type TALINK parsed (draft-ietf-dnsop-trust-history). + * bugfix #304: fixed dead loop in ldns_tcp_read_wire() and + ldns_tcp_read_wire_timeout(). + * GOST support with correct algorithm numbers. The plan is to make it + enabled if openssl support is detected, but it is disabled by + default in this release because the RFC is not ready. + * Fixed comment in rbtree.h about being first member and data ptr. + * Fixed possibly leak in case of out of memory in ldns_native2rdf... + * ldns_dname_is_wildcard added. + * Fixed: signatures over wildcards had the wrong labelcount. + * Fixed ldns_verify() inconsistent return values. + * Fixed ldns_resolver to copy and free tsig name, data and algorithm. + * Fixed ldns_resolver to push search onto searchlist. + * A ldns resolver now defaults to a non-recursive resolver that handles + the TC bit. + * ldns_resolver_print() prints more details. + * Fixed ldns_rdf2buffer_str_time(), which did not print timestamps + on 64bit systems. + * Make ldns_resolver_nameservers_randomize() more random. + * bugfix #310: POSIX specifies NULL second argument of gettimeofday. + * fix compiler warnings from llvm clang compiler. + * bugfix #309: ldns_pkt_clone did not clone the tsig_rr. + * Fix gentoo ebuild for drill, 'no m4 directory'. + * bugfix #313: drill trace on an empty nonterminal continuation. + +1.6.4 2010-01-20 + * Imported pyldns contribution by Zdenek Vasicek and Karel Slany. + Changed its configure and Makefile to fit into ldns. + Added its dname_* methods to the rdf_* class (as is the ldns API). + Changed swig destroy of ldns_buffer class to ldns_buffer_free. + Declared ldns_pkt_all and ldns_pkt_all_noquestion so swig sees them. + * Bugfix: parse PTR target of .tomhendrikx.nl with error not crash. + * Bugfix: handle escaped characters in TXT rdata. + * bug292: no longer crash on malformed domain names where a label is + on position 255, which was a buffer overflow by one. + * Fix ldns_get_rr_list_hosts_frm_fp_l (strncpy to strlcpy change), + which fixes resolv.conf reading badly terminated string buffers. + * Fix ldns_pkt_set_random_id to be more random, and a little faster, + it did not do value 0 statistically correctly. + * Fix ldns_rdf2native_sockaddr_storage to set sockaddr type to zeroes, + for portability. + * bug295: nsec3-hash routine no longer case sensitive. + * bug298: drill failed nsec3 denial of existence proof. + +1.6.3 2009-12-04 + * Bugfix: allow for unknown resource records in zonefile with rdlen=0. + * Bugfix: also mark an RR as question if it comes from the wire + * Bugfix: NSEC3 bitmap contained NSEC + * Bugfix: Inherit class when creating signatures + +1.6.2 2009-11-12 + * Fix Makefile patch from Havard Eidnes, better install.sh usage. + * Fix parse error on SOA serial of 2910532839. + Fix print of ';' and readback of '\;' in names, also for '\\'. + Fix parse of '\(' and '\)' in names. Also for file read. Also '\.' + * Fix signature creation when TTLs are different for RRs in RRset. + * bug273: fix so EDNS rdata is included in pkt to wire conversion. + * bug274: fix use of c++ keyword 'class' for RR class in the code. + * bug275: fix memory leak of packet edns rdata. + * Fix timeout procedure for TCP and AXFR on Solaris. + * Fix occasional NSEC bitmap bogus + * Fix rr comparing (was in reversed order since 1.6.0) + * bug278: fix parsing HINFO rdata (and other cases). + * Fix previous owner name: also pick up if owner name is @. + * RFC5702: enabled sha2 functions by default. This requires OpenSSL 0.9.8 or higher. + Reason for this default is the root to be signed with RSASHA256. + * Fix various LDNS RR parsing issues: IPSECKEY, WKS, NSAP, very long lines + * Fix: Make ldns_dname_is_subdomain case insensitive. + * Fix ldns-verify-zone so that address records at zone NS set are not considered glue + (Or glue records fall below delegation) + * Fix LOC RR altitude printing. + * Feature: Added period (e.g. '3m6d') support at explicit TTLs. + * Feature: DNSKEY rrset by default signed with minimal signatures + but -A option for ldns-signzone to sign it with all keys. + This makes the DNSKEY responses smaller for signed domains. + +1.6.1 2009-09-14 + * --enable-gost : use the GOST algorithm (experimental). + * Added some missing options to drill manpage + * Some fixes to --without-ssl option + * Fixed quote parsing withing strings + * Bitmask fix in EDNS handling + * Fixed non-fqdn domain name completion for rdata field domain + names of length 1 + * Fixed chain validation with SHA256 DS records + +1.6.0 + Additions: + * Addition of an ldns-config script which gives cflags and libs + values, for use in configure scripts for applications that use + use ldns. Can be disabled with ./configure --disable-ldns-config + * Added direct sha1, sha256, and sha512 support in ldns. + With these functions, all NSEC3 functionality can still be + used, even if ldns is built without OpenSSL. Thanks to OpenBSD, + Steve Reid, and Aaron D. Gifford for the code. + * Added reading/writing support for the SPF Resource Record + * Base32 functions are now exported + Bugfixes: + * ldns_is_rrset did not go through the complete rrset, but + only compared the first two records. Thanks to Olafur + Gudmundsson for report and patch + * Fixed a small memory bug in ldns_rr_list_subtype_by_rdf(), + thanks to Marius Rieder for finding an patching this. + * --without-ssl should now work. Make sure that examples/ and + drill also get the --without-ssl flag on their configure, if + this is used. + * Some malloc() return value checks have been added + * NSEC3 creation has been improved wrt to empty nonterminals, + and opt-out. + * Fixed a bug in the parser when reading large NSEC3 salt + values. + * Made the allowed length for domain names on wire + and presentation format the same. + Example tools: + * ldns-key2ds can now also generate DS records for keys without + the SEP flag + * ldns-signzone now equalizes the TTL of the DNSKEY RRset (to + the first non-default DNSKEY TTL value it sees) + +1.5.1 + Example tools: + * ldns-signzone was broken in 1.5.0 for multiple keys, this + has been repaired + + Build system: + * Removed a small erroneous output warning in + examples/configure and drill/configure + +1.5.0 + Bug fixes: + * fixed a possible memory overflow in the RR parser + * build flag fix for Sun Studio + * fixed a building race condition in the copying of header + files + * EDNS0 extended rcode; the correct assembled code number + is now printed (still in the EDNS0 field, though) + * ldns_pkt_rr no longer leaks memory (in fact, it no longer + copies anything all) + + API addition: + * ldns_key now has support for 'external' data, in which + case the OpenSSL EVP structures are not used; + ldns_key_set_external_key() and ldns_key_external_key() + * added ldns_key_get_file_base_name() which creates a + 'default' filename base string for key storage, of the + form "K++" + * the ldns_dnssec_* family of structures now have deep_free() + functions, which also free the ldns_rr's contained in them + * there is now an ldns_match_wildcard() function, which checks + whether a domain name matches a wildcard name + * ldns_sign_public has been split up; this resulted in the + addition of ldns_create_empty_rrsig() and + ldns_sign_public_buffer() + + Examples: + * ldns-signzone can now automatically add DNSKEY records when + using an OpenSSL engine, as it already did when using key + files + * added new example tool: ldns-nsec3-hash + * ldns-dpa can now filter on specific query name and types + * ldnsd has fixes for the zone name, a fix for the return + value of recvfrom(), and an memory initialization fix + (Thanks to Colm MacCárthaigh for the patch) + * Fixed memory leaks in ldnsd + + + +1.4.1 + Bug fixes: + * fixed a build issue where ldns lib existence was done too early + * removed unnecessary check for pcap.h + * NSEC3 optout flag now correctly printed in string output + * inttypes.h moved to configured inclusion + * fixed NSEC3 type bitmaps for empty nonterminals and unsigned + delegations + + API addition: + * for that last fix, we added a new function + ldns_dname_add_from() that can clone parts of a dname + +1.4.0 + Bug fixes: + * sig chase return code fix (patch from Rafael Justo, bug id 189) + * rdata.c memory leaks on error and allocation checks fixed (patch + from Shane Kerr, bug id 188) + * zone.c memory leaks on error and allocation checks fixed (patch + from Shane Kerr, bug id 189) + * ldns-zplit output and error messages fixed (patch from Shane Kerr, + bug id 190) + * Fixed potential buffer overflow in ldns_str2rdf_dname + * Signing code no longer signs delegation NS rrsets + * Some minor configure/makefile updates + * Fixed a bug in the randomness initialization + * Fixed a bug in the reading of resolv.conf + * Fixed a bug concerning whitespace in zone data (with patch from Ondrej + Sury, bug 213) + * Fixed a small fallback problem in axfr client code + + API CHANGES: + * added 2str convenience functions: + - ldns_rr_type2str + - ldns_rr_class2str + - ldns_rr_type2buffer_str + - ldns_rr_class2buffer_str + * buffer2str() is now called ldns_buffer2str + * base32 and base64 function names are now also prepended with ldns_ + * ldns_rr_new_frm_str() now returns an error on missing RDATA fields. + Since you cannot read QUESTION section RRs with this anymore, + there is now a function called ldns_rr_new_question_frm_str() + + LIBRARY FEATURES: + * DS RRs string representation now add bubblebabble in a comment + (patch from Jakob Schlyter) + * DLV RR type added + * TCP fallback system has been improved + * HMAC-SHA256 TSIG support has been added. + * TTLS are now correcly set in NSEC(3) records when signing zones + + EXAMPLE TOOLS: + * New example: ldns-revoke to revoke DNSKEYs according to RFC5011 + * ldns-testpkts has been fixed and updated + * ldns-signzone now has the option to not add the DNSKEY + * ldns-signzone now has an (full zone only) opt-out option for + NSEC3 + * ldns-keygen can create HMAC-SHA1 and HMAC-SHA256 symmetric keys + * ldns-walk output has been fixed + * ldns-compare-zones has been fixed, and now has an option + to show all differences (-a) + * ldns-read-zone now has an option to print DNSSEC records only + +1.3 + Base library: + + * Added a new family of functions based around ldns_dnssec_zone, + which is a new structure that keeps a zone sorted through an + rbtree and links signatures and NSEC(3) records directly to their + RRset. These functions all start with ldns_dnssec_ + + * ldns_zone_sign and ldns_zone_sign_nsec3 are now deprecated, but + have been changed to internally use the new + ldns_dnssec_zone_sign(_nsec3) + + * Moved some ldns_buffer functions inline, so a clean rebuild of + applications relying on those is needed (otherwise you'll get + linker errors) + * ldns_dname_label now returns one extra (zero) + byte, so it can be seen as an fqdn. + * NSEC3 type code update for signing algorithms. + * DSA key generation of DNSKEY RRs fixed (one byte too small). + + * Added support for RSA/SHA256 and RSA/SHA512, as specified in + draft-ietf-dnsext-dnssec-rsasha256-04. The typecodes are not + final, and this feature is not enabled by default. It can be + enabled at compilation time with the flag --with-sha2 + + * Added 2wire_canonical family of functions that lowercase dnames + in rdata fields in resource records of the types in the list in + rfc3597 + + * Added base32 conversion functions. + + * Fixed DSA RRSIG conversion when calling OpenSSL + + Drill: + + * Chase output is completely different, it shows, in ascii, the + relations in the trust hierarchy. + + Examples: + * Added ldns-verify-zone, that can verify the internal DNSSEC records + of a signed BIND-style zone file + + * ldns-keygen now takes an -a argument specifying the algorithm, + instead of -R or -D. -a list show a list of supported algorithms + + * ldns-keygen now defaults to the exponent RSA_F4 instead of RSA_3 + for RSA key generation + + * ldns-signzone now has support for HSMs + * ldns-signzone uses the new ldns_dnssec_ structures and functions + which improves its speed, and output; RRSIGS are now placed + directly after their RRset, NSEC(3) records directly after the + name they handle + + Contrib: + * new contrib/ dir with user contributions + * added compilation script for solaris (thanks to Jakob Schlyter) + +28 Nov 2007 1.2.2: + * Added support for HMAC-MD5 keys in generator + * Added a new example tool (written by Ondrej Sury): ldns-compare-zones + * ldns-keygen now checks key sizes for rfc conformancy + * ldns-signzone outputs SSL error if present + * Fixed manpages (thanks to Ondrej Sury) + * Fixed Makefile for -j + * Fixed a $ORIGIN error when reading zones + * Fixed another off-by-one error + +03 Oct 2007 1.2.1: + * Fixed an offset error in rr comparison + * Fixed ldns-read-zone exit code + * Added check for availability of SHA256 hashing algorithm + * Fixed ldns-key2ds -2 argument + * Fixed $ORIGIN bug in .key files + * Output algorithms as an integer instead of their mnemonic + * Fixed a memory leak in dnssec code when SHA256 is not available + * Updated fedora .spec file + +11 Apr 2007 1.2.0: + * canonicalization of rdata in DNSSEC functions now adheres to the + rr type list in rfc3597, not rfc4035, which will be updated + (see http://www.ops.ietf.org/lists/namedroppers/namedroppers.2007/msg00183.html) + * ldns-walk now support dnames with maximum label length + * ldnsd now takes an extra argument containing the address to listen on + * signing no longer signs every rrset with KSK's, but only the DNSKEY rrset + * ported to Solaris 10 + * added ldns_send_buffer() function + * added ldns-testpkts fake packet server + * added ldns-notify to send NOTIFY packets + * ldns-dpa can now accurately calculate the number of matches per + second + * libtool is now used for compilation too (still gcc, but not directly) + * Bugfixes: + - TSIG signing buffer size + - resolv.conf reading (comments) + - dname comparison off by one error + - typo in keyfetchers output file name fixed (a . too much) + - fixed zone file parser when comments contain ( or ) + - fixed LOC RR type + - fixed CERT RR type + + Drill: + * drill prints error on failed axfr. + * drill now accepts mangled packets with -f + * old -c option (use tcp) changed to -t + * -c option to specify alternative resolv.conf file added + * feedback of signature chase improved + * chaser now stops at root when no trusted keys are found + instead of looping forever trying to find the DS for . + * Fixed bugs: + - wildcard on multiple labels signature verification + - error in -f packet writing for malformed packets + - made KSK check more resilient + +7 Jul 2006: 1.1.0: ldns-team + * Added tutorials and an introduction to the documentation + * Added include/ and lib/ dirs so that you can compile against ldns + without installing ldns on your system + * Makefile updates + * Starting usage of assert throughout the library to catch illegal calls + * Solaris 9 testing was carried out. Ldns now compiles on that + platform; some gnuism were identified and fixed. + * The ldns_zone structure was stress tested. The current setup + (ie. just a list of rrs) can scale to zone file in order of + megabytes. Sorting such zone is still difficult. + * Reading multiline b64 encoded rdata works. + * OpenSSL was made optional, configure --without-ssl. + Ofcourse all dnssec/tsig related functions are disabled + * Building of examples and drill now happens with the same + defines as the building of ldns itself. + * Preliminary sha-256 support was added. Currently is your + OpenSSL supports it, it is supported in the DS creation. + * ldns_resolver_search was implemented + * Fixed a lot of bugs + + Drill: + * -r was killed in favor of -o
which + allows for a header bits setting (and maybe more in the + future) + * DNSSEC is never automaticaly set, even when you query + for DNSKEY/RRSIG or DS. + * Implement a crude RTT check, it now distinguishes between + reachable and unreachable. + * A form of secure tracing was added + * Secure Chasing has been improved + * -x does a reverse lookup for the given IP address + + Examples: + * ldns-dpa was added to the examples - this is the Dns Packet + Analyzer tool. + * ldnsd - as very, very simple nameserver impl. + * ldns-zsplit - split zones for parrallel signing + * ldns-zcat - cat split zones back together + * ldns-keyfetcher - Fetches DNSKEY records with a few (non-strong, + non-DNSSEC) anti-spoofing techniques. + * ldns-walk - 'Walks' a DNSSEC signed zone + * Added an all-static target to the makefile so you can use examples + without installing the library + * When building in the source tree or in a direct subdirectory of + the build dir, configure does not need --with-ldns=../ anymore + + Code: + * All networking code was moved to net.c + * rdata.c: added asserts to the rdf set/get functions + * const keyword was added to pointer arguments that + aren't changed + + API: + Changed: + * renamed ldns/dns.h to ldns/ldns.h + * ldns_rr_new_frm_str() is extented with an extra variable which + in common use may be NULL. This trickles through to: + o ldns_rr_new_frm_fp + o ldns_rr_new_frm_fp_l + Which also get an extra variable + Also the function has been changed to return a status message. + The compiled RR is returned in the first argument. + * ldns_zone_new_frm_fp_l() and ldns_zone_new_frm_fp() are + changed to return a status msg. + * ldns_key_new_frm_fp is changed to return ldns_status and + the actual key list in the first argument + * ldns_rdata_new_frm_fp[_l]() are changed to return a status. + the rdf is return in the first argument + * ldns_resolver_new_frm_fp: same treatment: return status and + the new resolver in the first argument + * ldns_pkt_query_new_frm_str(): same: return status and the + packet in the first arg + * tsig.h: internal used functions are now static: + ldns_digest_name and ldns_tsig_mac_new + * ldns_key_rr2ds has an extra argument to specify the hash to + use. + * ldns_pkt_rcode() is renamed to ldns_pkt_get_rcode, ldns_pkt_rcode + is now the rcode type, like ldns_pkt_opcode + New: + * ldns_resolver_searchlist_count: return the searchlist counter + * ldns_zone_sort: Sort a zone + * ldns_bgsend(): background send, returns a socket. + * ldns_pkt_empty(): check is a packet is empty + * ldns_rr_list_pop_rr_list(): pop multiple rr's from another rr_list + * ldns_rr_list_push_rr_list(): push multiple rr's to an rr_list + * ldns_rr_list_compare(): compare 2 ldns_rr_lists + * ldns_pkt_push_rr_list: rr_list equiv for rr + * ldns_pkt_safe_push_rr_list: rr_list equiv for rr + Removed: + * ldns_resolver_bgsend(): was not used in 1.0.0 and is not used now + * ldns_udp_server_connect(): was faulty and isn't really part of + the core ldns idea any how. + * ldns_rr_list_insert_rr(): obsoleted, because not used. + * char *_when was removed from the ldns_pkt structure + +18 Oct 2005: 1.0.0: ldns-team + * Commited a patch from HÃ¥kan Olsson + * Added UPDATE support (Jakob Schlyter and HÃ¥kan Olsson) + * License change: ldns is now BSD licensed + * ldns now depends on SSL + * Networking code cleanup, added (some) server udp/tcp support + * A zone type is introduced. Currently this is a list + of RRs, so it will not scale well. + * [beta] Zonefile parsing was added + * [tools] Drill was added to ldns - see drill/ + * [tools] experimental signer was added + * [building] better check for ssl + * [building] major revision of build system + * [building] added rpm .spec in packaging/ (thanks to Paul Wouters) + * [building] A lot of cleanup in the build scripts (thanks to Jakob Schlyter + and Paul Wouters) + +28 Jul 2005: 0.70: ldns-team + * [func] ldns_pkt_get_section now returns copies from the rrlists + in the packet. This can be freed by the user program + * [code] added ldns_ prefixes to function from util.h + * [inst] removed documentation from default make install + * Usual fixes in documentation and code + +20 Jun 2005: 0.66: ldns-team + Rel. Focus: drill-pre2 uses some functions which are + not in 0.65 + * dnssec_cd bit function was added + * Zone infrastructure was added + * Usual fixes in documentation and code + +13 Jun 2005: 0.65: ldns-team + * Repository is online at: + http://www.nlnetlabs.nl/ldns/svn/ + * Apply reference copying throuhgout ldns, except in 2 + places in the ldns_resolver structure (._domain and + ._nameservers) + * Usual array of bugfixes + * Documentation added + * keygen.c added as an example for DNSSEC programming + +23 May 2005: 0.60: ldns-team + * Removed config.h from the header installed files + (you're not supposed to include that in a libary) + * Further tweaking + - DNSSEC signing/verification works + - Assorted bug fixes and tweaks (memory management) + +May 2005: 0.50: ldns-team + * First usable release + * Basic DNS functionality works + * DNSSEC validation works Added: vendor/ldns/dist/LICENSE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/ldns/dist/LICENSE Wed Jul 4 14:22:28 2012 (r238104) @@ -0,0 +1,26 @@ +Copyright (c) 2005,2006, NLnetLabs +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * 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. + * Neither the name of NLnetLabs nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 COPYRIGHT OWNER 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. Added: vendor/ldns/dist/Makefile.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/ldns/dist/Makefile.in Wed Jul 4 14:22:28 2012 (r238104) @@ -0,0 +1,1098 @@ +# Standard installation pathnames +# See the file LICENSE for the license +SHELL = @SHELL@ +VERSION = @PACKAGE_VERSION@ +version_info = @LIBTOOL_VERSION_INFO@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +mandir = @mandir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +libdir = @libdir@ +includedir = @includedir@ +doxygen = @doxygen@ +pywrapdir = ${srcdir}/contrib/python +pyldnsxwrapdir = ${srcdir}/contrib/ldnsx +swig = @swig@ +swigpy_flags = -python @SWIGPY3@ +python_site = @PYTHON_SITE_PKG@ +pyldns_inst = @PYLDNSINST@ +pyldns_uninst = @PYLDNSUNINST@ +pyldnsx_inst = @PYLDNSXINST@ +pyldnsx_uninst = @PYLDNSXUNINST@ +libtool = @libtool@ + +# override $U variable which is used by autotools for deansification (for +# K&R C compilers), but causes problems if $U is defined in the env). +U= + +CC = @CC@ +CFLAGS = @CFLAGS@ +CPPFLAGS = -I. -I$(srcdir) @CPPFLAGS@ @DEFS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +LIBOBJDIR = compat/ +LIBOBJS = @LIBOBJS@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_X_CFLAGS = @PYTHON_X_CFLAGS@ +LIBSSL_CPPFLAGS = @LIBSSL_CPPFLAGS@ +LIBSSL_LDFLAGS = @LIBSSL_LDFLAGS@ +LIBSSL_LIBS = @LIBSSL_LIBS@ +LIBPCAP_LIBS = @LIBPCAP_LIBS@ +RUNTIME_PATH = @RUNTIME_PATH@ +LIBTOOL = $(libtool) --tag=CC --quiet +LINT = splint +LINTFLAGS = +quiet -weak -warnposix -unrecog -Din_addr_t=uint32_t -Du_int=unsigned -Du_char=uint8_t -preproc -Drlimit=rlimit64 -D__gnuc_va_list=va_list +# Extra flags from configure +LINTFLAGS += @LINTFLAGS@ +LINTFLAGS += "-DBN_ULONG=unsigned long" -Dkrb5_int32=int "-Dkrb5_ui_4=unsigned int" -DPQ_64BIT=uint64_t -DRC4_INT=unsigned -fixedformalarray -D"ENGINE=unsigned" -D"RSA=unsigned" -D"DSA=unsigned" -D"EVP_PKEY=unsigned" -D"EVP_MD=unsigned" -D"SSL=unsigned" -D"SSL_CTX=unsigned" -D"X509=unsigned" -D"RC4_KEY=unsigned" -D"EVP_MD_CTX=unsigned" -D"EC_KEY=unsigned" -D"EC_POINT=unsigned" -D"EC_GROUP=unsigned" -D"EVP_PKEY_ASN1_METHOD=struct evp_pkey_asn1_method_st" -D"EVP_PKEY_CTX=struct evp_pkey_ctx_st" +# compat with OpenBSD +LINTFLAGS += "-Dsigset_t=long" +# FreeBSD8 +LINTFLAGS += "-D__uint16_t=uint16_t" -D"__pure2=" -D"__wchar_t=wchar_t" -D"__packed=" -D"__aligned(x)=" +# Ubuntu oneiric" +LINTFLAGS += -D"__BEGIN_DECLS=" -D"__ssize_t=ssize_t" -D"__intptr_t=intptr_t" -D"__nonnull(x)=" -D"__THROW=" -D"__wur=" -D"__off_t=unsigned" -D"__off64_t=unsigned" -D"__useconds_t=unsigned" -D"__uid_t=unsigned" -D"__gid_t=unsigned" -D"__attribute_deprecated__=" -D"__pid_t=unsigned" -D"__restrict=" -D"__END_DECLS=" -D"__BEGIN_NAMESPACE_STD=" -D"__END_NAMESPACE_STD=" -D"__BEGIN_NAMESPACE_C99=" -D"__END_NAMESPACE_C99=" -D"__socklen_t=unsigned" -D"sa_family_t=unsigned " -D"__mode_t=unsigned" -D"u_int16_t=uint16_t" -D"u_int32_t=uint32_t" -D"u_int8_t=uint8_t" -D"u_short=unsigned short" -D"__u16=uint16_t" -D"__u32=uint32_t" -D"__u64=uint64_t" +DEPFLAG = @DEPFLAG@ + +INSTALL = $(srcdir)/install-sh + +LIBLOBJS = $(LIBOBJS:.o=.lo) +LDNS_LOBJS = buffer.lo dname.lo dnssec.lo dnssec_sign.lo dnssec_verify.lo dnssec_zone.lo duration.lo error.lo higher.lo host2str.lo host2wire.lo keys.lo net.lo packet.lo parse.lo rbtree.lo rdata.lo resolver.lo rr.lo rr_functions.lo sha1.lo sha2.lo str2host.lo tsig.lo update.lo util.lo wire2host.lo zone.lo +LDNS_LOBJS_EX = ^linktest\.c$$ +LDNS_ALL_LOBJS = $(LDNS_LOBJS) $(LIBLOBJS) +LIB = libldns.la + +LDNS_HEADERS = buffer.h dname.h dnssec.h dnssec_sign.h dnssec_verify.h dnssec_zone.h duration.h error.h higher.h host2str.h host2wire.h keys.h ldns.h packet.h parse.h rbtree.h rdata.h resolver.h rr_functions.h rr.h sha1.h sha2.h str2host.h tsig.h update.h wire2host.h zone.h +LDNS_HEADERS_EX = ^config\.h|common\.h|util\.h|net\.h$$ +LDNS_HEADERS_GEN= common.h util.h net.h + +PYLDNS_I_FILES = $(pywrapdir)/file_py3.i $(pywrapdir)/ldns_buffer.i $(pywrapdir)/ldns_dname.i $(pywrapdir)/ldns_dnssec.i $(pywrapdir)/ldns.i $(pywrapdir)/ldns_key.i $(pywrapdir)/ldns_packet.i $(pywrapdir)/ldns_rdf.i $(pywrapdir)/ldns_resolver.i $(pywrapdir)/ldns_rr.i $(pywrapdir)/ldns_zone.i + +DRILL_LOBJS = drill/chasetrace.lo drill/dnssec.lo drill/drill.lo drill/drill_util.lo drill/error.lo drill/root.lo drill/securetrace.lo drill/work.lo + +EXAMPLE_LOBJS = examples/ldns-chaos.lo examples/ldns-compare-zones.lo examples/ldnsd.lo examples/ldns-dpa.lo examples/ldns-gen-zone.lo examples/ldns-key2ds.lo examples/ldns-keyfetcher.lo examples/ldns-keygen.lo examples/ldns-mx.lo examples/ldns-notify.lo examples/ldns-nsec3-hash.lo examples/ldns-read-zone.lo examples/ldns-resolver.lo examples/ldns-revoke.lo examples/ldns-rrsig.lo examples/ldns-signzone.lo examples/ldns-test-edns.lo examples/ldns-testns.lo examples/ldns-testpkts.lo examples/ldns-update.lo examples/ldns-verify-zone.lo examples/ldns-version.lo examples/ldns-walk.lo examples/ldns-zcat.lo examples/ldns-zsplit.lo +EXAMPLE_PROGS = examples/ldns-chaos examples/ldns-compare-zones examples/ldnsd examples/ldns-gen-zone examples/ldns-key2ds examples/ldns-keyfetcher examples/ldns-keygen examples/ldns-mx examples/ldns-notify examples/ldns-read-zone examples/ldns-resolver examples/ldns-rrsig examples/ldns-test-edns examples/ldns-update examples/ldns-version examples/ldns-walk examples/ldns-zcat examples/ldns-zsplit +EX_PROGS_BASENM = ldns-chaos ldns-compare-zones ldnsd ldns-dpa ldns-gen-zone ldns-key2ds ldns-keyfetcher ldns-keygen ldns-mx ldns-notify ldns-nsec3-hash ldns-read-zone ldns-resolver ldns-revoke ldns-rrsig ldns-signzone ldns-test-edns ldns-testns ldns-testpkts ldns-update ldns-verify-zone ldns-version ldns-walk ldns-zcat ldns-zsplit +EXAMPLE_PROGS_EX= ^examples/ldns-testpkts\.c|examples/ldns-testns\.c|examples/ldns-dpa\.c|examples/ldns-nsec3-hash\.c|examples/ldns-revoke\.c|examples/ldns-signzone\.c|examples/ldns-verify-zone\.c$$ +TESTNS = examples/ldns-testns +TESTNS_LOBJS = examples/ldns-testns.lo examples/ldns-testpkts.lo +LDNS_DPA = examples/ldns-dpa +LDNS_DPA_LOBJS = examples/ldns-dpa.lo +EX_SSL_PROGS = examples/ldns-nsec3-hash examples/ldns-revoke examples/ldns-signzone examples/ldns-verify-zone +EX_SSL_LOBJS = examples/ldns-nsec3-hash.lo examples/ldns-revoke.lo examples/ldns-signzone.lo examples/ldns-verify-zone.lo + + +COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) +COMP_LIB = $(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) +LINK = $(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) +LINK_LIB = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) \ + $(LIBS) -version-number $(version_info) -no-undefined +LINK_EXE = $(LIBTOOL) --mode=link $(CC) $(CPPFLAGS) \ + $(LIBSSL_CPPFLAGS) $(CFLAGS) $(LDFLAGS) + +.PHONY: clean realclean docclean manpages doc lint all lib pyldns test +.PHONY: install uninstall install-doc uninstall-doc uninstall-pyldns +.PHONY: install-h uninstall-h install-lib uninstall-lib install-pyldns + +all: setup-builddir lib linktest manpages @PYLDNS@ @DRILL@ @EXAMPLES@ + +.SUFFIXES: .c .o .a .lo .h .i + +.c.lo: + $(COMP_LIB) $(LIBSSL_CPPFLAGS) -c $< -o $@ + +$(LDNS_LOBJS) $(LIBLOBJS) $(DRILL_LOBJS) $(EXAMPLE_LOBJS): + $(COMP_LIB) $(LIBSSL_CPPFLAGS) -c $(srcdir)/$(@:.lo=.c) -o $@ + +setup-builddir: + @if test ! -d compat ; then mkdir compat ; fi + @if test ! -d drill ; then mkdir drill ; fi + @if test ! -d examples ; then mkdir examples ; fi + @if test ! -h config.h ; then ln -s ldns/config.h . ; fi + @if test ! -h lib ; then ln -s .libs lib ; fi ; + @if test ! -d include ; then $(INSTALL) -d include; fi + @if test ! -h include/ldns ; then ln -s ../ldns include/ldns || echo "include/ldns exists"; fi + +putdown-builddir: + rm -f include/ldns lib config.h + test ! -d include || rmdir include || : + if test -d examples -a ! -f examples/README; then rmdir examples || : ; fi + if test -d drill -a ! -f drill/README ; then rmdir drill || : ; fi + if test -d compat -a ! -f compat/malloc.c; then rmdir compat || : ; fi + +drill: no-drill-config-h drill/drill +no-drill-config-h: + @if test -e $(srcdir)/drill/config.h -o -e drill/config.h ; \ + then echo "A config.h was detected in the drill subdirectory." ; \ + echo "This does not work when building drill from here." ; \ + echo "Either remove the config.h from the subdirectory" ; \ + echo "or build drill there." ; \ + exit -1 ; \ + fi +drill/drill: $(DRILL_LOBJS) $(LIB) + $(LINK_EXE) $(DRILL_LOBJS) $(LIBS) $(LIBSSL_LIBS) -lldns -o drill/drill + +install-drill: drill/drill + $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir) + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 + $(LIBTOOL) --mode=install cp drill/drill $(DESTDIR)$(bindir) + $(INSTALL) -m 644 $(srcdir)/drill/drill.1 $(DESTDIR)$(mandir)/man1/drill.1 + +uninstall-drill: + rm -f $(DESTDIR)$(bindir)/drill $(DESTDIR)$(mandir)/man1/drill.1 + test ! -d $(DESTDIR)$(mandir) || rmdir -p $(DESTDIR)$(mandir)/man1 || :; + test ! -d $(DESTDIR)$(bindir) || rmdir -p $(DESTDIR)$(bindir) || : ; + +clean-drill: + $(LIBTOOL) --mode clean rm -f $(DRILL_LOBJS) drill/drill + +examples: no-examples-config-h $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) +no-examples-config-h: + @if test -e $(srcdir)/examples/config.h -o -e examples/config.h ; \ + then echo "A config.h was detected in the examples subdirectory." ; \ + echo "This does not work when building examples from here." ; \ + echo "Either remove the config.h from the subdirectory" ; \ + echo "or build examples there." ; \ + exit -1 ; \ + fi +$(EXAMPLE_PROGS): + $(LINK_EXE) $@.lo $(LIBS) -lldns -o $@ + +$(TESTNS): + $(LINK_EXE) $(TESTNS_LOBJS) $(LIBS) -lldns -o $(TESTNS) + +$(LDNS_DPA): + $(LINK_EXE) $(LDNS_DPA_LOBJS) $(LIBS) $(LIBPCAP_LIBS) -lldns \ + -o $(LDNS_DPA) + +$(EX_SSL_PROGS): + $(LINK_EXE) $@.lo $(LIBS) $(LIBSSL_LIBS) -lldns -o $@ + +install-examples: $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) + $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir) + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 + for p in $(EXAMPLE_PROGS) $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) ; do \ + $(LIBTOOL) --mode=install cp $$p $(DESTDIR)$(bindir) ; \ + $(INSTALL) -m 644 $(srcdir)/$$p.1 $(DESTDIR)$(mandir)/man1 ; \ + done + +uninstall-examples: + for p in $(EX_PROGS_BASENM) ; do \ + rm -f $(DESTDIR)$(bindir)/$$p $(DESTDIR)$(mandir)/man1/$$p.1 ;\ + done + test ! -d $(DESTDIR)$(mandir) || rmdir -p $(DESTDIR)$(mandir)/man1 || :; + test ! -d $(DESTDIR)$(bindir) || rmdir -p $(DESTDIR)$(bindir) || : ; + +clean-examples: + $(LIBTOOL) --mode clean rm -f $(EXAMPLE_PROGS) + $(LIBTOOL) --mode clean rm -f $(TESTNS) $(LDNS_DPA) $(EX_SSL_PROGS) + $(LIBTOOL) --mode clean rm -f $(EXAMPLE_LOBJS) + +linktest: $(srcdir)/linktest.c libldns.la + $(LIBTOOL) --mode=link $(CC) $(srcdir)/linktest.c $(CPPFLAGS) $(LIBSSL_CPPFLAGS) $(CFLAGS) -lldns $(LIBS) -o linktest + +lib: libldns.la + +lib-export-all: libldns.la-export-all + +libldns.la: $(LDNS_ALL_LOBJS) + $(LINK_LIB) $(LIBSSL_LDFLAGS) $(LIBSSL_LIBS) --export-symbols $(srcdir)/ldns_symbols.def -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) + +libldns.la-export-all: $(LDNS_ALL_LOBJS) + $(LINK_LIB) -o libldns.la $(LDNS_ALL_LOBJS) -rpath $(libdir) $(RUNTIME_PATH) + +mancheck: + sh -c 'find . -name \*.\[13\] -exec troff -z {} \;' 2>&1 | sed "s/^\.\///" | sed "s/\(:[0\-9]\+:\)/\1 warning:/g" + +doxygen: manpages + if test ! -e doc/header.html ; then \ + $(INSTALL) -c -m 644 $(srcdir)/doc/header.html doc/ ; \ + fi ; + $(doxygen) $(srcdir)/libdns.doxygen + +doc: manpages $(doxygen) + @$(INSTALL) -d doc + +manpages: $(srcdir)/doc/function_manpages + @$(INSTALL) -d doc + @cat $(srcdir)/ldns/*.h \ + | $(srcdir)/doc/doxyparse.pl \ + -m $(srcdir)/doc/function_manpages 2>&1 \ + | grep -v ^doxygen | grep -v ^cat > doc/ldns_manpages + +pyldns: _ldns.la + +$(pywrapdir)/ldns_wrapper.c: $(PYLDNS_I_FILES) ldns/config.h + $(swig) $(swigpy_flags) -o $@ $(CPPFLAGS) $(PYTHON_CPPFLAGS) $(pywrapdir)/ldns.i + +ldns_wrapper.lo: $(pywrapdir)/ldns_wrapper.c ldns/config.h + $(COMP_LIB) -I./include/ldns $(PYTHON_CPPFLAGS) $(PYTHON_X_CFLAGS) -c $< -o $@ + +_ldns.la: ldns_wrapper.lo libldns.la + $(LIBTOOL) --tag=CC --mode=link $(CC) $(CFLAGS) $(PYTHON_CFLAGS) $(LDFLAGS) $(PYTHON_LDFLAGS) -module -version-number $(version_info) -no-undefined -o $@ $< -rpath $(python_site) -L. -L.libs -lldns $(LIBS) + +install: install-h install-lib @INSTALL_CONFIG@ install-manpages $(pyldns_inst) $(pyldnsx_inst) @INSTALL_DRILL@ @INSTALL_EXAMPLES@ + +uninstall: uninstall-manpages @UNINSTALL_CONFIG@ uninstall-h uninstall-lib $(pyldns_uninst) $(pyldnsx_uninst) @UNINSTALL_DRILL@ @UNINSTALL_EXAMPLES@ + +destclean: uninstall + +install-config: + $(INSTALL) -d $(DESTDIR)$(bindir) + $(INSTALL) -c -m 755 packaging/ldns-config $(DESTDIR)$(bindir) + +uninstall-config: + rm -f $(DESTDIR)$(bindir)/ldns-config + test ! -d $(DESTDIR)$(bindir) || rmdir -p $(DESTDIR)$(bindir) || echo "ok, dir already gone" + +install-config-manpage: + ${INSTALL} -d $(DESTDIR)$(mandir)/man1 + ${INSTALL} -c -m 444 $(srcdir)/packaging/ldns-config.1 $(DESTDIR)$(mandir)/man1/ + + +uninstall-config-manpage: + rm -f $(DESTDIR)$(mandir)/man1/ldns-config.1 + test ! -d $(DESTDIR)$(mandir)/man1 || rmdir -p $(DESTDIR)$(mandir)/man1 || echo "ok, dir already gone" + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@FreeBSD.ORG Wed Jul 4 14:23:28 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D8F041065677; Wed, 4 Jul 2012 14:23:28 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AD9618FC1E; Wed, 4 Jul 2012 14:23:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q64ENS2T015334; Wed, 4 Jul 2012 14:23:28 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q64ENS42015333; Wed, 4 Jul 2012 14:23:28 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201207041423.q64ENS42015333@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Wed, 4 Jul 2012 14:23:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238105 - vendor/ldns/1.6.13 X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jul 2012 14:23:29 -0000 Author: des Date: Wed Jul 4 14:23:28 2012 New Revision: 238105 URL: http://svn.freebsd.org/changeset/base/238105 Log: tag ldns 1.6.13 Added: vendor/ldns/1.6.13/ - copied from r238104, vendor/ldns/dist/ From owner-svn-src-vendor@FreeBSD.ORG Wed Jul 4 14:24:28 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 521F3106566C; Wed, 4 Jul 2012 14:24:28 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 397378FC19; Wed, 4 Jul 2012 14:24:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q64EOS2k015410; Wed, 4 Jul 2012 14:24:28 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q64EOSqv015406; Wed, 4 Jul 2012 14:24:28 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201207041424.q64EOSqv015406@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Wed, 4 Jul 2012 14:24:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238106 - in vendor/unbound/dist: . compat contrib contrib/selinux daemon doc iterator libunbound libunbound/python libunbound/python/doc libunbound/python/doc/_static libunbound/python... X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jul 2012 14:24:28 -0000 Author: des Date: Wed Jul 4 14:24:26 2012 New Revision: 238106 URL: http://svn.freebsd.org/changeset/base/238106 Log: import unbound 1.4.17 Added: vendor/unbound/dist/LICENSE vendor/unbound/dist/Makefile.in vendor/unbound/dist/README vendor/unbound/dist/ac_pkg_swig.m4 vendor/unbound/dist/aclocal.m4 vendor/unbound/dist/acx_nlnetlabs.m4 vendor/unbound/dist/acx_pthread.m4 vendor/unbound/dist/acx_python.m4 vendor/unbound/dist/compat/ vendor/unbound/dist/compat/ctime_r.c vendor/unbound/dist/compat/fake-rfc2553.c vendor/unbound/dist/compat/fake-rfc2553.h vendor/unbound/dist/compat/gmtime_r.c vendor/unbound/dist/compat/inet_aton.c vendor/unbound/dist/compat/inet_ntop.c vendor/unbound/dist/compat/inet_pton.c vendor/unbound/dist/compat/malloc.c vendor/unbound/dist/compat/memcmp.c vendor/unbound/dist/compat/memcmp.h vendor/unbound/dist/compat/memmove.c vendor/unbound/dist/compat/snprintf.c vendor/unbound/dist/compat/strlcpy.c vendor/unbound/dist/compat/strptime.c vendor/unbound/dist/config.guess (contents, props changed) vendor/unbound/dist/config.h.in vendor/unbound/dist/config.sub (contents, props changed) vendor/unbound/dist/configure (contents, props changed) vendor/unbound/dist/configure.ac vendor/unbound/dist/contrib/ vendor/unbound/dist/contrib/README vendor/unbound/dist/contrib/build-unbound-localzone-from-hosts.pl (contents, props changed) vendor/unbound/dist/contrib/parseunbound.pl (contents, props changed) vendor/unbound/dist/contrib/rc_d_unbound (contents, props changed) vendor/unbound/dist/contrib/selinux/ vendor/unbound/dist/contrib/selinux/unbound.fc vendor/unbound/dist/contrib/selinux/unbound.te vendor/unbound/dist/contrib/unbound-host.nagios.patch vendor/unbound/dist/contrib/unbound.init vendor/unbound/dist/contrib/unbound.init_fedora vendor/unbound/dist/contrib/unbound.plist (contents, props changed) vendor/unbound/dist/contrib/unbound.spec vendor/unbound/dist/contrib/unbound.spec_fedora vendor/unbound/dist/contrib/unbound_cacti.tar.gz (contents, props changed) vendor/unbound/dist/contrib/unbound_munin_ (contents, props changed) vendor/unbound/dist/contrib/update-anchor.sh (contents, props changed) vendor/unbound/dist/contrib/validation-reporter.sh (contents, props changed) vendor/unbound/dist/daemon/ vendor/unbound/dist/daemon/acl_list.c vendor/unbound/dist/daemon/acl_list.h vendor/unbound/dist/daemon/cachedump.c vendor/unbound/dist/daemon/cachedump.h vendor/unbound/dist/daemon/daemon.c vendor/unbound/dist/daemon/daemon.h vendor/unbound/dist/daemon/remote.c vendor/unbound/dist/daemon/remote.h vendor/unbound/dist/daemon/stats.c vendor/unbound/dist/daemon/stats.h vendor/unbound/dist/daemon/unbound.c vendor/unbound/dist/daemon/worker.c vendor/unbound/dist/daemon/worker.h vendor/unbound/dist/doc/ vendor/unbound/dist/doc/CREDITS vendor/unbound/dist/doc/Changelog vendor/unbound/dist/doc/FEATURES vendor/unbound/dist/doc/LICENSE vendor/unbound/dist/doc/README vendor/unbound/dist/doc/README.svn vendor/unbound/dist/doc/README.tests vendor/unbound/dist/doc/TODO vendor/unbound/dist/doc/control_proto_spec.txt vendor/unbound/dist/doc/example.conf.in vendor/unbound/dist/doc/ietf67-design-02.odp (contents, props changed) vendor/unbound/dist/doc/ietf67-design-02.pdf (contents, props changed) vendor/unbound/dist/doc/libunbound.3.in vendor/unbound/dist/doc/requirements.txt vendor/unbound/dist/doc/unbound-anchor.8.in vendor/unbound/dist/doc/unbound-checkconf.8.in vendor/unbound/dist/doc/unbound-control.8.in vendor/unbound/dist/doc/unbound-host.1 vendor/unbound/dist/doc/unbound.8.in vendor/unbound/dist/doc/unbound.conf.5.in vendor/unbound/dist/doc/unbound.doxygen vendor/unbound/dist/install-sh (contents, props changed) vendor/unbound/dist/iterator/ vendor/unbound/dist/iterator/iter_delegpt.c vendor/unbound/dist/iterator/iter_delegpt.h vendor/unbound/dist/iterator/iter_donotq.c vendor/unbound/dist/iterator/iter_donotq.h vendor/unbound/dist/iterator/iter_fwd.c vendor/unbound/dist/iterator/iter_fwd.h vendor/unbound/dist/iterator/iter_hints.c vendor/unbound/dist/iterator/iter_hints.h vendor/unbound/dist/iterator/iter_priv.c vendor/unbound/dist/iterator/iter_priv.h vendor/unbound/dist/iterator/iter_resptype.c vendor/unbound/dist/iterator/iter_resptype.h vendor/unbound/dist/iterator/iter_scrub.c vendor/unbound/dist/iterator/iter_scrub.h vendor/unbound/dist/iterator/iter_utils.c vendor/unbound/dist/iterator/iter_utils.h vendor/unbound/dist/iterator/iterator.c vendor/unbound/dist/iterator/iterator.h vendor/unbound/dist/libunbound/ vendor/unbound/dist/libunbound/context.c vendor/unbound/dist/libunbound/context.h vendor/unbound/dist/libunbound/libunbound.c vendor/unbound/dist/libunbound/libworker.c vendor/unbound/dist/libunbound/libworker.h vendor/unbound/dist/libunbound/python/ vendor/unbound/dist/libunbound/python/LICENSE vendor/unbound/dist/libunbound/python/Makefile vendor/unbound/dist/libunbound/python/doc/ vendor/unbound/dist/libunbound/python/doc/_static/ vendor/unbound/dist/libunbound/python/doc/_static/readme vendor/unbound/dist/libunbound/python/doc/conf.py vendor/unbound/dist/libunbound/python/doc/examples/ vendor/unbound/dist/libunbound/python/doc/examples/example1a.rst vendor/unbound/dist/libunbound/python/doc/examples/example1b.rst vendor/unbound/dist/libunbound/python/doc/examples/example2.rst vendor/unbound/dist/libunbound/python/doc/examples/example3.rst vendor/unbound/dist/libunbound/python/doc/examples/example4.rst vendor/unbound/dist/libunbound/python/doc/examples/example5.rst vendor/unbound/dist/libunbound/python/doc/examples/example6-1.py vendor/unbound/dist/libunbound/python/doc/examples/example6.rst vendor/unbound/dist/libunbound/python/doc/examples/example7-1.py vendor/unbound/dist/libunbound/python/doc/examples/example7-2.py vendor/unbound/dist/libunbound/python/doc/examples/example7.rst vendor/unbound/dist/libunbound/python/doc/examples/example8-1.py vendor/unbound/dist/libunbound/python/doc/examples/example8.rst vendor/unbound/dist/libunbound/python/doc/examples/index.rst vendor/unbound/dist/libunbound/python/doc/index.rst vendor/unbound/dist/libunbound/python/doc/install.rst vendor/unbound/dist/libunbound/python/doc/intro.rst vendor/unbound/dist/libunbound/python/doc/modules/ vendor/unbound/dist/libunbound/python/doc/modules/unbound.rst vendor/unbound/dist/libunbound/python/examples/ vendor/unbound/dist/libunbound/python/examples/async-lookup.py vendor/unbound/dist/libunbound/python/examples/dns-lookup.py vendor/unbound/dist/libunbound/python/examples/dnssec-valid.py vendor/unbound/dist/libunbound/python/examples/dnssec_test.py vendor/unbound/dist/libunbound/python/examples/example8-1.py vendor/unbound/dist/libunbound/python/examples/idn-lookup.py vendor/unbound/dist/libunbound/python/examples/mx-lookup.py vendor/unbound/dist/libunbound/python/examples/ns-lookup.py vendor/unbound/dist/libunbound/python/examples/reverse-lookup.py vendor/unbound/dist/libunbound/python/libunbound.i vendor/unbound/dist/libunbound/ubsyms.def vendor/unbound/dist/libunbound/unbound.h vendor/unbound/dist/ltmain.sh (contents, props changed) vendor/unbound/dist/pythonmod/ vendor/unbound/dist/pythonmod/LICENSE vendor/unbound/dist/pythonmod/Makefile vendor/unbound/dist/pythonmod/doc/ vendor/unbound/dist/pythonmod/doc/_static/ vendor/unbound/dist/pythonmod/doc/_static/readme vendor/unbound/dist/pythonmod/doc/conf.py vendor/unbound/dist/pythonmod/doc/examples/ vendor/unbound/dist/pythonmod/doc/examples/example0-1.py vendor/unbound/dist/pythonmod/doc/examples/example0.rst vendor/unbound/dist/pythonmod/doc/examples/example1.rst vendor/unbound/dist/pythonmod/doc/examples/example2.rst vendor/unbound/dist/pythonmod/doc/examples/example3.rst vendor/unbound/dist/pythonmod/doc/examples/example4.rst vendor/unbound/dist/pythonmod/doc/examples/index.rst vendor/unbound/dist/pythonmod/doc/index.rst vendor/unbound/dist/pythonmod/doc/install.rst vendor/unbound/dist/pythonmod/doc/modules/ vendor/unbound/dist/pythonmod/doc/modules/config.rst vendor/unbound/dist/pythonmod/doc/modules/env.rst vendor/unbound/dist/pythonmod/doc/modules/functions.rst vendor/unbound/dist/pythonmod/doc/modules/index.rst vendor/unbound/dist/pythonmod/doc/modules/struct.rst vendor/unbound/dist/pythonmod/doc/usecase.rst vendor/unbound/dist/pythonmod/examples/ vendor/unbound/dist/pythonmod/examples/calc.py vendor/unbound/dist/pythonmod/examples/dict.py vendor/unbound/dist/pythonmod/examples/dict_data.txt vendor/unbound/dist/pythonmod/examples/log.py vendor/unbound/dist/pythonmod/examples/resgen.py vendor/unbound/dist/pythonmod/examples/resip.py vendor/unbound/dist/pythonmod/examples/resmod.py vendor/unbound/dist/pythonmod/interface.i vendor/unbound/dist/pythonmod/pythonmod.c vendor/unbound/dist/pythonmod/pythonmod.h vendor/unbound/dist/pythonmod/pythonmod_utils.c vendor/unbound/dist/pythonmod/pythonmod_utils.h vendor/unbound/dist/pythonmod/test-calc.conf vendor/unbound/dist/pythonmod/test-dict.conf vendor/unbound/dist/pythonmod/test-log.conf vendor/unbound/dist/pythonmod/test-resgen.conf vendor/unbound/dist/pythonmod/test-resip.conf vendor/unbound/dist/pythonmod/test-resmod.conf vendor/unbound/dist/pythonmod/ubmodule-msg.py vendor/unbound/dist/pythonmod/ubmodule-tst.py vendor/unbound/dist/services/ vendor/unbound/dist/services/cache/ vendor/unbound/dist/services/cache/dns.c vendor/unbound/dist/services/cache/dns.h vendor/unbound/dist/services/cache/infra.c vendor/unbound/dist/services/cache/infra.h vendor/unbound/dist/services/cache/rrset.c vendor/unbound/dist/services/cache/rrset.h vendor/unbound/dist/services/listen_dnsport.c vendor/unbound/dist/services/listen_dnsport.h vendor/unbound/dist/services/localzone.c vendor/unbound/dist/services/localzone.h vendor/unbound/dist/services/mesh.c vendor/unbound/dist/services/mesh.h vendor/unbound/dist/services/modstack.c vendor/unbound/dist/services/modstack.h vendor/unbound/dist/services/outbound_list.c vendor/unbound/dist/services/outbound_list.h vendor/unbound/dist/services/outside_network.c vendor/unbound/dist/services/outside_network.h vendor/unbound/dist/smallapp/ vendor/unbound/dist/smallapp/unbound-anchor.c vendor/unbound/dist/smallapp/unbound-checkconf.c vendor/unbound/dist/smallapp/unbound-control-setup.sh (contents, props changed) vendor/unbound/dist/smallapp/unbound-control.c vendor/unbound/dist/smallapp/unbound-host.c vendor/unbound/dist/smallapp/worker_cb.c vendor/unbound/dist/testcode/ vendor/unbound/dist/testcode/asynclook.c vendor/unbound/dist/testcode/checklocks.c vendor/unbound/dist/testcode/checklocks.h vendor/unbound/dist/testcode/delayer.c vendor/unbound/dist/testcode/do-tests.sh (contents, props changed) vendor/unbound/dist/testcode/fake_event.c vendor/unbound/dist/testcode/fake_event.h vendor/unbound/dist/testcode/harvest.c vendor/unbound/dist/testcode/ldns-testpkts.c vendor/unbound/dist/testcode/ldns-testpkts.h vendor/unbound/dist/testcode/lock_verify.c vendor/unbound/dist/testcode/memstats.c vendor/unbound/dist/testcode/mini_tpkg.sh (contents, props changed) vendor/unbound/dist/testcode/perf.c vendor/unbound/dist/testcode/petal.c vendor/unbound/dist/testcode/pktview.c vendor/unbound/dist/testcode/readhex.c vendor/unbound/dist/testcode/readhex.h vendor/unbound/dist/testcode/replay.c vendor/unbound/dist/testcode/replay.h vendor/unbound/dist/testcode/signit.c vendor/unbound/dist/testcode/streamtcp.c vendor/unbound/dist/testcode/testbed.sh (contents, props changed) vendor/unbound/dist/testcode/testbed.txt vendor/unbound/dist/testcode/testbound.c vendor/unbound/dist/testcode/unitanchor.c vendor/unbound/dist/testcode/unitdname.c vendor/unbound/dist/testcode/unitlruhash.c vendor/unbound/dist/testcode/unitmain.c vendor/unbound/dist/testcode/unitmain.h vendor/unbound/dist/testcode/unitmsgparse.c vendor/unbound/dist/testcode/unitneg.c vendor/unbound/dist/testcode/unitregional.c vendor/unbound/dist/testcode/unitslabhash.c vendor/unbound/dist/testcode/unitverify.c vendor/unbound/dist/testdata/ vendor/unbound/dist/testdata/00-lint.tpkg (contents, props changed) vendor/unbound/dist/testdata/01-doc.tpkg (contents, props changed) vendor/unbound/dist/testdata/02-unittest.tpkg (contents, props changed) vendor/unbound/dist/testdata/03-testbound.tpkg (contents, props changed) vendor/unbound/dist/testdata/04-checkconf.tpkg (contents, props changed) vendor/unbound/dist/testdata/05-asynclook.tpkg (contents, props changed) vendor/unbound/dist/testdata/06-ianaports.tpkg (contents, props changed) vendor/unbound/dist/testdata/07-confroot.tpkg (contents, props changed) vendor/unbound/dist/testdata/08-host-lib.tpkg (contents, props changed) vendor/unbound/dist/testdata/09-unbound-control.tpkg (contents, props changed) vendor/unbound/dist/testdata/10-unbound-anchor.tpkg (contents, props changed) vendor/unbound/dist/testdata/Kexample.com.+003+02854.ds vendor/unbound/dist/testdata/Kexample.com.+003+02854.key vendor/unbound/dist/testdata/Kexample.com.+003+02854.private vendor/unbound/dist/testdata/Kexample.com.+005+16486.ds vendor/unbound/dist/testdata/Kexample.com.+005+16486.key vendor/unbound/dist/testdata/Kexample.com.+005+16486.private vendor/unbound/dist/testdata/Kexample.com.+005+30899.ds vendor/unbound/dist/testdata/Kexample.com.+005+30899.key vendor/unbound/dist/testdata/Kexample.com.+005+30899.private vendor/unbound/dist/testdata/Kexample.com.+005+55582.ds vendor/unbound/dist/testdata/Kexample.com.+005+55582.key vendor/unbound/dist/testdata/Kexample.com.+005+55582.private vendor/unbound/dist/testdata/Kexample.com.+005+60946.ds vendor/unbound/dist/testdata/Kexample.com.+005+60946.key vendor/unbound/dist/testdata/Kexample.com.+005+60946.private vendor/unbound/dist/testdata/Kexample.com.+007+57024.ds vendor/unbound/dist/testdata/Kexample.com.+007+57024.key vendor/unbound/dist/testdata/Kexample.com.+007+57024.private vendor/unbound/dist/testdata/Kexample.com.+008+01443.ds vendor/unbound/dist/testdata/Kexample.com.+008+01443.key vendor/unbound/dist/testdata/Kexample.com.+008+01443.private vendor/unbound/dist/testdata/Kexample.com.+009+48886.ds vendor/unbound/dist/testdata/Kexample.com.+009+48886.key vendor/unbound/dist/testdata/Kexample.com.+009+48886.private vendor/unbound/dist/testdata/Kexample.com.+012+60385.ds vendor/unbound/dist/testdata/Kexample.com.+012+60385.key vendor/unbound/dist/testdata/Kexample.com.+012+60385.private vendor/unbound/dist/testdata/acl.rpl vendor/unbound/dist/testdata/autotrust_10key.rpl vendor/unbound/dist/testdata/autotrust_addpend_2exceed.rpl vendor/unbound/dist/testdata/autotrust_addpend_early.rpl vendor/unbound/dist/testdata/autotrust_addpend_nosign.rpl vendor/unbound/dist/testdata/autotrust_addpend_nosignnew.rpl vendor/unbound/dist/testdata/autotrust_addpend_once.rpl vendor/unbound/dist/testdata/autotrust_addpend_twice.rpl vendor/unbound/dist/testdata/autotrust_init.rpl vendor/unbound/dist/testdata/autotrust_init_ds.rpl vendor/unbound/dist/testdata/autotrust_init_fail.rpl vendor/unbound/dist/testdata/autotrust_init_failsig.rpl vendor/unbound/dist/testdata/autotrust_init_legacy.rpl vendor/unbound/dist/testdata/autotrust_init_sigs.rpl vendor/unbound/dist/testdata/autotrust_init_zsk.rpl vendor/unbound/dist/testdata/autotrust_missing.rpl vendor/unbound/dist/testdata/autotrust_missing_all.rpl vendor/unbound/dist/testdata/autotrust_missing_returns.rpl vendor/unbound/dist/testdata/autotrust_probefail.rpl vendor/unbound/dist/testdata/autotrust_probefailsig.rpl vendor/unbound/dist/testdata/autotrust_revoked_use.rpl vendor/unbound/dist/testdata/autotrust_revoked_with_invalid.rpl vendor/unbound/dist/testdata/autotrust_revtp.rpl vendor/unbound/dist/testdata/autotrust_revtp_read.rpl vendor/unbound/dist/testdata/autotrust_revtp_use.rpl vendor/unbound/dist/testdata/autotrust_rollalgo.rpl vendor/unbound/dist/testdata/autotrust_rollalgo_unknown.rpl vendor/unbound/dist/testdata/autotrust_rollover.rpl vendor/unbound/dist/testdata/autotrust_valid_use.rpl vendor/unbound/dist/testdata/black_data.rpl vendor/unbound/dist/testdata/black_dnskey.rpl vendor/unbound/dist/testdata/black_ds.rpl vendor/unbound/dist/testdata/black_ds_entry.rpl vendor/unbound/dist/testdata/black_ent.rpl vendor/unbound/dist/testdata/black_key_entry.rpl vendor/unbound/dist/testdata/black_prime.rpl vendor/unbound/dist/testdata/black_prime_entry.rpl vendor/unbound/dist/testdata/common.sh (contents, props changed) vendor/unbound/dist/testdata/dlv_anchor.rpl vendor/unbound/dist/testdata/dlv_ask_higher.rpl vendor/unbound/dist/testdata/dlv_below_ta.rpl vendor/unbound/dist/testdata/dlv_delegation.rpl vendor/unbound/dist/testdata/dlv_ds_lookup.rpl vendor/unbound/dist/testdata/dlv_insecure.rpl vendor/unbound/dist/testdata/dlv_insecure_negcache.rpl vendor/unbound/dist/testdata/dlv_keyretry.rpl vendor/unbound/dist/testdata/dlv_negnx.rpl vendor/unbound/dist/testdata/dlv_optout.rpl vendor/unbound/dist/testdata/dlv_unused.rpl vendor/unbound/dist/testdata/domain_insec_dlv.rpl vendor/unbound/dist/testdata/domain_insec_ds.rpl vendor/unbound/dist/testdata/edns_cache.tpkg (contents, props changed) vendor/unbound/dist/testdata/edns_lame.tpkg (contents, props changed) vendor/unbound/dist/testdata/fetch_glue.rpl vendor/unbound/dist/testdata/fetch_glue_cname.rpl vendor/unbound/dist/testdata/fwd.rpl vendor/unbound/dist/testdata/fwd_ancil.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_bogus.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_cached.rpl vendor/unbound/dist/testdata/fwd_capsid.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_capsid_fallback.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_compress_c00c.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_droptoomany.rpl vendor/unbound/dist/testdata/fwd_edns_bksec.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_edns_probe.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_error.rpl vendor/unbound/dist/testdata/fwd_jostle.rpl vendor/unbound/dist/testdata/fwd_jostle_out.rpl vendor/unbound/dist/testdata/fwd_lrudrop.rpl vendor/unbound/dist/testdata/fwd_no_edns.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_notcached.rpl vendor/unbound/dist/testdata/fwd_oneport.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_tcp.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_tcp_tc.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_tcp_tc6.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_three.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_three_service.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_timeout.rpl vendor/unbound/dist/testdata/fwd_ttlexpire.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_two.rpl vendor/unbound/dist/testdata/fwd_udp.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_udptmout.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_waitudp.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwd_zero.tpkg (contents, props changed) vendor/unbound/dist/testdata/fwddlv_parse.rpl vendor/unbound/dist/testdata/host_file.template vendor/unbound/dist/testdata/hostsfileosx.tpkg (contents, props changed) vendor/unbound/dist/testdata/iter_class_any.rpl vendor/unbound/dist/testdata/iter_cname_cache.rpl vendor/unbound/dist/testdata/iter_cname_double.rpl vendor/unbound/dist/testdata/iter_cname_nx.rpl vendor/unbound/dist/testdata/iter_cname_qnamecopy.rpl vendor/unbound/dist/testdata/iter_cycle.rpl vendor/unbound/dist/testdata/iter_cycle_noh.rpl vendor/unbound/dist/testdata/iter_dnsseclame_bug.rpl vendor/unbound/dist/testdata/iter_dnsseclame_ds.rpl vendor/unbound/dist/testdata/iter_dnsseclame_ds_ok.rpl vendor/unbound/dist/testdata/iter_dnsseclame_ta.rpl vendor/unbound/dist/testdata/iter_dnsseclame_ta_ok.rpl vendor/unbound/dist/testdata/iter_domain_sale.rpl vendor/unbound/dist/testdata/iter_domain_sale_nschange.rpl vendor/unbound/dist/testdata/iter_donotq127.rpl vendor/unbound/dist/testdata/iter_dp_turnsuseless.rpl vendor/unbound/dist/testdata/iter_ds_locate_ns.rpl vendor/unbound/dist/testdata/iter_ds_locate_ns_cname.rpl vendor/unbound/dist/testdata/iter_ds_locate_ns_nosoa.rpl vendor/unbound/dist/testdata/iter_emptydp.rpl vendor/unbound/dist/testdata/iter_emptydp_for_glue.rpl vendor/unbound/dist/testdata/iter_fwdfirst.rpl vendor/unbound/dist/testdata/iter_fwdstub.rpl vendor/unbound/dist/testdata/iter_fwdstubroot.rpl vendor/unbound/dist/testdata/iter_got6only.rpl vendor/unbound/dist/testdata/iter_hint_lame.rpl vendor/unbound/dist/testdata/iter_lame_aaaa.rpl vendor/unbound/dist/testdata/iter_lame_noaa.rpl vendor/unbound/dist/testdata/iter_lame_nosoa.rpl vendor/unbound/dist/testdata/iter_lamescrub.rpl vendor/unbound/dist/testdata/iter_mod.rpl vendor/unbound/dist/testdata/iter_ns_badip.rpl vendor/unbound/dist/testdata/iter_ns_spoof.rpl vendor/unbound/dist/testdata/iter_pc_a.rpl vendor/unbound/dist/testdata/iter_pc_aaaa.rpl vendor/unbound/dist/testdata/iter_pcdiff.rpl vendor/unbound/dist/testdata/iter_pcdirect.rpl vendor/unbound/dist/testdata/iter_pclame.rpl vendor/unbound/dist/testdata/iter_pcname.rpl vendor/unbound/dist/testdata/iter_pcnamech.rpl vendor/unbound/dist/testdata/iter_pcnamechrec.rpl vendor/unbound/dist/testdata/iter_pcnamerec.rpl vendor/unbound/dist/testdata/iter_pcttl.rpl vendor/unbound/dist/testdata/iter_prefetch.rpl vendor/unbound/dist/testdata/iter_prefetch_change.rpl vendor/unbound/dist/testdata/iter_prefetch_change2.rpl vendor/unbound/dist/testdata/iter_prefetch_childns.rpl vendor/unbound/dist/testdata/iter_prefetch_ns.rpl vendor/unbound/dist/testdata/iter_primenoglue.rpl vendor/unbound/dist/testdata/iter_privaddr.rpl vendor/unbound/dist/testdata/iter_ranoaa_lame.rpl vendor/unbound/dist/testdata/iter_reclame_one.rpl vendor/unbound/dist/testdata/iter_reclame_two.rpl vendor/unbound/dist/testdata/iter_recurse.rpl vendor/unbound/dist/testdata/iter_req_qname.rpl vendor/unbound/dist/testdata/iter_resolve.rpl vendor/unbound/dist/testdata/iter_scrub_cname_an.rpl vendor/unbound/dist/testdata/iter_scrub_dname_insec.rpl vendor/unbound/dist/testdata/iter_scrub_dname_sec.rpl vendor/unbound/dist/testdata/iter_scrub_ns.rpl vendor/unbound/dist/testdata/iter_scrub_ns_fwd.rpl vendor/unbound/dist/testdata/iter_scrub_ns_side.rpl vendor/unbound/dist/testdata/iter_soamin.rpl vendor/unbound/dist/testdata/iter_stub_noroot.rpl vendor/unbound/dist/testdata/iter_stubfirst.rpl vendor/unbound/dist/testdata/iter_timeout_ra_aaaa.rpl vendor/unbound/dist/testdata/local_nodefault.rpl vendor/unbound/dist/testdata/local_nodefault.tpkg (contents, props changed) vendor/unbound/dist/testdata/local_norec.tpkg (contents, props changed) vendor/unbound/dist/testdata/local_nosnoop.tpkg (contents, props changed) vendor/unbound/dist/testdata/local_transparent_sametype.rpl vendor/unbound/dist/testdata/local_typetransparent.rpl vendor/unbound/dist/testdata/localdata.rpl vendor/unbound/dist/testdata/net_signed_servfail.rpl vendor/unbound/dist/testdata/nomem_cnametopos.rpl vendor/unbound/dist/testdata/pylib.tpkg (contents, props changed) vendor/unbound/dist/testdata/pymod.tpkg (contents, props changed) vendor/unbound/dist/testdata/pymod_thread.tpkg (contents, props changed) vendor/unbound/dist/testdata/refuse_xfr.rpl vendor/unbound/dist/testdata/remote-threaded.tpkg (contents, props changed) vendor/unbound/dist/testdata/root_anchor.tpkg (contents, props changed) vendor/unbound/dist/testdata/root_hints.tpkg (contents, props changed) vendor/unbound/dist/testdata/rrset_rettl.rpl vendor/unbound/dist/testdata/rrset_untrusted.rpl vendor/unbound/dist/testdata/rrset_updated.rpl vendor/unbound/dist/testdata/speed_cache.tpkg (contents, props changed) vendor/unbound/dist/testdata/speed_local.tpkg (contents, props changed) vendor/unbound/dist/testdata/stat_timer.tpkg (contents, props changed) vendor/unbound/dist/testdata/stop_nxdomain.rpl vendor/unbound/dist/testdata/stream_ssl.tpkg (contents, props changed) vendor/unbound/dist/testdata/stream_tcp.tpkg (contents, props changed) vendor/unbound/dist/testdata/stub_udp.tpkg (contents, props changed) vendor/unbound/dist/testdata/stub_udp6.tpkg (contents, props changed) vendor/unbound/dist/testdata/tcp_sigpipe.tpkg (contents, props changed) vendor/unbound/dist/testdata/test_ds.sha1 vendor/unbound/dist/testdata/test_ds.sha384 vendor/unbound/dist/testdata/test_nsec3_hash.1 vendor/unbound/dist/testdata/test_packets.1 vendor/unbound/dist/testdata/test_packets.2 vendor/unbound/dist/testdata/test_packets.3 vendor/unbound/dist/testdata/test_packets.4 vendor/unbound/dist/testdata/test_packets.5 vendor/unbound/dist/testdata/test_packets.6 vendor/unbound/dist/testdata/test_packets.7 vendor/unbound/dist/testdata/test_packets.8 vendor/unbound/dist/testdata/test_packets.9 vendor/unbound/dist/testdata/test_signatures.1 vendor/unbound/dist/testdata/test_signatures.2 vendor/unbound/dist/testdata/test_signatures.3 vendor/unbound/dist/testdata/test_signatures.4 vendor/unbound/dist/testdata/test_signatures.5 vendor/unbound/dist/testdata/test_signatures.6 vendor/unbound/dist/testdata/test_signatures.7 vendor/unbound/dist/testdata/test_signatures.8 vendor/unbound/dist/testdata/test_sigs.ecdsa_p256 vendor/unbound/dist/testdata/test_sigs.ecdsa_p384 vendor/unbound/dist/testdata/test_sigs.gost vendor/unbound/dist/testdata/test_sigs.hinfo vendor/unbound/dist/testdata/test_sigs.revoked vendor/unbound/dist/testdata/test_sigs.rsasha256 vendor/unbound/dist/testdata/test_sigs.rsasha256_draft vendor/unbound/dist/testdata/test_sigs.rsasha512_draft vendor/unbound/dist/testdata/test_sigs.sha1_and_256 vendor/unbound/dist/testdata/trust_cname_chain.rpl vendor/unbound/dist/testdata/ttl_max.rpl vendor/unbound/dist/testdata/ttl_min.rpl vendor/unbound/dist/testdata/ttl_msg.rpl vendor/unbound/dist/testdata/val_adbit.rpl vendor/unbound/dist/testdata/val_adcopy.rpl vendor/unbound/dist/testdata/val_anchor_nx.rpl vendor/unbound/dist/testdata/val_anchor_nx_nosig.rpl vendor/unbound/dist/testdata/val_ans_dsent.rpl vendor/unbound/dist/testdata/val_ans_nx.rpl vendor/unbound/dist/testdata/val_any.rpl vendor/unbound/dist/testdata/val_any_cname.rpl vendor/unbound/dist/testdata/val_any_dname.rpl vendor/unbound/dist/testdata/val_cname_loop1.rpl vendor/unbound/dist/testdata/val_cname_loop2.rpl vendor/unbound/dist/testdata/val_cname_loop3.rpl vendor/unbound/dist/testdata/val_cnameinsectopos.rpl vendor/unbound/dist/testdata/val_cnamenx_dblnsec.rpl vendor/unbound/dist/testdata/val_cnamenx_rcodenx.rpl vendor/unbound/dist/testdata/val_cnameqtype.rpl vendor/unbound/dist/testdata/val_cnametocloser.rpl vendor/unbound/dist/testdata/val_cnametocloser_nosig.rpl vendor/unbound/dist/testdata/val_cnametodname.rpl vendor/unbound/dist/testdata/val_cnametodnametocnametopos.rpl vendor/unbound/dist/testdata/val_cnametoinsecure.rpl vendor/unbound/dist/testdata/val_cnametonodata.rpl vendor/unbound/dist/testdata/val_cnametonsec.rpl vendor/unbound/dist/testdata/val_cnametonx.rpl vendor/unbound/dist/testdata/val_cnametooptin.rpl vendor/unbound/dist/testdata/val_cnametooptout.rpl vendor/unbound/dist/testdata/val_cnametopos.rpl vendor/unbound/dist/testdata/val_cnametoposnowc.rpl vendor/unbound/dist/testdata/val_cnametoposwc.rpl vendor/unbound/dist/testdata/val_cnamewctonodata.rpl vendor/unbound/dist/testdata/val_cnamewctonx.rpl vendor/unbound/dist/testdata/val_cnamewctoposwc.rpl vendor/unbound/dist/testdata/val_dnametoolong.rpl vendor/unbound/dist/testdata/val_dnametopos.rpl vendor/unbound/dist/testdata/val_dnametoposwc.rpl vendor/unbound/dist/testdata/val_dnamewc.rpl vendor/unbound/dist/testdata/val_ds_afterprime.rpl vendor/unbound/dist/testdata/val_ds_cname.rpl vendor/unbound/dist/testdata/val_ds_gost.crpl vendor/unbound/dist/testdata/val_ds_gost_downgrade.crpl vendor/unbound/dist/testdata/val_ds_sha2.crpl vendor/unbound/dist/testdata/val_ds_sha2_downgrade.crpl vendor/unbound/dist/testdata/val_dsnsec.rpl vendor/unbound/dist/testdata/val_entds.rpl vendor/unbound/dist/testdata/val_faildnskey.rpl vendor/unbound/dist/testdata/val_faildnskey_ok.rpl vendor/unbound/dist/testdata/val_fwdds.rpl vendor/unbound/dist/testdata/val_keyprefetch.rpl vendor/unbound/dist/testdata/val_keyprefetch_verify.rpl vendor/unbound/dist/testdata/val_mal_wc.rpl vendor/unbound/dist/testdata/val_negcache_ds.rpl vendor/unbound/dist/testdata/val_negcache_dssoa.rpl vendor/unbound/dist/testdata/val_noadwhennodo.rpl vendor/unbound/dist/testdata/val_nodata.rpl vendor/unbound/dist/testdata/val_nodata_ent.rpl vendor/unbound/dist/testdata/val_nodata_entwc.rpl vendor/unbound/dist/testdata/val_nodata_failsig.rpl vendor/unbound/dist/testdata/val_nodata_hasdata.rpl vendor/unbound/dist/testdata/val_nodata_zonecut.rpl vendor/unbound/dist/testdata/val_nodatawc.rpl vendor/unbound/dist/testdata/val_nodatawc_badce.rpl vendor/unbound/dist/testdata/val_nodatawc_nodeny.rpl vendor/unbound/dist/testdata/val_nodatawc_one.rpl vendor/unbound/dist/testdata/val_nokeyprime.rpl vendor/unbound/dist/testdata/val_nsec3_b1_nameerror.rpl vendor/unbound/dist/testdata/val_nsec3_b1_nameerror_noce.rpl vendor/unbound/dist/testdata/val_nsec3_b1_nameerror_nonc.rpl vendor/unbound/dist/testdata/val_nsec3_b1_nameerror_nowc.rpl vendor/unbound/dist/testdata/val_nsec3_b21_nodataent.rpl vendor/unbound/dist/testdata/val_nsec3_b21_nodataent_wr.rpl vendor/unbound/dist/testdata/val_nsec3_b2_nodata.rpl vendor/unbound/dist/testdata/val_nsec3_b2_nodata_nons.rpl vendor/unbound/dist/testdata/val_nsec3_b3_optout.rpl vendor/unbound/dist/testdata/val_nsec3_b3_optout_negcache.rpl vendor/unbound/dist/testdata/val_nsec3_b3_optout_noce.rpl vendor/unbound/dist/testdata/val_nsec3_b3_optout_nonc.rpl vendor/unbound/dist/testdata/val_nsec3_b4_wild.rpl vendor/unbound/dist/testdata/val_nsec3_b4_wild_wr.rpl vendor/unbound/dist/testdata/val_nsec3_b5_wcnodata.rpl vendor/unbound/dist/testdata/val_nsec3_b5_wcnodata_noce.rpl vendor/unbound/dist/testdata/val_nsec3_b5_wcnodata_nonc.rpl vendor/unbound/dist/testdata/val_nsec3_b5_wcnodata_nowc.rpl vendor/unbound/dist/testdata/val_nsec3_cname_ds.rpl vendor/unbound/dist/testdata/val_nsec3_cname_par.rpl vendor/unbound/dist/testdata/val_nsec3_cname_sub.rpl vendor/unbound/dist/testdata/val_nsec3_iter_high.rpl vendor/unbound/dist/testdata/val_nsec3_nodatawccname.rpl vendor/unbound/dist/testdata/val_nsec3_nods.rpl vendor/unbound/dist/testdata/val_nsec3_nods_badopt.rpl vendor/unbound/dist/testdata/val_nsec3_nods_badsig.rpl vendor/unbound/dist/testdata/val_nsec3_nods_negcache.rpl vendor/unbound/dist/testdata/val_nsec3_nods_soa.rpl vendor/unbound/dist/testdata/val_nsec3_optout_ad.rpl vendor/unbound/dist/testdata/val_nsec3_optout_cache.rpl vendor/unbound/dist/testdata/val_nsec3_wcany.rpl vendor/unbound/dist/testdata/val_nsec3_wcany_nodeny.rpl vendor/unbound/dist/testdata/val_nx.rpl vendor/unbound/dist/testdata/val_nx_nodeny.rpl vendor/unbound/dist/testdata/val_nx_nowc.rpl vendor/unbound/dist/testdata/val_nx_nsec3_collision.rpl vendor/unbound/dist/testdata/val_nx_nsec3_params.rpl vendor/unbound/dist/testdata/val_nx_overreach.rpl vendor/unbound/dist/testdata/val_pos_truncns.rpl vendor/unbound/dist/testdata/val_positive.rpl vendor/unbound/dist/testdata/val_positive_nosigs.rpl vendor/unbound/dist/testdata/val_positive_wc.rpl vendor/unbound/dist/testdata/val_positive_wc_nodeny.rpl vendor/unbound/dist/testdata/val_qds_badanc.rpl vendor/unbound/dist/testdata/val_qds_oneanc.rpl vendor/unbound/dist/testdata/val_qds_twoanc.rpl vendor/unbound/dist/testdata/val_refer_unsignadd.rpl vendor/unbound/dist/testdata/val_referd.rpl vendor/unbound/dist/testdata/val_referglue.rpl vendor/unbound/dist/testdata/val_rrsig.rpl vendor/unbound/dist/testdata/val_secds.rpl vendor/unbound/dist/testdata/val_secds_nosig.rpl vendor/unbound/dist/testdata/val_stub_noroot.rpl vendor/unbound/dist/testdata/val_stubds.rpl vendor/unbound/dist/testdata/val_ta_algo_dnskey.rpl vendor/unbound/dist/testdata/val_ta_algo_missing.rpl vendor/unbound/dist/testdata/val_twocname.rpl vendor/unbound/dist/testdata/val_unalgo_anchor.rpl vendor/unbound/dist/testdata/val_unalgo_dlv.rpl vendor/unbound/dist/testdata/val_unalgo_ds.rpl vendor/unbound/dist/testdata/val_unsec_cname.rpl vendor/unbound/dist/testdata/val_unsecds.rpl vendor/unbound/dist/testdata/val_unsecds_negcache.rpl vendor/unbound/dist/testdata/val_unsecds_qtypeds.rpl vendor/unbound/dist/testdata/val_wild_pos.rpl vendor/unbound/dist/testdata/version_bind.rpl vendor/unbound/dist/testdata/version_bind_hide.rpl vendor/unbound/dist/util/ vendor/unbound/dist/util/alloc.c vendor/unbound/dist/util/alloc.h vendor/unbound/dist/util/config_file.c vendor/unbound/dist/util/config_file.h vendor/unbound/dist/util/configlexer.c vendor/unbound/dist/util/configlexer.lex vendor/unbound/dist/util/configparser.c vendor/unbound/dist/util/configparser.h vendor/unbound/dist/util/configparser.y vendor/unbound/dist/util/configyyrename.h vendor/unbound/dist/util/data/ vendor/unbound/dist/util/data/dname.c vendor/unbound/dist/util/data/dname.h vendor/unbound/dist/util/data/msgencode.c vendor/unbound/dist/util/data/msgencode.h vendor/unbound/dist/util/data/msgparse.c vendor/unbound/dist/util/data/msgparse.h vendor/unbound/dist/util/data/msgreply.c vendor/unbound/dist/util/data/msgreply.h vendor/unbound/dist/util/data/packed_rrset.c vendor/unbound/dist/util/data/packed_rrset.h vendor/unbound/dist/util/fptr_wlist.c vendor/unbound/dist/util/fptr_wlist.h vendor/unbound/dist/util/iana_ports.inc vendor/unbound/dist/util/locks.c vendor/unbound/dist/util/locks.h vendor/unbound/dist/util/log.c vendor/unbound/dist/util/log.h vendor/unbound/dist/util/mini_event.c vendor/unbound/dist/util/mini_event.h vendor/unbound/dist/util/module.c vendor/unbound/dist/util/module.h vendor/unbound/dist/util/net_help.c vendor/unbound/dist/util/net_help.h vendor/unbound/dist/util/netevent.c vendor/unbound/dist/util/netevent.h vendor/unbound/dist/util/random.c vendor/unbound/dist/util/random.h vendor/unbound/dist/util/rbtree.c vendor/unbound/dist/util/rbtree.h vendor/unbound/dist/util/regional.c vendor/unbound/dist/util/regional.h vendor/unbound/dist/util/rtt.c vendor/unbound/dist/util/rtt.h vendor/unbound/dist/util/storage/ vendor/unbound/dist/util/storage/dnstree.c vendor/unbound/dist/util/storage/dnstree.h vendor/unbound/dist/util/storage/lookup3.c vendor/unbound/dist/util/storage/lookup3.h vendor/unbound/dist/util/storage/lruhash.c vendor/unbound/dist/util/storage/lruhash.h vendor/unbound/dist/util/storage/slabhash.c vendor/unbound/dist/util/storage/slabhash.h vendor/unbound/dist/util/timehist.c vendor/unbound/dist/util/timehist.h vendor/unbound/dist/util/tube.c vendor/unbound/dist/util/tube.h vendor/unbound/dist/util/winsock_event.c vendor/unbound/dist/util/winsock_event.h vendor/unbound/dist/validator/ vendor/unbound/dist/validator/autotrust.c vendor/unbound/dist/validator/autotrust.h vendor/unbound/dist/validator/val_anchor.c vendor/unbound/dist/validator/val_anchor.h vendor/unbound/dist/validator/val_kcache.c vendor/unbound/dist/validator/val_kcache.h vendor/unbound/dist/validator/val_kentry.c vendor/unbound/dist/validator/val_kentry.h vendor/unbound/dist/validator/val_neg.c vendor/unbound/dist/validator/val_neg.h vendor/unbound/dist/validator/val_nsec.c vendor/unbound/dist/validator/val_nsec.h vendor/unbound/dist/validator/val_nsec3.c vendor/unbound/dist/validator/val_nsec3.h vendor/unbound/dist/validator/val_sigcrypt.c vendor/unbound/dist/validator/val_sigcrypt.h vendor/unbound/dist/validator/val_utils.c vendor/unbound/dist/validator/val_utils.h vendor/unbound/dist/validator/validator.c vendor/unbound/dist/validator/validator.h vendor/unbound/dist/winrc/ vendor/unbound/dist/winrc/README.txt vendor/unbound/dist/winrc/anchor-update.c vendor/unbound/dist/winrc/combined.ico (contents, props changed) vendor/unbound/dist/winrc/gen_msg.bin (contents, props changed) vendor/unbound/dist/winrc/gen_msg.mc vendor/unbound/dist/winrc/rsrc_anchorupd.rc vendor/unbound/dist/winrc/rsrc_svcinst.rc vendor/unbound/dist/winrc/rsrc_svcuninst.rc vendor/unbound/dist/winrc/rsrc_unbound.rc vendor/unbound/dist/winrc/rsrc_unbound_anchor.rc vendor/unbound/dist/winrc/rsrc_unbound_checkconf.rc vendor/unbound/dist/winrc/rsrc_unbound_control.rc vendor/unbound/dist/winrc/rsrc_unbound_host.rc vendor/unbound/dist/winrc/service.conf vendor/unbound/dist/winrc/setup.nsi vendor/unbound/dist/winrc/setup_left.bmp (contents, props changed) vendor/unbound/dist/winrc/setup_top.bmp (contents, props changed) vendor/unbound/dist/winrc/unbound-service-install.c vendor/unbound/dist/winrc/unbound-service-remove.c vendor/unbound/dist/winrc/unbound-website.url vendor/unbound/dist/winrc/unbound16.ico (contents, props changed) vendor/unbound/dist/winrc/unbound32.ico (contents, props changed) vendor/unbound/dist/winrc/unbound48.ico (contents, props changed) vendor/unbound/dist/winrc/unbound64.ico (contents, props changed) vendor/unbound/dist/winrc/unbound64.png (contents, props changed) vendor/unbound/dist/winrc/vista_admin.manifest (contents, props changed) vendor/unbound/dist/winrc/vista_user.manifest (contents, props changed) vendor/unbound/dist/winrc/w_inst.c vendor/unbound/dist/winrc/w_inst.h vendor/unbound/dist/winrc/win_svc.c vendor/unbound/dist/winrc/win_svc.h Added: vendor/unbound/dist/LICENSE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/unbound/dist/LICENSE Wed Jul 4 14:24:26 2012 (r238106) @@ -0,0 +1,30 @@ +Copyright (c) 2007, NLnet Labs. All rights reserved. + +This software is open source. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +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. + +Neither the name of the NLNET LABS nor the names of its contributors may +be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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. Added: vendor/unbound/dist/Makefile.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/unbound/dist/Makefile.in Wed Jul 4 14:24:26 2012 (r238106) @@ -0,0 +1,1193 @@ +# Copyright 2007 NLnet Labs +# See the file LICENSE for the license + +SHELL=@SHELL@ +VERSION=@PACKAGE_VERSION@ +srcdir=@srcdir@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@ +sbindir=@sbindir@ +mandir=@mandir@ +libdir=@libdir@ +# datarootdir is here to please some checkers, use datadir. +datarootdir=@datarootdir@ +datadir=@datadir@ +includedir=@includedir@ +doxygen=@doxygen@ +libtool=@libtool@ +ldnsdir=@ldnsdir@ +staticexe=@staticexe@ +EXEEXT=@EXEEXT@ +configfile=@ub_conf_file@ +UNBOUND_RUN_DIR=@UNBOUND_RUN_DIR@ +CHECKLOCK_SRC=testcode/checklocks.c +CHECKLOCK_OBJ=@CHECKLOCK_OBJ@ +WITH_PYTHONMODULE=@WITH_PYTHONMODULE@ +WITH_PYUNBOUND=@WITH_PYUNBOUND@ +PYTHON_SITE_PKG=@PYTHON_SITE_PKG@ +PYTHONMOD_INSTALL=@PYTHONMOD_INSTALL@ +PYTHONMOD_UNINSTALL=@PYTHONMOD_UNINSTALL@ +PYUNBOUND_INSTALL=@PYUNBOUND_INSTALL@ +PYUNBOUND_UNINSTALL=@PYUNBOUND_UNINSTALL@ + +# _unbound.la if pyunbound enabled. +PYUNBOUND_TARGET=@PYUNBOUND_TARGET@ + +# override $U variable which is used by autotools for deansification (for +# K&R C compilers), but causes problems if $U is defined in the env). +U= + +SWIG=@SWIG@ +YACC=@YACC@ +LEX=@LEX@ +STRIP=@STRIP@ +CC=@CC@ +CPPFLAGS=-I. @CPPFLAGS@ +CFLAGS=@CFLAGS@ +LDFLAGS=@LDFLAGS@ +LIBS=@LIBS@ +LIBOBJS=@LIBOBJS@ +# filter out ctime_r from compat obj. +LIBOBJ_WITHOUT_CTIME=@LIBOBJ_WITHOUT_CTIME@ +RUNTIME_PATH=@RUNTIME_PATH@ +DEPFLAG=@DEPFLAG@ +DATE=@CONFIG_DATE@ +LIBTOOL=$(libtool) +BUILD=build/ +UBSYMS=@UBSYMS@ +EXTRALINK=@EXTRALINK@ + +WINDRES=@WINDRES@ +LINT=splint +LINTFLAGS=+quiet -weak -warnposix -unrecog -Din_addr_t=uint32_t -Du_int=unsigned -Du_char=uint8_t -preproc -Drlimit=rlimit64 -D__gnuc_va_list=va_list +#-Dglob64=glob -Dglobfree64=globfree +# compat with openssl linux edition. +LINTFLAGS+="-DBN_ULONG=unsigned long" -Dkrb5_int32=int "-Dkrb5_ui_4=unsigned int" -DPQ_64BIT=uint64_t -DRC4_INT=unsigned -fixedformalarray -D"ENGINE=unsigned" -D"RSA=unsigned" -D"DSA=unsigned" -D"EVP_PKEY=unsigned" -D"EVP_MD=unsigned" -D"SSL=unsigned" -D"SSL_CTX=unsigned" -D"X509=unsigned" -D"RC4_KEY=unsigned" -D"EVP_MD_CTX=unsigned" -D"ECDSA_SIG=DSA_SIG" +# compat with NetBSD +LINTFLAGS+=@NETBSD_LINTFLAGS@ +# compat with OpenBSD +LINTFLAGS+="-Dsigset_t=long" +# FreeBSD8 +LINTFLAGS+="-D__uint16_t=uint16_t" + +INSTALL=$(srcdir)/install-sh + +#pythonmod.c is not here, it is mentioned by itself in its own rules, +#makedepend fails on missing interface.h otherwise. +PYTHONMOD_SRC=pythonmod/pythonmod_utils.c +# pythonmod.lo pythonmod_utils.lo if python mod enabled. +PYTHONMOD_OBJ=@PYTHONMOD_OBJ@ +PYTHONMOD_HEADER=@PYTHONMOD_HEADER@ +# libunbound/python/libunbound_wrap.c is dealt with by its own rules. +PYUNBOUND_SRC= +# libunbound_wrap.lo if python libunbound wrapper enabled. +PYUNBOUND_OBJ=@PYUNBOUND_OBJ@ +COMMON_SRC=services/cache/dns.c services/cache/infra.c services/cache/rrset.c \ +util/data/dname.c util/data/msgencode.c util/data/msgparse.c \ +util/data/msgreply.c util/data/packed_rrset.c iterator/iterator.c \ +iterator/iter_delegpt.c iterator/iter_donotq.c iterator/iter_fwd.c \ +iterator/iter_hints.c iterator/iter_priv.c iterator/iter_resptype.c \ +iterator/iter_scrub.c iterator/iter_utils.c services/listen_dnsport.c \ +services/localzone.c services/mesh.c services/modstack.c \ +services/outbound_list.c services/outside_network.c util/alloc.c \ +util/config_file.c util/configlexer.c util/configparser.c \ +util/fptr_wlist.c util/locks.c util/log.c util/mini_event.c util/module.c \ +util/netevent.c util/net_help.c util/random.c util/rbtree.c util/regional.c \ +util/rtt.c util/storage/dnstree.c util/storage/lookup3.c \ +util/storage/lruhash.c util/storage/slabhash.c util/timehist.c util/tube.c \ +util/winsock_event.c validator/autotrust.c validator/val_anchor.c \ +validator/validator.c validator/val_kcache.c validator/val_kentry.c \ +validator/val_neg.c validator/val_nsec3.c validator/val_nsec.c \ +validator/val_sigcrypt.c validator/val_utils.c $(CHECKLOCK_SRC) +COMMON_OBJ_WITHOUT_NETCALL=dns.lo infra.lo rrset.lo dname.lo msgencode.lo \ +msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \ +iter_donotq.lo iter_fwd.lo iter_hints.lo iter_priv.lo iter_resptype.lo \ +iter_scrub.lo iter_utils.lo localzone.lo mesh.lo modstack.lo \ +outbound_list.lo alloc.lo config_file.lo configlexer.lo configparser.lo \ +fptr_wlist.lo locks.lo log.lo mini_event.lo module.lo net_help.lo \ +random.lo rbtree.lo regional.lo rtt.lo dnstree.lo lookup3.lo lruhash.lo \ +slabhash.lo timehist.lo tube.lo winsock_event.lo autotrust.lo val_anchor.lo \ +validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ +val_sigcrypt.lo val_utils.lo $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) +COMMON_OBJ=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ +outside_network.lo +# set to $COMMON_OBJ or to "" if --enableallsymbols +COMMON_OBJ_ALL_SYMBOLS=@COMMON_OBJ_ALL_SYMBOLS@ +COMPAT_SRC=compat/ctime_r.c compat/fake-rfc2553.c compat/gmtime_r.c \ +compat/inet_aton.c compat/inet_ntop.c compat/inet_pton.c compat/malloc.c \ +compat/memcmp.c compat/memmove.c compat/snprintf.c compat/strlcpy.c \ +compat/strptime.c +COMPAT_OBJ=$(LIBOBJS:.o=.lo) +COMPAT_OBJ_WITHOUT_CTIME=$(LIBOBJ_WITHOUT_CTIME:.o=.lo) +UNITTEST_SRC=testcode/unitanchor.c testcode/unitdname.c \ +testcode/unitlruhash.c testcode/unitmain.c testcode/unitmsgparse.c \ +testcode/unitneg.c testcode/unitregional.c testcode/unitslabhash.c \ +testcode/unitverify.c testcode/readhex.c testcode/ldns-testpkts.c +UNITTEST_OBJ=unitanchor.lo unitdname.lo unitlruhash.lo unitmain.lo \ +unitmsgparse.lo unitneg.lo unitregional.lo unitslabhash.lo unitverify.lo \ +readhex.lo ldns-testpkts.lo +UNITTEST_OBJ_LINK=$(UNITTEST_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) +DAEMON_SRC=daemon/acl_list.c daemon/cachedump.c daemon/daemon.c \ +daemon/remote.c daemon/stats.c daemon/unbound.c daemon/worker.c @WIN_DAEMON_SRC@ +DAEMON_OBJ=acl_list.lo cachedump.lo daemon.lo remote.lo stats.lo unbound.lo \ +worker.lo @WIN_DAEMON_OBJ@ +DAEMON_OBJ_LINK=$(DAEMON_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) \ +$(COMPAT_OBJ) @WIN_DAEMON_OBJ_LINK@ +CHECKCONF_SRC=smallapp/unbound-checkconf.c smallapp/worker_cb.c +CHECKCONF_OBJ=unbound-checkconf.lo worker_cb.lo +CHECKCONF_OBJ_LINK=$(CHECKCONF_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) \ +$(COMPAT_OBJ) @WIN_CHECKCONF_OBJ_LINK@ +CONTROL_SRC=smallapp/unbound-control.c +CONTROL_OBJ=unbound-control.lo +CONTROL_OBJ_LINK=$(CONTROL_OBJ) worker_cb.lo $(COMMON_OBJ_ALL_SYMBOLS) \ +$(COMPAT_OBJ) @WIN_CONTROL_OBJ_LINK@ +HOST_SRC=smallapp/unbound-host.c +HOST_OBJ=unbound-host.lo +HOST_OBJ_LINK=$(HOST_OBJ) $(COMPAT_OBJ_WITHOUT_CTIME) @WIN_HOST_OBJ_LINK@ +UBANCHOR_SRC=smallapp/unbound-anchor.c +UBANCHOR_OBJ=unbound-anchor.lo +UBANCHOR_OBJ_LINK=$(UBANCHOR_OBJ) \ +$(COMPAT_OBJ_WITHOUT_CTIME) @WIN_UBANCHOR_OBJ_LINK@ +TESTBOUND_SRC=testcode/testbound.c testcode/ldns-testpkts.c \ +daemon/worker.c daemon/acl_list.c daemon/daemon.c daemon/stats.c \ +testcode/replay.c testcode/fake_event.c +TESTBOUND_OBJ=testbound.lo replay.lo fake_event.lo +TESTBOUND_OBJ_LINK=$(TESTBOUND_OBJ) ldns-testpkts.lo worker.lo acl_list.lo \ +daemon.lo stats.lo $(COMMON_OBJ_WITHOUT_NETCALL) $(COMPAT_OBJ) +LOCKVERIFY_SRC=testcode/lock_verify.c +LOCKVERIFY_OBJ=lock_verify.lo +LOCKVERIFY_OBJ_LINK=$(LOCKVERIFY_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) +PETAL_SRC=testcode/petal.c +PETAL_OBJ=petal.lo +PETAL_OBJ_LINK=$(PETAL_OBJ) $(COMPAT_OBJ_WITHOUT_CTIME) +PKTVIEW_SRC=testcode/pktview.c testcode/readhex.c +PKTVIEW_OBJ=pktview.lo +PKTVIEW_OBJ_LINK=$(PKTVIEW_OBJ) worker_cb.lo readhex.lo $(COMMON_OBJ) \ +$(COMPAT_OBJ) +SIGNIT_SRC=testcode/signit.c +SIGNIT_OBJ=signit.lo +SIGNIT_OBJ_LINK=$(SIGNIT_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) +MEMSTATS_SRC=testcode/memstats.c +MEMSTATS_OBJ=memstats.lo +MEMSTATS_OBJ_LINK=$(MEMSTATS_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) +ASYNCLOOK_SRC=testcode/asynclook.c +ASYNCLOOK_OBJ=asynclook.lo +ASYNCLOOK_OBJ_LINK=$(ASYNCLOOK_OBJ) log.lo locks.lo $(COMPAT_OBJ) +STREAMTCP_SRC=testcode/streamtcp.c +STREAMTCP_OBJ=streamtcp.lo +STREAMTCP_OBJ_LINK=$(STREAMTCP_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) +PERF_SRC=testcode/perf.c +PERF_OBJ=perf.lo +PERF_OBJ_LINK=$(PERF_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) +DELAYER_SRC=testcode/delayer.c +DELAYER_OBJ=delayer.lo +DELAYER_OBJ_LINK=$(DELAYER_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) +HARVEST_SRC=testcode/harvest.c +HARVEST_OBJ=harvest.lo +HARVEST_OBJ_LINK=$(HARVEST_OBJ) $(COMPAT_OBJ_WITHOUT_CTIME) +LIBUNBOUND_SRC=libunbound/context.c libunbound/libunbound.c \ +libunbound/libworker.c +LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo +LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ) $(COMPAT_OBJ) + +# win apps or "" if not on windows +WINAPPS=@WINAPPS@ +WIN_DAEMON_THE_SRC=winrc/win_svc.c winrc/w_inst.c +SVCINST_SRC=winrc/unbound-service-install.c +SVCINST_OBJ=unbound-service-install.lo +SVCINST_OBJ_LINK=$(SVCINST_OBJ) w_inst.lo rsrc_svcinst.o $(COMPAT_OBJ_WITHOUT_CTIME) +SVCUNINST_SRC=winrc/unbound-service-remove.c +SVCUNINST_OBJ=unbound-service-remove.lo +SVCUNINST_OBJ_LINK=$(SVCUNINST_OBJ) w_inst.lo rsrc_svcuninst.o \ +$(COMPAT_OBJ_WITHOUT_CTIME) +ANCHORUPD_SRC=winrc/anchor-update.c +ANCHORUPD_OBJ=anchor-update.lo +ANCHORUPD_OBJ_LINK=$(ANCHORUPD_OBJ) rsrc_anchorupd.o $(COMPAT_OBJ_WITHOUT_CTIME) +RSRC_OBJ=rsrc_svcinst.o rsrc_svcuninst.o rsrc_anchorupd.o rsrc_unbound.o \ + rsrc_unbound_host.o rsrc_unbound_anchor.o rsrc_unbound_control.o \ + rsrc_unbound_checkconf.o + +ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) \ + $(TESTBOUND_SRC) $(LOCKVERIFY_SRC) $(PKTVIEW_SRC) $(SIGNIT_SRC) \ + $(MEMSTATS_SRC) $(CHECKCONF_SRC) $(LIBUNBOUND_SRC) $(HOST_SRC) \ + $(ASYNCLOOK_SRC) $(STREAMTCP_SRC) $(PERF_SRC) $(DELAYER_SRC) \ + $(HARVEST_SRC) $(CONTROL_SRC) $(UBANCHOR_SRC) $(PETAL_SRC) \ + $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC)\ + $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) +ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ + $(TESTBOUND_OBJ) $(LOCKVERIFY_OBJ) $(PKTVIEW_OBJ) $(SIGNIT_OBJ) \ + $(MEMSTATS_OBJ) $(CHECKCONF_OBJ) $(LIBUNBOUND_OBJ) $(HOST_OBJ) \ + $(ASYNCLOOK_OBJ) $(STREAMTCP_OBJ) $(PERF_OBJ) $(DELAYER_OBJ) \ + $(HARVEST_OBJ) $(CONTROL_OBJ) $(UBANCHOR_OBJ) $(PETAL_OBJ) \ + $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \ + $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) + +COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) +LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) +LINK_LIB=$(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(staticexe) -version-info @LIBUNBOUND_CURRENT@:@LIBUNBOUND_REVISION@:@LIBUNBOUND_AGE@ -no-undefined + +.PHONY: clean realclean doc lint all install uninstall tests test strip lib longtest longcheck check + +all: $(COMMON_OBJ) unbound$(EXEEXT) unbound-checkconf$(EXEEXT) lib unbound-host$(EXEEXT) unbound-control$(EXEEXT) unbound-anchor$(EXEEXT) unbound-control-setup $(WINAPPS) $(PYUNBOUND_TARGET) + +# compat with BSD make, register suffix, and an implicit rule to actualise it. +.SUFFIXES: .lo +.c.lo: + $(COMPILE) -o $@ -c $< + +$(ALL_OBJ): + @@SOURCEDETERMINE@ + $(COMPILE) -o $@ -c @SOURCEFILE@ + +$(RSRC_OBJ): + @@SOURCEDETERMINE@ + $(WINDRES) $(CPPFLAGS) @SOURCEFILE@ $@ + +rsrc_svcinst.o: $(srcdir)/winrc/rsrc_svcinst.rc config.h +rsrc_svcuninst.o: $(srcdir)/winrc/rsrc_svcuninst.rc config.h +rsrc_anchorupd.o: $(srcdir)/winrc/rsrc_anchorupd.rc config.h +rsrc_unbound.o: $(srcdir)/winrc/rsrc_unbound.rc config.h +rsrc_unbound_host.o: $(srcdir)/winrc/rsrc_unbound_host.rc config.h +rsrc_unbound_anchor.o: $(srcdir)/winrc/rsrc_unbound_anchor.rc config.h +rsrc_unbound_control.o: $(srcdir)/winrc/rsrc_unbound_control.rc config.h +rsrc_unbound_checkconf.o: $(srcdir)/winrc/rsrc_unbound_checkconf.rc config.h + +TEST_BIN=asynclook$(EXEEXT) delayer$(EXEEXT) harvest$(EXEEXT) \ + lock-verify$(EXEEXT) memstats$(EXEEXT) perf$(EXEEXT) \ + petal$(EXEEXT) pktview$(EXEEXT) signit$(EXEEXT) streamtcp$(EXEEXT) \ + testbound$(EXEEXT) unittest$(EXEEXT) +tests: all $(TEST_BIN) + +check: test +longcheck: longtest + +test: unittest$(EXEEXT) testbound$(EXEEXT) + ./unittest$(EXEEXT) + ./testbound$(EXEEXT) -s + for x in testdata/*.rpl; do echo -n "$$x "; if ./testbound$(EXEEXT) -p $$x >/dev/null 2>&1; then echo OK; else echo failed; exit 1; fi done + @echo test OK + +longtest: tests + if test -x "`which bash`"; then bash testcode/do-tests.sh; else sh testcode/do-tests.sh; fi + +lib: libunbound.la + +libunbound.la: $(LIBUNBOUND_OBJ_LINK) + $(LINK_LIB) $(UBSYMS) -o $@ $(LIBUNBOUND_OBJ_LINK) -rpath $(libdir) -lssl $(LIBS) + +unbound$(EXEEXT): $(DAEMON_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS) + +unbound-checkconf$(EXEEXT): $(CHECKCONF_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS) + +unbound-control$(EXEEXT): $(CONTROL_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS) + +unbound-host$(EXEEXT): $(HOST_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) + +unbound-anchor$(EXEEXT): $(UBANCHOR_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(UBANCHOR_OBJ_LINK) -L. -L.libs -lunbound -lexpat -lssl $(LIBS) + +unbound-service-install$(EXEEXT): $(SVCINST_OBJ_LINK) + $(LINK) -o $@ $(SVCINST_OBJ_LINK) $(LIBS) + +unbound-service-remove$(EXEEXT): $(SVCUNINST_OBJ_LINK) + $(LINK) -o $@ $(SVCUNINST_OBJ_LINK) $(LIBS) + +anchor-update$(EXEEXT): $(ANCHORUPD_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(ANCHORUPD_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) + +unittest$(EXEEXT): $(UNITTEST_OBJ_LINK) + $(LINK) -o $@ $(UNITTEST_OBJ_LINK) -lssl $(LIBS) + +testbound$(EXEEXT): $(TESTBOUND_OBJ_LINK) + $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) -lssl $(LIBS) + +lock-verify$(EXEEXT): $(LOCKVERIFY_OBJ_LINK) + $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) -lssl $(LIBS) + +petal$(EXEEXT): $(PETAL_OBJ_LINK) + $(LINK) -o $@ $(PETAL_OBJ_LINK) -lssl $(LIBS) + +pktview$(EXEEXT): $(PKTVIEW_OBJ_LINK) + $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) -lssl $(LIBS) + +signit$(EXEEXT): $(SIGNIT_OBJ_LINK) + $(LINK) -o $@ $(SIGNIT_OBJ_LINK) -lssl $(LIBS) + +memstats$(EXEEXT): $(MEMSTATS_OBJ_LINK) + $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) -lssl $(LIBS) + +asynclook$(EXEEXT): $(ASYNCLOOK_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) $(LIBS) -L. -L.libs -lunbound + +streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) + $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) -lssl $(LIBS) + +perf$(EXEEXT): $(PERF_OBJ_LINK) + $(LINK) -o $@ $(PERF_OBJ_LINK) -lssl $(LIBS) + +delayer$(EXEEXT): $(DELAYER_OBJ_LINK) + $(LINK) -o $@ $(DELAYER_OBJ_LINK) -lssl $(LIBS) + +harvest$(EXEEXT): $(HARVEST_OBJ_LINK) libunbound.la + $(LINK) -o $@ $(HARVEST_OBJ_LINK) $(LIBS) -L. -L.libs -lunbound + +unbound-control-setup: $(srcdir)/smallapp/unbound-control-setup.sh + sed -e 's:^DESTDIR=.*$$:DESTDIR=$(UNBOUND_RUN_DIR):' < $(srcdir)/smallapp/unbound-control-setup.sh > $@ + -chmod +x $@ + +#testcode/ldns-testpkts.c: $(ldnsdir)/examples/ldns-testpkts.c \ +# $(ldnsdir)/examples/ldns-testpkts.h +# cp $(ldnsdir)/examples/ldns-testpkts.c testcode/ldns-testpkts.c +# cp $(ldnsdir)/examples/ldns-testpkts.h testcode/ldns-testpkts.h + +# Python Module +pythonmod.lo pythonmod.o: $(srcdir)/pythonmod/pythonmod.c config.h \ + pythonmod/interface.h \ + $(srcdir)/pythonmod/pythonmod.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/config_file.h \ + $(srcdir)/pythonmod/pythonmod_utils.h $(srcdir)/util/netevent.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h \ + $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + +pythonmod/interface.h: $(srcdir)/pythonmod/interface.i $(srcdir)/config.h + @-if test ! -d pythonmod; then $(INSTALL) -d pythonmod; fi + $(SWIG) $(CPPFLAGS) -o $@ -python $(srcdir)/pythonmod/interface.i + +libunbound_wrap.lo libunbound_wrap.o: libunbound/python/libunbound_wrap.c \ + $(srcdir)/libunbound/unbound.h +libunbound/python/libunbound_wrap.c: $(srcdir)/libunbound/python/libunbound.i $(srcdir)/libunbound/unbound.h + @-if test ! -d libunbound/python; then $(INSTALL) -d libunbound/python; fi + $(SWIG) -python -o $@ $(CPPFLAGS) $(srcdir)/libunbound/python/libunbound.i + +# Pyunbound python unbound wrapper +_unbound.la: libunbound_wrap.lo libunbound.la + $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -version-info @LIBUNBOUND_CURRENT@:@LIBUNBOUND_REVISION@:@LIBUNBOUND_AGE@ -no-undefined -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) L. -L.libs -lunbound $(LIBS) + +util/config_file.c: util/configparser.h +util/configlexer.c: $(srcdir)/util/configlexer.lex util/configparser.h + @-if test ! -d util; then $(INSTALL) -d util; fi + if test "$(LEX)" != ":"; then \ + echo "#include \"config.h\"" > $@ ;\ + echo "#include \"util/configyyrename.h\"" >> $@ ;\ + $(LEX) -t $(srcdir)/util/configlexer.lex >> $@ ;\ + fi + +util/configparser.c util/configparser.h: $(srcdir)/util/configparser.y + @-if test ! -d util; then $(INSTALL) -d util; fi + $(YACC) -d -o util/configparser.c $(srcdir)/util/configparser.y + +clean: + rm -f *.o *.d *.lo *~ tags + rm -f unbound$(EXEEXT) unbound-checkconf$(EXEEXT) unbound-host$(EXEEXT) unbound-control$(EXEEXT) unbound-anchor$(EXEEXT) unbound-control-setup libunbound.la + rm -f $(ALL_SRC:.c=.lint) + rm -rf autom4te.cache .libs build doc/html doc/xml + +realclean: clean + rm -f config.status config.log config.h.in config.h + rm -f configure config.sub config.guess ltmain.sh aclocal.m4 libtool + rm -f util/configlexer.c util/configparser.c util/configparser.h + rm -f $(TEST_BIN) + rm -f Makefile + +.SUFFIXES: .lint +.c.lint: + $(LINT) $(LINTFLAGS) -I. -I$(srcdir) -I$(ldnsdir)/include $< + touch $@ + +util/configparser.lint util/configlexer.lint pythonmod/pythonmod.lint libunbound/python/libunbound_wrap.lint: + # skip lint for generated code + touch $@ + +winrc/win_svc.lint winrc/w_inst.lint winrc/unbound-service-install.lint winrc/unbound-service-remove.lint: + # skip lint for windows types + touch $@ + +lint: $(ALL_SRC:.c=.lint) + +tags: $(srcdir)/*.[ch] $(srcdir)/*/*.[ch] + ctags -f $(srcdir)/tags $(srcdir)/*.[ch] $(srcdir)/*/*.[ch] + +doc: + if test -n "$(doxygen)"; then \ + $(doxygen) $(srcdir)/doc/unbound.doxygen; fi + if test "$(WITH_PYUNBOUND)" = "yes" -o "$(WITH_PYTHONMODULE)" = "yes"; \ + then if test -x "`which sphinx-build 2>&1`"; then \ + sphinx-build -b html pythonmod/doc doc/html/pythonmod; \ + sphinx-build -b html libunbound/python/doc doc/html/pyunbound;\ + fi ;\ + fi + +strip: + $(STRIP) unbound$(EXEEXT) + $(STRIP) unbound-checkconf$(EXEEXT) + $(STRIP) unbound-control$(EXEEXT) + $(STRIP) unbound-host$(EXEEXT) + $(STRIP) unbound-anchor$(EXEEXT) + +pythonmod-install: + $(INSTALL) -m 755 -d $(DESTDIR)$(PYTHON_SITE_PKG) + $(INSTALL) -c -m 644 pythonmod/unboundmodule.py $(DESTDIR)$(PYTHON_SITE_PKG)/unboundmodule.py + +pyunbound-install: + $(INSTALL) -m 755 -d $(DESTDIR)$(PYTHON_SITE_PKG) + $(INSTALL) -c -m 644 libunbound/python/unbound.py $(DESTDIR)$(PYTHON_SITE_PKG)/unbound.py + $(LIBTOOL) --mode=install cp _unbound.la $(DESTDIR)$(PYTHON_SITE_PKG) + $(LIBTOOL) --mode=finish $(DESTDIR)$(PYTHON_SITE_PKG) + +install: all $(PYTHONMOD_INSTALL) $(PYUNBOUND_INSTALL) + $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir) + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir) + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man8 + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man5 + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man3 + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 + $(INSTALL) -m 755 -d $(DESTDIR)$(libdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(includedir) + $(LIBTOOL) --mode=install cp unbound$(EXEEXT) $(DESTDIR)$(sbindir)/unbound$(EXEEXT) + $(LIBTOOL) --mode=install cp unbound-checkconf$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-checkconf$(EXEEXT) + $(LIBTOOL) --mode=install cp unbound-control$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control$(EXEEXT) + $(LIBTOOL) --mode=install cp unbound-host$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-host$(EXEEXT) + $(LIBTOOL) --mode=install cp unbound-anchor$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-anchor$(EXEEXT) + $(INSTALL) -c -m 644 doc/unbound.8 $(DESTDIR)$(mandir)/man8 + $(INSTALL) -c -m 644 doc/unbound-checkconf.8 $(DESTDIR)$(mandir)/man8 + $(INSTALL) -c -m 644 doc/unbound-control.8 $(DESTDIR)$(mandir)/man8 + $(INSTALL) -c -m 644 doc/unbound-anchor.8 $(DESTDIR)$(mandir)/man8 + $(INSTALL) -c -m 644 doc/unbound.conf.5 $(DESTDIR)$(mandir)/man5 + $(INSTALL) -c -m 644 $(srcdir)/doc/unbound-host.1 $(DESTDIR)$(mandir)/man1 + $(INSTALL) -c -m 644 doc/libunbound.3 $(DESTDIR)$(mandir)/man3 + $(INSTALL) -c -m 755 unbound-control-setup $(DESTDIR)$(sbindir)/unbound-control-setup + if test ! -e $(DESTDIR)$(configfile); then $(INSTALL) -d `dirname $(DESTDIR)$(configfile)`; $(INSTALL) -c -m 644 doc/example.conf $(DESTDIR)$(configfile); fi + $(LIBTOOL) --mode=install cp $(srcdir)/libunbound/unbound.h $(DESTDIR)$(includedir)/unbound.h + $(LIBTOOL) --mode=install cp libunbound.la $(DESTDIR)$(libdir) + $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir) + +pythonmod-uninstall: + rm -f -- $(DESTDIR)$(PYTHON_SITE_PKG)/unboundmodule.py + +pyunbound-uninstall: + rm -f -- $(DESTDIR)$(PYTHON_SITE_PKG)/unbound.py + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(PYTHON_SITE_PKG)/_unbound.la + +uninstall: $(PYTHONMOD_UNINSTALL) $(PYUNBOUND_UNINSTALL) + rm -f -- $(DESTDIR)$(sbindir)/unbound$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-checkconf$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-host$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-anchor$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control-setup + rm -f -- $(DESTDIR)$(mandir)/man8/unbound.8 $(DESTDIR)$(mandir)/man8/unbound-checkconf.8 $(DESTDIR)$(mandir)/man5/unbound.conf.5 $(DESTDIR)$(mandir)/man8/unbound-control.8 $(DESTDIR)$(mandir)/man8/unbound-anchor.8 + rm -f -- $(DESTDIR)$(mandir)/man1/unbound-host.1 $(DESTDIR)$(mandir)/man3/libunbound.3 + rm -f -- $(DESTDIR)$(includedir)/unbound.h + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/libunbound.la + @echo + @echo "You still need to remove "`dirname $(DESTDIR)$(configfile)`" , $(DESTDIR)$(configfile) by hand" + +iana_update: + curl -o port-numbers.tmp http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml --compressed + if file port-numbers.tmp | grep 'gzip' >/dev/null; then zcat port-numbers.tmp; else cat port-numbers.tmp; fi | awk '// {p=0;} /udp/ {p=1;} /[^u]/ {p=0;} /Decomissioned|Decommissioned|Removed|De-registered|unassigned|Unassigned|Reserved/ {u=1;} // { if(u==1) {u=0;} else { if(p==1) { match($$0,/[0-9]+/); print substr($$0, RSTART, RLENGTH) ","}}}' | sort -nu > util/iana_ports.inc + rm -f port-numbers.tmp + +# dependency generation +DEPEND_TMP=depend1073.tmp +DEPEND_TMP2=depend1074.tmp +DEPEND_TARGET=Makefile +DEPEND_TARGET2=Makefile.in +# actions: generate deplines from gcc, +# then, filter out home/xx, /usr/xx and /opt/xx lines (some cc already do this) +# then, remove empty " \" lines +# then, add srcdir before .c and .h in deps. +# then, remove srcdir from the (generated) parser and lexer. +# and mention the .lo +depend: + (cd $(srcdir) ; $(CC) $(DEPFLAG) $(CPPFLAGS) $(CFLAGS) $(ALL_SRC) $(COMPAT_SRC)) | \ + sed -e 's!'$$HOME'[^ ]* !!g' -e 's!'$$HOME'[^ ]*$$!!g' \ + -e 's!/usr[^ ]* !!g' -e 's!/usr[^ ]*$$!!g' \ + -e 's!/opt[^ ]* !!g' -e 's!/opt[^ ]*$$!!g' | \ + sed -e '/^ \\$$/d' | \ + sed -e 's? *\([^ ]*\.[ch]\)? $$(srcdir)/\1?g' | \ + sed -e 's? *\([^ ]*\.inc\)? $$(srcdir)/\1?g' | \ + sed -e 's?$$(srcdir)/config.h?config.h?g' \ + -e 's?$$(srcdir)/util/configlexer.c?util/configlexer.c?g' \ + -e 's?$$(srcdir)/util/configparser.c?util/configparser.c?g' \ + -e 's?$$(srcdir)/util/configparser.h?util/configparser.h?g' \ + -e 's?$$(srcdir)/pythonmod/pythonmod.h?$$(PYTHONMOD_HEADER)?g' \ + -e 's!\(.*\)\.o[ :]*!\1.lo \1.o: !g' \ + > $(DEPEND_TMP) + cp $(DEPEND_TARGET) $(DEPEND_TMP2) + head -`egrep -n "# Dependencies" $(DEPEND_TARGET) | tail -1 | sed -e 's/:.*$$//'` $(DEPEND_TMP2) > $(DEPEND_TARGET) + cat $(DEPEND_TMP) >> $(DEPEND_TARGET) + @if diff $(DEPEND_TARGET) $(DEPEND_TMP2); then echo " $(DEPEND_TARGET) unchanged"; else echo " Updated $(DEPEND_TARGET))"; fi + @if test -f $(DEPEND_TARGET2); then \ + cp $(DEPEND_TARGET2) $(DEPEND_TMP2); \ + head -`egrep -n "# Dependencies" $(DEPEND_TARGET2) | tail -1 | sed -e 's/:.*$$//'` $(DEPEND_TMP2) > $(DEPEND_TARGET2); \ + cat $(DEPEND_TMP) >> $(DEPEND_TARGET2); \ + if diff $(DEPEND_TARGET2) $(DEPEND_TMP2); then echo " $(DEPEND_TARGET2) unchanged"; else echo " Updated $(DEPEND_TARGET2))"; fi; \ + fi + rm -f $(DEPEND_TMP) $(DEPEND_TMP2) + +# Dependencies +dns.lo dns.o: $(srcdir)/services/cache/dns.c config.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ + $(srcdir)/validator/val_nsec.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/services/cache/dns.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h $(srcdir)/util/config_file.h +infra.lo infra.o: $(srcdir)/services/cache/infra.c config.h \ + $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ + +rrset.lo rrset.o: $(srcdir)/services/cache/rrset.c config.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/config_file.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/regional.h $(srcdir)/util/alloc.h +dname.lo dname.o: $(srcdir)/util/data/dname.c config.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lookup3.h +msgencode.lo msgencode.o: $(srcdir)/util/data/msgencode.c config.h \ + $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h +msgparse.lo msgparse.o: $(srcdir)/util/data/msgparse.c config.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/regional.h +msgreply.lo msgreply.o: $(srcdir)/util/data/msgreply.c config.h \ + $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/data/msgencode.h +packed_rrset.lo packed_rrset.o: $(srcdir)/util/data/packed_rrset.c config.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/regional.h \ + $(srcdir)/util/net_help.h +iterator.lo iterator.o: $(srcdir)/iterator/iterator.c config.h \ + $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \ + $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_donotq.h $(srcdir)/iterator/iter_delegpt.h \ + $(srcdir)/iterator/iter_scrub.h $(srcdir)/iterator/iter_priv.h $(srcdir)/validator/val_neg.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/config_file.h +iter_delegpt.lo iter_delegpt.o: $(srcdir)/iterator/iter_delegpt.c config.h $(srcdir)/iterator/iter_delegpt.h \ + $(srcdir)/util/log.h \ + $(srcdir)/services/cache/dns.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/regional.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h +iter_donotq.lo iter_donotq.o: $(srcdir)/iterator/iter_donotq.c config.h $(srcdir)/iterator/iter_donotq.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h +iter_fwd.lo iter_fwd.o: $(srcdir)/iterator/iter_fwd.c config.h \ + $(srcdir)/iterator/iter_fwd.h \ + $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h +iter_hints.lo iter_hints.o: $(srcdir)/iterator/iter_hints.c config.h \ + $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h +iter_priv.lo iter_priv.o: $(srcdir)/iterator/iter_priv.c config.h \ + $(srcdir)/iterator/iter_priv.h \ + $(srcdir)/util/rbtree.h \ + $(srcdir)/util/regional.h $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/net_help.h \ + $(srcdir)/util/storage/dnstree.h +iter_resptype.lo iter_resptype.o: $(srcdir)/iterator/iter_resptype.c config.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/data/dname.h +iter_scrub.lo iter_scrub.o: $(srcdir)/iterator/iter_scrub.c config.h $(srcdir)/iterator/iter_scrub.h \ + $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/iterator/iter_priv.h $(srcdir)/util/rbtree.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/util/alloc.h +iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_utils.c config.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h \ + $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_donotq.h $(srcdir)/iterator/iter_delegpt.h \ + $(srcdir)/iterator/iter_priv.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_utils.h +listen_dnsport.lo listen_dnsport.o: $(srcdir)/services/listen_dnsport.c config.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h \ + $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/log.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h +localzone.lo localzone.o: $(srcdir)/services/localzone.c config.h \ + $(srcdir)/services/localzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/net_help.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h +mesh.lo mesh.o: $(srcdir)/services/mesh.c config.h \ + $(srcdir)/services/mesh.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/dns.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/timehist.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/tube.h $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h +modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \ + $(srcdir)/validator/val_utils.h $(PYTHONMOD_HEADER) +outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/netevent.h \ + +outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c config.h \ + $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \ + +alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/regional.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/netevent.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h +config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h \ + $(srcdir)/util/log.h \ + $(srcdir)/util/configyyrename.h $(srcdir)/util/config_file.h util/configparser.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/regional.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/iana_ports.inc +configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \ + $(srcdir)/util/config_file.h util/configparser.h +configparser.lo configparser.o: util/configparser.c config.h $(srcdir)/util/configyyrename.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ + +fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/netevent.h \ + $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \ + $(srcdir)/util/rbtree.h $(srcdir)/daemon/worker.h $(srcdir)/util/alloc.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/daemon/remote.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/localzone.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ + $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/config_file.h $(PYTHONMOD_HEADER) +locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + +log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/locks.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ + $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h +module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + +netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h \ + $(srcdir)/util/netevent.h \ + $(srcdir)/util/log.h $(srcdir)/util/net_help.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h \ + $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h +net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h \ + $(srcdir)/util/net_help.h \ + $(srcdir)/util/log.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/util/regional.h \ + +random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h \ + +rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h +regional.lo regional.o: $(srcdir)/util/regional.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/regional.h +rtt.lo rtt.o: $(srcdir)/util/rtt.c config.h $(srcdir)/util/rtt.h $(srcdir)/util/log.h \ + +dnstree.lo dnstree.o: $(srcdir)/util/storage/dnstree.c config.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h \ + $(srcdir)/util/net_help.h +lookup3.lo lookup3.o: $(srcdir)/util/storage/lookup3.c config.h $(srcdir)/util/storage/lookup3.h +lruhash.lo lruhash.o: $(srcdir)/util/storage/lruhash.c config.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/netevent.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h +slabhash.lo slabhash.o: $(srcdir)/util/storage/slabhash.c config.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + +timehist.lo timehist.o: $(srcdir)/util/timehist.c config.h $(srcdir)/util/timehist.h $(srcdir)/util/log.h \ + +tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/util/log.h \ + $(srcdir)/util/net_help.h \ + $(srcdir)/util/netevent.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + $(srcdir)/services/mesh.h \ + $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h +winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h +autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h \ + $(srcdir)/validator/autotrust.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/dname.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/services/mesh.h \ + $(srcdir)/util/netevent.h $(srcdir)/services/modstack.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/validator/val_kcache.h +val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h \ + $(srcdir)/validator/val_anchor.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/autotrust.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h +validator.lo validator.o: $(srcdir)/validator/validator.c config.h \ + $(srcdir)/validator/validator.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/util/storage/slabhash.h $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_neg.h \ + $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/autotrust.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h +val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/validator/val_kcache.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/validator/val_kentry.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h \ + +val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h \ + $(srcdir)/validator/val_kentry.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/rbtree.h \ + $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h +val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/validator/validator.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/validator/val_utils.h \ + $(srcdir)/validator/val_kentry.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/validator/val_nsec.h +val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c config.h \ + $(srcdir)/validator/val_nsec.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h +val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ + $(srcdir)/validator/val_sigcrypt.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/validator/val_utils.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ + +val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/validator/validator.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h \ + $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_neg.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h +checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.h +unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h \ + $(srcdir)/util/log.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h +unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname.c config.h \ + $(srcdir)/util/log.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h +unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ + $(srcdir)/util/log.h \ + $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ + $(srcdir)/util/log.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/random.h +unitmsgparse.lo unitmsgparse.o: $(srcdir)/testcode/unitmsgparse.c config.h \ + $(srcdir)/util/log.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/alloc.h $(srcdir)/util/regional.h \ + $(srcdir)/util/net_help.h $(srcdir)/testcode/readhex.h +unitneg.lo unitneg.o: $(srcdir)/testcode/unitneg.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/net_help.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/data/dname.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/validator/val_neg.h $(srcdir)/util/rbtree.h +unitregional.lo unitregional.o: $(srcdir)/testcode/unitregional.c config.h $(srcdir)/testcode/unitmain.h \ + $(srcdir)/util/log.h \ + $(srcdir)/util/regional.h +unitslabhash.lo unitslabhash.o: $(srcdir)/testcode/unitslabhash.c config.h $(srcdir)/testcode/unitmain.h \ + $(srcdir)/util/log.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h +unitverify.lo unitverify.o: $(srcdir)/testcode/unitverify.c config.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/unitmain.h \ + $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h \ + $(srcdir)/validator/val_nsec.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/validator/val_utils.h \ + $(srcdir)/testcode/ldns-testpkts.h \ + $(srcdir)/util/data/dname.h \ + $(srcdir)/util/regional.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h +readhex.lo readhex.o: $(srcdir)/testcode/readhex.c config.h $(srcdir)/testcode/readhex.h \ + $(srcdir)/util/log.h +ldns-testpkts.lo ldns-testpkts.o: $(srcdir)/testcode/ldns-testpkts.c config.h \ + $(srcdir)/testcode/ldns-testpkts.h +acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h +cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \ + $(srcdir)/daemon/cachedump.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/util/netevent.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/util/storage/dnstree.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ + $(srcdir)/daemon/daemon.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h $(srcdir)/daemon/worker.h \ + $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/random.h $(srcdir)/util/tube.h +remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \ + $(srcdir)/daemon/remote.h \ + $(srcdir)/daemon/worker.h $(srcdir)/util/netevent.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/data/dname.h $(srcdir)/validator/validator.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_anchor.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/iterator/iter_delegpt.h $(srcdir)/services/outside_network.h +stats.lo stats.o: $(srcdir)/daemon/stats.c config.h \ + $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/daemon/worker.h $(srcdir)/util/netevent.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/module.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/outside_network.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@FreeBSD.ORG Wed Jul 4 14:25:14 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A478B106567D; Wed, 4 Jul 2012 14:25:14 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 78ED68FC15; Wed, 4 Jul 2012 14:25:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q64EPEps015474; Wed, 4 Jul 2012 14:25:14 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q64EPEmY015473; Wed, 4 Jul 2012 14:25:14 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201207041425.q64EPEmY015473@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Wed, 4 Jul 2012 14:25:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238107 - vendor/unbound/1.4.17 X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jul 2012 14:25:14 -0000 Author: des Date: Wed Jul 4 14:25:14 2012 New Revision: 238107 URL: http://svn.freebsd.org/changeset/base/238107 Log: tag unbound 1.4.17 Added: vendor/unbound/1.4.17/ - copied from r238106, vendor/unbound/dist/ From owner-svn-src-vendor@FreeBSD.ORG Fri Jul 6 00:03:46 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 454381065670; Fri, 6 Jul 2012 00:03:46 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2F7158FC15; Fri, 6 Jul 2012 00:03:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6603kTN027278; Fri, 6 Jul 2012 00:03:46 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6603jYA027272; Fri, 6 Jul 2012 00:03:45 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201207060003.q6603jYA027272@svn.freebsd.org> From: "David E. O'Brien" Date: Fri, 6 Jul 2012 00:03:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238152 - vendor/NetBSD/bmake/dist X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jul 2012 00:03:46 -0000 Author: obrien Date: Fri Jul 6 00:03:45 2012 New Revision: 238152 URL: http://svn.freebsd.org/changeset/base/238152 Log: Import the 20120704 release of the "Portable" BSD make tool (from NetBSD). Submitted by: Simon Gerraty Modified: vendor/NetBSD/bmake/dist/ChangeLog vendor/NetBSD/bmake/dist/Makefile.in vendor/NetBSD/bmake/dist/bsd.after-import.mk vendor/NetBSD/bmake/dist/job.c vendor/NetBSD/bmake/dist/meta.c Modified: vendor/NetBSD/bmake/dist/ChangeLog ============================================================================== --- vendor/NetBSD/bmake/dist/ChangeLog Thu Jul 5 23:36:17 2012 (r238151) +++ vendor/NetBSD/bmake/dist/ChangeLog Fri Jul 6 00:03:45 2012 (r238152) @@ -1,3 +1,19 @@ +2012-07-04 Simon J. Gerraty + + * Makefile.in (MAKE_VERSION): bump version to 20120704 + Merge with NetBSD make, pick up + o Job_ParseShell should call Shell_Init if it has been + previously called. + * Makefile.in: set USE_META based on configure result. + also .PARSEDIR is safer indicator of bmake. + +2012-06-26 Simon J. Gerraty + + * Makefile.in: bump version to 20120626 + ensure CPPFLAGS is in CFLAGS + * meta.c: avoid nested externs + * bsd.after-import.mk: avoid ${.CURDIR}/Makefile as target + 2012-06-20 Simon J. Gerraty * Makefile.in (MAKE_VERSION): bump version to 20120620 Modified: vendor/NetBSD/bmake/dist/Makefile.in ============================================================================== --- vendor/NetBSD/bmake/dist/Makefile.in Thu Jul 5 23:36:17 2012 (r238151) +++ vendor/NetBSD/bmake/dist/Makefile.in Fri Jul 6 00:03:45 2012 (r238152) @@ -1,7 +1,7 @@ # $NetBSD: Makefile,v 1.56 2012/05/30 21:54:23 sjg Exp $ # @(#)Makefile 5.2 (Berkeley) 12/28/90 -# $Id: Makefile.in,v 1.164 2012/06/20 22:44:26 sjg Exp $ +# $Id: Makefile.in,v 1.168 2012/07/05 04:10:23 sjg Exp $ PROG= bmake SRCS= arch.c buf.c compat.c cond.c dir.c for.c hash.c job.c main.c \ @@ -21,13 +21,15 @@ srcdir= @srcdir@ CC?= @CC@ # Base version on src date -MAKE_VERSION= 20120620 +MAKE_VERSION= 20120704 MACHINE=@machine@ MACHINE_ARCH=@machine_arch@ DEFAULT_SYS_PATH = @default_sys_path@ +CPPFLAGS+= @CPPFLAGS@ +CFLAGS+= ${CPPFLAGS} CFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\" -CFLAGS+= -I. -I${srcdir} @DEFS@ @CPPFLAGS@ ${XDEFS} -DMAKE_NATIVE +CFLAGS+= -I. -I${srcdir} @DEFS@ ${XDEFS} -DMAKE_NATIVE CFLAGS+= ${CFLAGS_${.TARGET:T}} CFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}} COPTS.main.c+= "-DMAKE_VERSION=\"${MAKE_VERSION}\"" @@ -39,7 +41,7 @@ LDADD= @LIBS@ SRCS+= ${LIBOBJS:T:.o=.c} .endif -USE_META ?= @use_meta@ +USE_META = @use_meta@ .if ${USE_META} != "no" SRCS+= meta.c CPPFLAGS+= -DUSE_META @@ -83,7 +85,7 @@ SRCS+= sigcompat.c CFLAGS+= -DSIGNAL_FLAGS=SA_RESTART .endif .endif -.if defined(.MAKE.LEVEL) +.if defined(.PARSEDIR) .if make(obj) || make(clean) SUBDIR+= unit-tests .endif @@ -134,7 +136,7 @@ _mfromdir=${srcdir} # sigh, FreeBSD at least includes bsd.subdir.mk via bsd.obj.mk # so the inclusion below, results in complaints about re-defined # targets. For NetBSD though we need to explicitly include it. -.if defined(.MAKE.LEVEL) +.if defined(.PARSEDIR) .if defined(SUBDIR) && !target(${SUBDIR:[1]}) .-include .endif Modified: vendor/NetBSD/bmake/dist/bsd.after-import.mk ============================================================================== --- vendor/NetBSD/bmake/dist/bsd.after-import.mk Thu Jul 5 23:36:17 2012 (r238151) +++ vendor/NetBSD/bmake/dist/bsd.after-import.mk Fri Jul 6 00:03:45 2012 (r238152) @@ -1,4 +1,4 @@ -# $Id: bsd.after-import.mk,v 1.5 2012/06/20 22:45:07 sjg Exp $ +# $Id: bsd.after-import.mk,v 1.6 2012/06/27 18:23:32 sjg Exp $ # This makefile is for use when integrating bmake into a BSD build # system. Use this makefile after importing bmake. @@ -9,7 +9,7 @@ # The goal is to allow the benefits of autoconf without # the overhead of running configure. -all: ${.CURDIR}/Makefile +all: _makefile all: after-import # we rely on bmake @@ -79,8 +79,8 @@ after-import: bootstrap ${MAKEFILE} .endfor # this needs the most work -${.CURDIR}/Makefile: bootstrap ${MAKEFILE} .PRECIOUS - @echo Generating ${.TARGET:T} +_makefile: bootstrap ${MAKEFILE} + @echo Generating ${.CURDIR}/Makefile @(echo '# This is a generated file, do NOT edit!'; \ echo '# See ${_this:S,${SRCTOP}/,,}'; \ echo '#'; echo '# $$${OS}$$'; echo; \ @@ -97,8 +97,9 @@ ${.CURDIR}/Makefile: bootstrap ${MAKEFIL echo; echo 'after-import: ${_this:S,${SRCTOP},\${SRCTOP},}'; \ echo ' cd $${.CURDIR} && $${.MAKE} -f ${_this:S,${SRCTOP},\${SRCTOP},}'; \ echo; echo '.sinclude "Makefile.inc"'; \ - echo ) > ${.TARGET:T}.new - @mv ${.TARGET:T}.new ${.TARGET} + echo ) > ${.TARGET} + @cmp -s ${.TARGET} ${.CURDIR}/Makefile || \ + mv ${.TARGET} ${.CURDIR}/Makefile .include Modified: vendor/NetBSD/bmake/dist/job.c ============================================================================== --- vendor/NetBSD/bmake/dist/job.c Thu Jul 5 23:36:17 2012 (r238151) +++ vendor/NetBSD/bmake/dist/job.c Fri Jul 6 00:03:45 2012 (r238152) @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.162 2012/06/12 19:21:50 joerg Exp $ */ +/* $NetBSD: job.c,v 1.163 2012/07/03 21:03:40 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -70,14 +70,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: job.c,v 1.162 2012/06/12 19:21:50 joerg Exp $"; +static char rcsid[] = "$NetBSD: job.c,v 1.163 2012/07/03 21:03:40 sjg Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: job.c,v 1.162 2012/06/12 19:21:50 joerg Exp $"); +__RCSID("$NetBSD: job.c,v 1.163 2012/07/03 21:03:40 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -2441,7 +2441,7 @@ Job_ParseShell(char *line) * If no path was given, the user wants one of the pre-defined shells, * yes? So we find the one s/he wants with the help of JobMatchShell * and set things up the right way. shellPath will be set up by - * Job_Init. + * Shell_Init. */ if (newShell.name == NULL) { Parse_Error(PARSE_FATAL, "Neither path nor name specified"); @@ -2456,6 +2456,12 @@ Job_ParseShell(char *line) } commandShell = sh; shellName = newShell.name; + if (shellPath) { + /* Shell_Init has already been called! Do it again. */ + free(UNCONST(shellPath)); + shellPath = NULL; + Shell_Init(); + } } } else { /* Modified: vendor/NetBSD/bmake/dist/meta.c ============================================================================== --- vendor/NetBSD/bmake/dist/meta.c Thu Jul 5 23:36:17 2012 (r238151) +++ vendor/NetBSD/bmake/dist/meta.c Fri Jul 6 00:03:45 2012 (r238152) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.24 2011/09/21 14:30:47 christos Exp $ */ +/* $NetBSD: meta.c,v 1.25 2012/06/27 17:22:58 sjg Exp $ */ /* * Implement 'meta' mode. @@ -68,6 +68,7 @@ static Boolean metaSilent = FALSE; /* if extern Boolean forceJobs; extern Boolean comatMake; +extern char **environ; #define MAKE_META_PREFIX ".MAKE.META.PREFIX" @@ -388,7 +389,6 @@ printCMD(void *cmdp, void *mfpp) static FILE * meta_create(BuildMon *pbm, GNode *gn) { - extern char **environ; meta_file_t mf; char buf[MAXPATHLEN]; char objdir[MAXPATHLEN]; From owner-svn-src-vendor@FreeBSD.ORG Fri Jul 6 00:03:49 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8474C106567A; Fri, 6 Jul 2012 00:03:49 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 52DBC8FC19; Fri, 6 Jul 2012 00:03:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6603ng9027315; Fri, 6 Jul 2012 00:03:49 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6603nUm027314; Fri, 6 Jul 2012 00:03:49 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201207060003.q6603nUm027314@svn.freebsd.org> From: "David E. O'Brien" Date: Fri, 6 Jul 2012 00:03:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238153 - vendor/NetBSD/bmake/20120704 X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jul 2012 00:03:49 -0000 Author: obrien Date: Fri Jul 6 00:03:48 2012 New Revision: 238153 URL: http://svn.freebsd.org/changeset/base/238153 Log: "Tag" the 20120704 Portable BSD make import. Added: vendor/NetBSD/bmake/20120704/ - copied from r238152, vendor/NetBSD/bmake/dist/ From owner-svn-src-vendor@FreeBSD.ORG Fri Jul 6 00:04:22 2012 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id ACFD2106570A; Fri, 6 Jul 2012 00:04:22 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9744A8FC0C; Fri, 6 Jul 2012 00:04:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6604MgE027375; Fri, 6 Jul 2012 00:04:22 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6604Mwu027373; Fri, 6 Jul 2012 00:04:22 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201207060004.q6604Mwu027373@svn.freebsd.org> From: "David E. O'Brien" Date: Fri, 6 Jul 2012 00:04:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238154 - vendor/NetBSD/bmake X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Jul 2012 00:04:22 -0000 Author: obrien Date: Fri Jul 6 00:04:22 2012 New Revision: 238154 URL: http://svn.freebsd.org/changeset/base/238154 Log: Script used to commit r238152 / r238153. Modified: vendor/NetBSD/bmake/do-update.sh Modified: vendor/NetBSD/bmake/do-update.sh ============================================================================== --- vendor/NetBSD/bmake/do-update.sh Fri Jul 6 00:03:48 2012 (r238153) +++ vendor/NetBSD/bmake/do-update.sh Fri Jul 6 00:04:22 2012 (r238154) @@ -1,16 +1,20 @@ : # $FreeBSD$ +# "global" vars +ECHO= +# Set SVN variables +# select the local subversion site SVN=${SVN:-/usr/local/bin/svn} SITE=${SITE:-ftp://ftp.netbsd.org/pub/NetBSD/misc/sjg} + # For consistency... Error() { echo ERROR: ${1+"$@"} >&2 exit 1 } - Cd() { [ $# -eq 1 ] || Error "Cd() takes a single parameter." cd $1 || Error "cannot \"cd $1\" from $PWD" @@ -87,4 +91,16 @@ rm -rf bmake/missing svn-vendorimport.sh bmake dist ${SVN} stat dist -rm -f bmake-${VERSION}.tar.gz.sha1 $SITE/bmake-${VERSION}.tar.gz +rm -f bmake-${VERSION}.tar.gz bmake-${VERSION}.tar.gz.sha1 + +echo "Import the ${VERSION} release of the \"Portable\" BSD make tool (from NetBSD). + +Submitted by: Simon Gerraty " > /tmp/commit-log + +${ECHO} ${SVN} ci -F /tmp/commit-log dist + +SVNURL=$(${SVN} info | grep URL: | awk '{print $2}') + +${ECHO} ${SVN} copy \ + -m "\"Tag\" the ${VERSION} Portable BSD make import." \ + ${SVNURL}/dist ${SVNURL}/${VERSION}