#                              -*- Mode: Text -*- 
# README
# 
# Description     : NDMP Developers Kit README
# 
# Copyright (c) 1996,1997 PDC, Network Appliance. All Rights Reserved.
#
# $Id: README,v 1.4 1997/02/23 00:26:23 tim Exp $
# 

Objective:
  The NDMP developers kit provides a functional (although fairly basic)
  implementation of an NDMP client and NDMP server. 
  The objective of the developers kit is to facilitate rapid development
  of NDMP compliant clients and servers on a variety of platforms.

Contents:
  The kit contains the following pieces:

  server
    NDMP server implementation.
    Notes on the implementation of each of the NDMP protocol interfaces:
      Connect interface:
	o Authorization types NONE and TEXT supported. PCNFS type
	  authorization not supported.
	o Authorization type TEXT only supports authorization by the
	  user "root". The server must by run as root for TEXT authorization
	  to work since access to the shadow password file is needed.
      Config interface:
	o Fully implemented.
      SCSI interface:
	o scsi_get_state and scsi_set_target requests not supported
          since Solaris does not provide a device file capable of
          passing SCSI commands to multiple SCSI targets.
        o scsi_reset_bus request not supported.
        o Remaining requests fully implemented.
      Tape interface:
	o Fully implemented.
      Data interface:
	o Fully implemented.
	o Supports backup/recover using very simple builtin dump/restore
	  like functionality. 
      Notify interface:
	o Fully implemented.
      Log interface:
	o Log and file requests are generated.
	o Debug requests are not generated.
      File history interface:
	o The simple dump functionality generates filename based
	  (versus directory/inode based) file history entries.
  
    Implementation notes:
      Backup/recover module API:
        o Currently the SDK only supports synchronous model
          backup/recover modules.
          Refer to doc/ndmp.api for a detailed description of the API.

      Server features:
        o The mover window (set via the mover_set_window request)
          functionality has been implemented but has not yet been tested.
        o The seek window functionality has been implemented but has
          been only partially tested. 

      Simple restore module:
        o The simple restore module does not yet support direct access.
          Direct access functionality is used to seek (via ndmpdSeek())
          the data stream directly to the position of a file to be
          recovered. This allows restores of a few files to be done
          without having to read the entire data stream. After this
          functionality has been implemented, it will be possible to
          finish the seek window testing.

    Usage:
      ndmpd [-d debug-level] [-p port-number] [-f]
   
      where:
	debug-level - The least significant 4 bits of the
		      level specify the detail. 0 will
		      result in mimimal messages for enabled
		      components being output. 15 will
		      result in all messages for enabled
		      components being output.
		      The remaining bits in the level specify
		      the components for which messages are
		      to be output. Refer to ../common/log.h
		      for defined components.
		      Default is all messages disabled.
   
	port-number - TCP port number on which the NDMP server
		      is listening for connection requests.
		      Default is to lookup the port in the
		      services database.
		      
	-f - Disables forking to handle a new connection.
	     Default is to fork a child process to handle
	     each connection.
      
    The following restrictions apply if the server is not run as root:
      o Authorization type TEXT will fail.
      o Backup of files not accessable to the user running the server
	will fail.
      o SCSI pass-through commands will fail.
  
  client
    NDMP client implementation.
    The client is implemented as an interactive Tcl application.
    The Tcl command 'help' will display a list of all NDMP Tcl commands.
    The client/scripts directory contains various Tcl and expect scripts
    that demonstrate usage of the client application.
    The client supports both version 1 and version 2 of the protocol.
    The connect_open command is used to specify the protocol version.

    usage: ndmpc [-d debug-level] [-s tcl-startup-script-file]
                 [-f tcl-script-file]
		 [-h ndmp-server] [-p port-number]           
							       
    where:                                                   
      debug-level - The least significant 4 bits of the      
		    level specify the detail. 0 will         
		    result in mimimal messages for enabled   
		    components being output. 15 will         
		    result in all messages for enabled       
		    components being output.                 
		    The remaining bits in the level specify  
		    the components for which messages are    
		    to be output. Refer to ../common/log.h   
		    for defined components.                  
		    Default is all messages disabled.        
							       
      tcl-startup-script-file - Tcl file to source upon startup before
                                creating the NDMP connection. This option
                                provides a means of running Tcl commands
                                such as add_notify_proc that have to
                                be run before any NDMP messages are
                                received.

      tcl-script-file - Tcl file to source after creating the NDMP connection.
                        Processing of this file is multiplexed with the
                        processing of messages received from the
                        NDMP connection.
                        After sourcing the file, the application will enter
                        interactive mode.
			If no file is specified, the application will
			immediately enter interactive mode.
							       
      ndmp-server - name of the host running the NDMP server 
		    that ndmpc is to connect to.             
		    Default is localhost.                    
							       
      port-number - TCP port number on which the NDMP server 
		    is listening for connection requests.    
		    Default is 10000.                        

  common
    NDMP communication library used by both the NDMP server and client
    implementations.

  doc
    Various documents related to the NDMP protocol and the
    developers kit.

Requirements:

  The code was developed and tested on a Sun workstation running Solaris 2.5.
  The code was compiled using gcc 2.7.2.
  The NDMP client utilizes Tcl 7.6.

Installation:

 o Modify the client/Makefile if necessary. The Makefile assumes Tcl 7.6 is
   installed in /usr/local.
 o make

Contacts:

  The NDMP Developers Kit was developed by Tim Gardner of
  Chewcoba Systems, Inc. Please report bugs and direct questions
  to tim@chewcoba.com.

  Chewcoba Systems provides software engineering consulting services
  to companies developing NDMP related products.



