Provided by: dnssec-tools_2.0-1_all bug

NAME

       Net::DNS::SEC::Tools::tooloptions - DNSSEC-Tools option routines.

SYNOPSIS

         use Net::DNS::SEC::Tools::tooloptions;

         @specopts = ("propagate+", "waittime=i");

         %opts = opts_cmdline($restoreargv,@calleropts);

         $optsref = opts_cmdopts(@specopts);
         %options = %$optsref;

         $zoneref = opts_zonekr($keyrec_file,$keyrec_name,@specopts);
         %zone_kr = %$zoneref;

         opts_setcsopts(@specopts);

         opts_createkrf();

         opts_suspend();

         opts_restore();

         opts_drop();

         opts_reset();

         opts_gui();

         opts_nogui();

         $oldaction = opts_onerr(1);
         opts_onerr(0);

DESCRIPTION

       DNSSEC-Tools supports a set of options common to all the tools in the suite.  These options may be set
       from DNSSEC-Tools defaults, values set in the dnssec-tools.conf configuration file, in a keyrec file,
       from command-specific options, from command-line options, or from any combination of the five.  In order
       to enforce a common sequence of option interpretation, all DNSSEC-Tools should use the tooloptions.pm
       routines to initialize their options.

       tooloptions.pm routines combine data from the aforementioned option sources into a hash table.  The hash
       table is returned to the caller, which will then use the options as needed.

       The command-line options are saved between calls, so a command may call tooloptions.pm routines multiple
       times and still have the command-line options included in the final hash table.  This is useful for
       examining multiple keyrecs in a single command.  Inclusion of command-line options may be suspended and
       restored using the opts_suspend() and opts_restore() calls.  Options may be discarded entirely by calling
       opts_drop(); once dropped, command-line options may never be restored.  Suspension, restoration, and
       dropping of command-line options are only effective after the initial tooloptions.pm call.

       The options sources are combined in this order:

       1.  DNSSEC-Tools Defaults
           The  DNSSEC-Tools defaults, as defined in conf.pm are put into a hash table, with the option names as
           the hash key.

       2.  DNSSEC-Tools Configuration File
           The system-wide DNSSEC-Tools configuration file is read and these option  values  are  added  to  the
           option collection.  Again, the option names are used as the hash key.

       3. keyrec File
           If a keyrec file was specified, then the keyrec named by keyrec_name will be retrieved.  The keyrec's
           fields  are  added  to  the  hash  table.   Any field whose keyword matches an existing hash key will
           override any existing values.

       4. Command-Specific Options
           Options specific to the invoking commands may be specified in @specopts.  This  array  is  parsed  by
           Getoptions()  from  the  Getopt::Long  Perl  module.   These  options are folded into the hash table;
           possibly overriding existing hash values.  The options given in  @specopts  must  be  in  the  format
           required by Getoptions().

       5. Command-Line Options
           The  command-line  options  are  parsed  using Getoptions() from the Getopt::Long Perl module.  These
           options are folded into the hash table; again, possibly overriding existing hash values.  The options
           given in @specopts must be in the format required by Getoptions().

       A reference to the hash table created in these steps is returned to the caller.

EXAMPLE

       dnssec-tools.conf has these entries:

           ksklength      2048
           zsklength      1024

       example.keyrec has this entry:

           key         "Kexample.com.+005+12345"
                   zsklength        "2048"

       zonesigner is executed with this command line:

           zonesigner -zsklength 4096 -wait 3600 ...  example.com

       opts_zonekr("example.keyrec","Kexample.com.+005+12345",("wait=i")) will read each option source in  turn,
       ending up with:
           ksklength          1024
           zsklength          4096
           wait                600

TOOLOPTIONS INTERFACES

       opts_cmdline($restoreargv,@calleropts)
           This  routine  parses  a command line looking for the arguments in the standard set of options and an
           optional set of options specified by the caller.  If the first argument  is  true,  the  program-wide
           @ARGV is restored after parsing.  If the caller provides other arguments, they're added as additional
           options.  The parsed options are returned to the caller in a hash.

       opts_cmdopts(@csopts)
           The opts_cmdopts() call builds an option hash from the system configuration file, a keyrec, and a set
           of command-specific options.  A reference to this option hash is returned to the caller.

           If $keyrec_file is given as an empty string, then no keyrec file will be consulted.  In this case, it
           is assumed that $keyrec_name will be left out altogether.

           If  a  non-existent $keyrec_file is given and opts_createkrf() has been called, then the named keyrec
           file will be created.  opts_createkrf() must be called for each keyrec file that must be created,  as
           the tooloptions keyrec-creation state is reset after tooloptions() has completed.

       opts_zonekr($keyrec_file,$keyrec_name,@csopts)
           This  routine returns a reference to options gathered from the basic option sources and from the zone
           keyrec named by $keyrec_name, which is found in $keyrec_file.  The keyrec fields from the zone's  KSK
           and ZSK are folded in as well, but the key's keyrec_ fields are excluded.  This call ensures that the
           named keyrec is a zone keyrec; if it isn't, undef is returned.

           The  keyrec file is read with keyrec_read().  To ensure it is properly read, keyrec_close() is called
           first.

           The $keyrec_file argument specifies a keyrec file that will be consulted.  The keyrec  named  by  the
           $keyrec_name  argument  will  be  loaded.   If  a  keyrec file is found and opts_createkrf() has been
           previously called, then the keyrec file will be created if it doesn't exist.

           If $keyrec_file is given as "", then the command-line options are searched for a -krfile option.   If
           $keyrec_name is given as "", then the name is taken from $ARGV[0].

           The  @specopts  array  contains  command-specific  arguments;  the  arguments  must  be in the format
           prescribed by the Getopt::Long Perl module.

           If the command line contains the -dtconfig option, then opts_zonekr() sets  that  option  to  be  the
           configuration file.  It then parses that file and uses it as the source for configuration file data.

       opts_setcsopts(@csopts)
           This  routine  saves  a  copy  of  the command-specific options given in @csopts.  This collection of
           options is added to the @csopts array that may be passed to tooloptions.pm routines.

       opts_createkrf()
           Force creation of an empty keyrec file if the specified file does not  exist.   This  may  happen  on
           calls to opts_zonekr().

       opts_suspend()
           Suspend inclusion of the command-line options in building the final hash table of responses.

       opts_restore()
           Restore inclusion of the command-line options in building the final hash table of responses.

       opts_drop()
           Discard  the  command-line  options.   They will no longer be available for inclusion in building the
           final hash table of responses for this execution of the command.

       opts_reset()
           Reset an internal flag so that the command-line arguments may be re-examined.  This is  usually  only
           useful if the arguments have been modified by the calling program itself.

       opts_gui()
           Set  an internal flag so that command arguments may be specified with a GUI.  GUI usage requires that
           Getopt::GUI::Long is available.  If it isn't, then Getopt::Long will be used.

       opts_nogui()
           Set an internal flag so that the GUI will not be used for specifying command arguments.

       opts_onerr(exitflag)
           Set an internal flag indicating what should happen if an invalid option is specified on  the  command
           line.   If exitflag is non-zero, then the process will exit on an invalid option; if it is zero, then
           the process will not exit.  The default action is to report an error without exiting.

           The old exit action is returned.

COPYRIGHT

       Copyright 2005-2013 SPARTA, Inc.  All rights reserved.  See the COPYING file included  with  the  DNSSEC-
       Tools package for details.

AUTHOR

       Wayne Morrison, tewok@tislabs.com

SEE ALSO

       zonesigner(8)

       Getopt::Long(3)

       Net::DNS::SEC::Tools::conf(3), Net::DNS::SEC::Tools::defaults(3), Net::DNS::SEC::Tools::keyrec(3)

       Net::DNS::SEC::Tools::keyrec(5)

perl v5.14.2                                       2013-02-15                                   tooloptions(3pm)