topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-NetworkSetup.h / h



  /*
       File:       NetworkSetup.h
   
       Contains:   Network Setup Interfaces
   
       Version:    Technology: 1.1.0
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1998-2001 by Apple Computer, Inc., all rights reserved
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __NETWORKSETUP__
  define __NETWORKSETUP__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __FILES__
  include <Files.h>
  endif
  
  ifndef __OPENTRANSPORT__
  include <OpenTransport.h>
  endif
  
  ifndef __OPENTRANSPORTPROVIDERS__
  include <OpenTransportProviders.h>
  endif
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  if CALL_NOT_IN_CARBON
  ifndef __NETWORKSETUPTYPES__
  define __NETWORKSETUPTYPES__
  typedef struct OpaqueCfgDatabaseRef*    CfgDatabaseRef;
  typedef UInt32                          CfgAreaID;
  typedef OSType                          CfgEntityClass;
  typedef OSType                          CfgEntityType;
  
  struct CfgEntityRef {
      CfgAreaID                       fLoc;
      UInt32                          fReserved;
      Str255                          fID;
  };
  typedef struct CfgEntityRef             CfgEntityRef;
  
  struct CfgResourceLocator {
      FSSpec                          fFile;
      UInt16                          fResID;
  };
  typedef struct CfgResourceLocator       CfgResourceLocator;
  
  struct CfgEntityInfo {
      CfgEntityClass                  fClass;
      CfgEntityType                   fType;
      Str255                          fName;
      CfgResourceLocator              fIcon;
  };
  typedef struct CfgEntityInfo            CfgEntityInfo;
  
  typedef void *                          CfgEntityAccessID;
  
  struct CfgPrefsHeader {
      UInt16                          fSize;                      /* size includes this header*/
      UInt16                          fVersion;
      OSType                          fType;
  };
  typedef struct CfgPrefsHeader           CfgPrefsHeader;
  /*    -------------------------------------------------------------------------
      Error codes
      ------------------------------------------------------------------------- */
  enum {
      kCfgErrDatabaseChanged      = -3290,                        /* database has changed since last call - close and reopen DB*/
      kCfgErrAreaNotFound         = -3291,                        /* Area doesn't exist*/
      kCfgErrAreaAlreadyExists    = -3292,                        /* Area already exists*/
      kCfgErrAreaNotOpen          = -3293,                        /* Area needs to open first*/
      kCfgErrConfigLocked         = -3294,                        /* Access conflict - retry later*/
      kCfgErrEntityNotFound       = -3295,                        /* An entity with this name doesn't exist*/
      kCfgErrEntityAlreadyExists  = -3296,                        /* An entity with this name already exists*/
      kCfgErrPrefsTypeNotFound    = -3297,                        /* An record with this PrefsType doesn't exist*/
      kCfgErrDataTruncated        = -3298,                        /* Data truncated when read buffer too small*/
      kCfgErrFileCorrupted        = -3299                         /* The database format appears to be corrupted.*/
  };
  
  /*  reserve a 'free' tag for free blocks*/
  enum {
      kCfgTypefree                = FOUR_CHAR_CODE('free')
  };
  
  /*    -------------------------------------------------------------------------
      CfgEntityClass / CfgEntityType
  
      The database can distinguish between several classes of objects and 
      several types withing each class
      Use of different classes allow to store type of information in the same database
  
      Other entity classes and types can be defined by developers.
      they should be unique and registered with Developer Tech Support (DTS)
      ------------------------------------------------------------------------- */
  enum {
      kCfgClassAnyEntity          = FOUR_CHAR_CODE('****'),
      kCfgClassUnknownEntity      = FOUR_CHAR_CODE('????'),
      kCfgTypeAnyEntity           = FOUR_CHAR_CODE('****'),
      kCfgTypeUnknownEntity       = FOUR_CHAR_CODE('????')
  };
  
  /*    -------------------------------------------------------------------------
      For CfgIsSameEntityRef
      ------------------------------------------------------------------------- */
  enum {
      kCfgIgnoreArea              = true,
      kCfgDontIgnoreArea          = false
  };
  
  endif  /* __NETWORKSETUPTYPES__ */
  
***************************************************************************** * Configuration Information Access API ******************************************************************************

  
  /*    -------------------------------------------------------------------------
      Database access
      ------------------------------------------------------------------------- */
  if CALL_NOT_IN_CARBON
  EXTERN_API( OSStatus )
  OTCfgOpenDatabase               (CfgDatabaseRef *       dbRef);
  
  /*
      OTCfgOpenDatabase()
  
      Inputs:     none
      Outputs:    CfgDatabaseRef* dbRef           Reference to opened database
      Returns:    OSStatus                        *** list errors ***
  
      Opens the Configuration API for a given client. This call should be made prior to any other call.
  */
  EXTERN_API( OSStatus )
  OTCfgCloseDatabase              (CfgDatabaseRef *       dbRef);
  
  /*
      OTCfgCloseDatabase()
  
      Inputs:     CfgDatabaseRef* dbRef           Reference to opened database
      Outputs:    CfgDatabaseRef* dbRef           Reference to opened database is cleared
      Returns:    OSStatus                        *** list errors ***
  
      Closes the Configuration API for a given client. This call should be made when the client no 
      longer wants to use the Configuration API.  
  */
  /*    -------------------------------------------------------------------------
      Area management
      ------------------------------------------------------------------------- */
  EXTERN_API( OSStatus )
  OTCfgGetAreasCount              (CfgDatabaseRef         dbRef,
                                   ItemCount *            itemCount);
  
  /*
      OTCfgGetAreasCount()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
      Outputs:    ItemCount* itemCount            Number of entities defined
      Returns:    OSStatus                        *** list errors ***
  
      Returns the number of areas currently defined.
  */
  EXTERN_API( OSStatus )
  OTCfgGetAreasList               (CfgDatabaseRef         dbRef,
                                   ItemCount *            itemCount,
                                   CfgAreaID              areaID[],
                                   Str255                 areaName[]);
  
  /*
      OTCfgGetAreasList()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  ItemCount* itemCount            Number of entities requested
      Outputs:    ItemCount* itemCount            Number of entities defined
      Returns:    OSStatus                        *** list errors ***
  
      Returns a list of area IDs and names. On entry, count should be set to whatever OTCfgGetAreasCount 
      returned.  On exit, count contains the actual number of areas found. This can be less than the 
      initial count value if areas were deleted in the meantime.  The id and name parameters are stored 
      in arrays that should each be able to contain count values.
  */
  EXTERN_API( OSStatus )
  OTCfgGetCurrentArea             (CfgDatabaseRef         dbRef,
                                   CfgAreaID *            areaID);
  
  /*
      OTCfgGetCurrentArea()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
      Outputs:    CfgAreaID* areaID               ID of current area
      Returns:    OSStatus                        *** list errors ***
  
      Returns the id of the current area.
  */
  EXTERN_API( OSStatus )
  OTCfgSetCurrentArea             (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID);
  
  /*
      OTCfgSetCurrentArea()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area to make active
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Sets the current area. If the area doesn't exist kCfgErrAreaNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgCreateArea                 (CfgDatabaseRef         dbRef,
                                   ConstStr255Param       areaName,
                                   CfgAreaID *            areaID);
  
  /*
      OTCfgCreateArea()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  ConstStr255Param areaName       Name of area to create
      Outputs:    CfgAreaID* areaID               ID of newly created area
      Returns:    OSStatus                        *** list errors ***
  
      Creates a new area with the specified name. Then name must be unique or kCfgErrAreaAlreadyExists 
      will be returned.
  */
  EXTERN_API( OSStatus )
  OTCfgDeleteArea                 (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID);
  
  /*
      OTCfgDeleteArea()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area to delete
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Deletes the specified area. If the area doesn't exist kCfgErrAreaNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgDuplicateArea              (CfgDatabaseRef         dbRef,
                                   CfgAreaID              sourceAreaID,
                                   CfgAreaID              destAreaID);
  
  /*
      OTCfgDuplicateArea()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID sourceAreaID          Area to duplicate
                  CfgAreaID destAreaID            Area to contain duplicate
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Duplicates the source area content into the destination area. Both areas should exist prior to 
      making this call. If either area doesn't exist kCfgErrAreaNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgSetAreaName                (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID,
                                   ConstStr255Param       areaName,
                                   CfgAreaID *            newAreaID);
  
  /*
      OTCfgSetAreaName()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area being named
                  ConstStr255Param areaName       New name for area
      Outputs:    CfgAreaID* newAreaID            ID of renamed area
      Returns:    OSStatus                        *** list errors ***
  
      Renames the specified area. A new id is returned: it should be used from now on. If the area 
      doesn't exist kCfgErrAreaNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgGetAreaName                (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID,
                                   Str255                 areaName);
  
  /*
      OTCfgGetAreaName()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area being queried
      Outputs:    Str255 areaName                 Name of area
      Returns:    OSStatus                        *** list errors ***
  
      Gets the name of the specified area. If the area doesn't exist kCfgErrAreaNotFound is returned.
  */
  /*    -------------------------------------------------------------------------
      Configuration Database API
      
      Single Writer ONLY!!!
      ------------------------------------------------------------------------- */
  /*    -------------------------------------------------------------------------
      Opening an area for reading
      ------------------------------------------------------------------------- */
  EXTERN_API( OSStatus )
  OTCfgOpenArea                   (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID);
  
  /*
      OTCfgOpenArea()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area to open
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Opens the specified area for reading. If the area doesn't exist kCfgErrAreaNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgCloseArea                  (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID);
  
  /*
      OTCfgCloseArea()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area to close
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Closes an area opened for reading. If the area doesn't exist kCfgErrAreaNotFound is returned.  
      Opening an area for writing All modifications to an area should be performed as part of a 
      transaction.
  */
  /*
      For write access
  */
  EXTERN_API( OSStatus )
  OTCfgBeginAreaModifications     (CfgDatabaseRef         dbRef,
                                   CfgAreaID              readAreaID,
                                   CfgAreaID *            writeAreaID);
  
  /*
      OTCfgBeginAreaModifications()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID readAreaID            ID of area opened for reading
      Outputs:    CfgAreaID* writeAreaID          ID of area opened for modification
      Returns:    OSStatus                        *** list errors ***
  
      Opens the specified area for writing. A new area id is provided.  This area id should be used to 
      enumerate, add, delete, read and write to the modified data. The original id can still be used to 
      access the original unmodified data. If the area doesn't exist kCfgErrAreaNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgCommitAreaModifications    (CfgDatabaseRef         dbRef,
                                   CfgAreaID              readAreaID,
                                   CfgAreaID              writeAreaID);
  
  /*
      OTCfgCommitAreaModifications()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID readAreaID            ID of area opened for reading
                  CfgAreaID writeAreaID           ID of area opened for modification
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Closes an area opened for writing.  All modifications are committed and readers are informed that 
      the database changed state ( kCfgStateChangedErr ). The areaID should be the id of the original 
      area.  If the area doesn't exist or the wrong id is passed, kCfgErrAreaNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgAbortAreaModifications     (CfgDatabaseRef         dbRef,
                                   CfgAreaID              readAreaID);
  
  /*
      OTCfgAbortAreaModifications()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID readAreaID            ID of area opened for reading
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Closes an area opened for writing, discarding any modification. The areaID should be the id of 
      the original area. If the area doesn't exist or the wrong id is passed kCfgErrAreaNotFound is 
      returned.
  */
  /*
      Working with entities
  
      Entities can be manipulated as soon as an area has been opened.  The same calls work both for 
      areas opened for reading or for modification. In the latter case, the calls can be used on the 
      original or new area id to access the original data or the modified data.
  */
  /*
      For everybody
      Count receives the actual number of entities
  */
  EXTERN_API( OSStatus )
  OTCfgGetEntitiesCount           (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID,
                                   CfgEntityClass         entityClass,
                                   CfgEntityType          entityType,
                                   ItemCount *            itemCount);
  
  /*
      OTCfgGetEntitiesCount()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area to count
                  CfgEntityClass entityClass      Class of entities to count
                  CfgEntityType entityType        Type of entities to count
      Outputs:    ItemCount* itemCount            Count of matching entities
      Returns:    OSStatus                        *** list errors ***
  
      Returns the number of entities of the specified class and type in the specified area. To obtain 
      all entities regardless of their class or type pass kCfgClassAnyEntity or kCfgTypeAnyEntity. If 
      the area doesn't exist or the wrong id is passed kCfgErrAreaNotFound is returned.
  */
  
  /*
      Count as input, is the number of entities to read;
      count as output, receives the actual number of entities or the number you specified. 
  */
  EXTERN_API( OSStatus )
  OTCfgGetEntitiesList            (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID,
                                   CfgEntityClass         entityClass,
                                   CfgEntityType          entityType,
                                   ItemCount *            itemCount,
                                   CfgEntityRef           entityRef[],
                                   CfgEntityInfo          entityInfo[]);
  
  /*
      OTCfgGetEntitiesList()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area to list
                  CfgEntityClass entityClass      Class of entities to list
                  CfgEntityType entityType        Type of entities to list
                  ItemCount* itemCount            Count of entities requested
      Outputs:    ItemCount* itemCount            Count of entities listed
      Returns:    OSStatus                        *** list errors ***
  
      Returns the list of entities of the specified class and type in the specified area. To obtain all 
      entities regardless of their class or type pass kCfgClassAnyEntity or kCfgTypeAnyEntity. The 
      count parameter should have the value obtained by CfgGetEntitiesCount.  On exit count may be less 
      if some entities were deleted in the meantime. The id and info parameters should be arrays large 
      enough to hold count entries. If the area doesn't exist or the wrong id is passed 
      kCfgErrAreaNotFound is returned.  The info array contains information about each entity, 
      including its class, type, name and the area of its icon:
  
      struct CfgEntityInfo
      {
          CfgEntityClass      fClass;
          CfgEntityType       fType;
          ConstStr255Param    fName;
          CfgResourceLocator  fIcon;
      };
  */
  EXTERN_API( OSStatus )
  OTCfgCreateEntity               (CfgDatabaseRef         dbRef,
                                   CfgAreaID              areaID,
                                   const CfgEntityInfo *  entityInfo,
                                   CfgEntityRef *         entityRef);
  
  /*
      OTCfgCreateEntity()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgAreaID areaID                ID of area to contain entity
                  CfgEntityInfo* entityInfo       Information that defines the entity
      Outputs:    CfgEntityRef* entityRef         Reference to entity created
      Returns:    OSStatus                        *** list errors ***
  
      Creates a new entity with the specified class, type and name and returns an id for it. If the 
      area doesn't exist or the wrong id is passed kCfgErrAreaNotFound is returned. If there is already 
      an entity with the same name kCfgErrEntityAlreadyExists is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgDeleteEntity               (CfgDatabaseRef         dbRef,
                                   const CfgEntityRef *   entityRef);
  
  /*
      OTCfgDeleteEntity()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgEntityRef* entityRef         Reference to entity to delete
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Deletes the specified entity. If there is no entity with this id kCfgEntityNotfoundErr is returned
  */
  EXTERN_API( OSStatus )
  OTCfgDuplicateEntity            (CfgDatabaseRef         dbRef,
                                   const CfgEntityRef *   entityRef,
                                   const CfgEntityRef *   newEntityRef);
  
  /*
      OTCfgDuplicateEntity()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgEntityRef* entityRef         Reference to entity to duplicate
      Outputs:    CfgEntityRef* newEntityRef      Reference to duplicate entity
      Returns:    OSStatus                        *** list errors ***
  
      Duplicates the specified entity. Both entities should exit. If any entity doesn't exist 
      kCfgErrEntityNotFound is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgSetEntityName              (CfgDatabaseRef         dbRef,
                                   const CfgEntityRef *   entityRef,
                                   ConstStr255Param       entityName,
                                   CfgEntityRef *         newEntityRef);
  
  /*
      OTCfgSetEntityName()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgEntityRef* entityRef         Reference to entity to duplicate
                  ConstStr255Param entityName     New name for entity
      Outputs:    CfgEntityRef* newEntityRef      Reference to renamed entity
      Returns:    OSStatus                        *** list errors ***
  
      Renames the specified entity. If the entity doesn't exist kCfgEntityNotfoundErr is returned. If 
      there is already an entity with that name kCfgErrEntityAlreadyExists is returned.
  */
  EXTERN_API( void )
  OTCfgGetEntityArea              (const CfgEntityRef *   entityRef,
                                   CfgAreaID *            areaID);
  
  /*
      OTCfgGetEntityArea()
  
      Inputs:     CfgEntityRef *entityRef         Reference to an entity
      Outputs:    CfgAreaID *areaID               ID of area that contains the entity
      Returns:    none
  
      Returns the area ID associated with the specified entity reference.
  */
  EXTERN_API( void )
  OTCfgGetEntityName              (const CfgEntityRef *   entityRef,
                                   Str255                 entityName);
  
  /*
      OTCfgGetEntityName()
  
      Inputs:     CfgEntityRef *entityRef         Reference to an entity
      Outputs:    Str255 entityName               Name of the entity
      Returns:    none
  
      Returns the entity name associated with the specified entity reference.
  */
  EXTERN_API( void )
  OTCfgChangeEntityArea           (CfgEntityRef *         entityRef,
                                   CfgAreaID              newAreaID);
  
  /*
      OTCfgChangeEntityArea()
  
      Inputs:     CfgEntityRef *entityRef         Reference to an entity
                  CfgAreaID newAreaID             ID of area to contain moved entity
      Outputs:    none
      Returns:    none
  
      Changes the area ID associated with the specified entity reference. This effectively moves the 
      entity to a different area.
  */
  /*    -------------------------------------------------------------------------
      These API calls are for the protocol developers to compare the IDs.
      ------------------------------------------------------------------------- */
  /*    -------------------------------------------------------------------------
      For OTCfgIsSameEntityRef
      ------------------------------------------------------------------------- */
  endif  /* CALL_NOT_IN_CARBON */
  
  enum {
      kOTCfgIgnoreArea            = kCfgIgnoreArea,
      kOTCfgDontIgnoreArea        = kCfgDontIgnoreArea
  };
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( Boolean )
  OTCfgIsSameEntityRef            (const CfgEntityRef *   entityRef1,
                                   const CfgEntityRef *   entityRef2,
                                   Boolean                ignoreArea);
  
  /*
      OTCfgIsSameEntityRef()
  
      Inputs:     CfgEntityRef* entityRef1        Reference to an entity
                  CfgEntityRef* entityRef2        Reference to another entity
                  Boolean ignoreArea              If true, ignore the area ID
      Outputs:    none
      Returns:    Boolean                         If true, entity references match
  
      Compare two entity references. If ignoreArea is true, and the two entity names are the same, then return 
      true. If ignoreArea is false, then the area IDs must be the same, as well as the entity names 
      must be the same, then can return true.
  */
  EXTERN_API( Boolean )
  OTCfgIsSameAreaID               (CfgAreaID              areaID1,
                                   CfgAreaID              areaID2);
  
  /*
      OTCfgIsSameAreaID()
  
      Inputs:     CfgAreaID areaID1               ID of an area
                  CfgAreaID areaID2               ID of another area
      Outputs:    none
      Returns:    Boolean                         If true, area IDs match
  
      Compare two area IDs. Return true for matching area IDs, and return false for the different area IDs.
  */
  /*    -------------------------------------------------------------------------
      Dealing with individual preferences
      ------------------------------------------------------------------------- */
  /*    -------------------------------------------------------------------------
      Open Preferences
      if writer = true, GetPrefs and SetPrefs are allowed, else only GetPrefs is allowed.
      ------------------------------------------------------------------------- */
  EXTERN_API( OSStatus )
  OTCfgOpenPrefs                  (CfgDatabaseRef         dbRef,
                                   const CfgEntityRef *   entityRef,
                                   Boolean                writer,
                                   CfgEntityAccessID *    accessID);
  
  /*
      OTCfgOpenPrefs()
  
      Inputs:     CfgDatabaseRef dbRef            Reference to opened database
                  CfgEntityRef* entityRef         Reference to an entity
                  Boolean writer              If true, open for write
      Outputs:    CfgEntityAccessID* accessID     ID for entity access
      Returns:    OSStatus                        *** list errors ***
  
      Open the specified entity and return the CfgEntityAccessID for the following access of the 
      content of the entity. If writer is true, CfgGetPrefs and CfgSetPrefs are allowed, otherwise only 
      CfgGetPrefs is allowed.
  */
  EXTERN_API( OSStatus )
  OTCfgClosePrefs                 (CfgEntityAccessID      accessID);
  
  /*
      OTCfgClosePrefs()
  
      Inputs:     CfgEntityAccessID* accessID     ID for entity to close
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Close the entity with the specified CfgEntityAccessID.
  */
  /*    -------------------------------------------------------------------------
      Get/Set Preferences
  
      Accessing the content of an entity
  
      These API calls are for the protocol developers. It supports multiple records per entity. Each 
      record is identified by the prefsType and the size of the record. The protocol stack will provide 
      the STRUCT to view the content of each record.
      ------------------------------------------------------------------------- */
  EXTERN_API( OSStatus )
  OTCfgSetPrefs                   (CfgEntityAccessID      accessID,
                                   OSType                 prefsType,
                                   const void *           data,
                                   ByteCount              length);
  
  /*
      OTCfgSetPrefs()
  
      Inputs:     CfgEntityAccessID* accessID     ID of entity to access
                  OSType prefsType                Record type to set
                  void* data                      Address of data
                  ByteCount length                Number of bytes of data
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Write the data to the specified record. The record is identified by the prefsType. If the entity 
      is not opened for the writer, an error code is returned.
  */
  EXTERN_API( OSStatus )
  OTCfgGetPrefs                   (CfgEntityAccessID      accessID,
                                   OSType                 prefsType,
                                   void *                 data,
                                   ByteCount              length);
  
  /*
      OTCfgGetPrefs()
  
      Inputs:     CfgEntityAccessID* accessID     ID of entity to access
                  OSType prefsType                Record type to get
                  void* data                      Address for data
                  ByteCount length                Number of bytes of data requested
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Read the data from the specified record to the passed buffer. The record is identified by the 
      prefsType. If the passed buffer is too small, kCfgErrDataTruncated is returned, but will copy as 
      many data as possible to the buffer.
  */
  EXTERN_API( OSStatus )
  OTCfgGetPrefsSize               (CfgEntityAccessID      accessID,
                                   OSType                 prefsType,
                                   ByteCount *            length);
  
  /*
      OTCfgGetPrefsSize()
  
      Inputs:     CfgEntityAccessID* accessID     ID of entity to access
                  OSType prefsType                Record type to get
                  ByteCount length                Number of bytes of data available
      Outputs:    none
      Returns:    OSStatus                        *** list errors ***
  
      Returns the length, in bytes, of the specified record. The record is identified by the prefsType.
  */
  /*    -------------------------------------------------------------------------
      Get table of contents for prefs
      ------------------------------------------------------------------------- */
  EXTERN_API( OSStatus )
  OTCfgGetPrefsTOCCount           (CfgEntityAccessID      accessID,
                                   ItemCount *            itemCount);
  
  /*
      OTCfgGetPrefsTOCCount()
  
      Inputs:     CfgEntityAccessID* accessID     ID of entity to access
      Outputs:    ItemCount* itemCount            Number of entries available
      Returns:    OSStatus                        *** list errors ***
  
      Get the count of all the record headers in the entity. Return the number of records in the count. 
  */
  EXTERN_API( OSStatus )
  OTCfgGetPrefsTOC                (CfgEntityAccessID      accessID,
                                   ItemCount *            itemCount,
                                   CfgPrefsHeader         PrefsTOC[]);
  
  /*
      OTCfgGetPrefsTOC()
  
      Inputs:     CfgEntityAccessID* accessID     ID of entity to access
                  ItemCount* itemCount            Number of entries requested
      Outputs:    ItemCount* itemCount            Number of entries available
                  CfgPrefsHeader PrefsTOC[]       Table of entries
      Returns:    OSStatus                        *** list errors ***
  
      Get the list of all the record headers in the entity. Return the number of records in the count. 
      If the PrefsTOC is specified, it has to be big enough to hold all the record headers. If the 
      PrefsTOC is null, only the count is returned.
  */
  EXTERN_API( SInt16 )
  OTCfgEncrypt                    (UInt8 *                key,
                                   UInt8 *                data,
                                   SInt16                 dataLen);
  
  /*
      OTCfgEncrypt()
  
      Inputs:     UInt8 *key                      encryption key ( user name )
                  UInt8 *data                     data to encrypt ( password )
                  SInt16 dataLen                  length of data to encrypt
      Outputs:    UInt8 *data                     encrypted data
      Returns:    SInt16                          length of encrypted data
  
      Encrypt the password, using the user name as the encryption key.  Return the encrypted password and its length.  
  */
  EXTERN_API( SInt16 )
  OTCfgDecrypt                    (UInt8 *                key,
                                   UInt8 *                data,
                                   SInt16                 dataLen);
  
  /*
      OTCfgDecrypt()
  
      Inputs:     UInt8 *key                      encryption key ( user name )
                  UInt8 *data                     data to decrypt ( password )
                  SInt16 dataLen                  length of data to decrypt
      Outputs:    UInt8 *data                     decrypted data
      Returns:    SInt16                          length of decrypted data
  
      Decrypt the password, using the user name as the encryption key.  Return the decrypted password and its length.  
  */
  EXTERN_API( Handle )
  OTCfgGetDefault                 (ResType                entityType,
                                   ResType                entityClass,
                                   ResType                recordType);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( OSStatus )
  OTCfgInstallNotifier            (CfgDatabaseRef         dbRef,
                                   CfgEntityClass         theClass,
                                   CfgEntityType          theType,
                                   OTNotifyProcPtr        notifier,
                                   void *                 contextPtr);
  
  EXTERN_API( OSStatus )
  OTCfgRemoveNotifier             (CfgDatabaseRef         dbRef,
                                   CfgEntityClass         theClass,
                                   CfgEntityType          theType);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  typedef UInt16                          OTCfgIRPortSetting;
  enum {
      kOTCfgTypeStruct            = FOUR_CHAR_CODE('stru'),
      kOTCfgTypeElement           = FOUR_CHAR_CODE('elem'),
      kOTCfgTypeVector            = FOUR_CHAR_CODE('vect')
  };
  
  /*    -------------------------------------------------------------------------
      CfgEntityClass / CfgEntityType
  
      The database can distinguish between several classes of objects and 
      several types withing each class
      Use of different classes allow to store type of information in the same database
  
      Other entity classes and types can be defined by developers.
      they should be unique and registered with Developer Tech Support (DTS)
      ------------------------------------------------------------------------- */
  enum {
      kOTCfgClassNetworkConnection = FOUR_CHAR_CODE('otnc'),
      kOTCfgClassGlobalSettings   = FOUR_CHAR_CODE('otgl'),
      kOTCfgClassServer           = FOUR_CHAR_CODE('otsv'),
      kOTCfgTypeGeneric           = FOUR_CHAR_CODE('otan'),
      kOTCfgTypeAppleTalk         = FOUR_CHAR_CODE('atlk'),
      kOTCfgTypeTCPv4             = FOUR_CHAR_CODE('tcp4'),
      kOTCfgTypeTCPv6             = FOUR_CHAR_CODE('tcp6'),
      kOTCfgTypeRemote            = FOUR_CHAR_CODE('ara '),
      kOTCfgTypeDial              = FOUR_CHAR_CODE('dial'),
      kOTCfgTypeModem             = FOUR_CHAR_CODE('modm'),
      kOTCfgTypeInfrared          = FOUR_CHAR_CODE('infr'),
      kOTCfgClassSetOfSettings    = FOUR_CHAR_CODE('otsc'),
      kOTCfgTypeSetOfSettings     = FOUR_CHAR_CODE('otst'),
      kOTCfgTypeDNS               = FOUR_CHAR_CODE('dns ')
  };
  
  
***************************************************************************** * Preferences Structures ******************************************************************************

  
  enum {
      kOTCfgIndexSetsActive       = 0,
      kOTCfgIndexSetsEdit         = 1,
      kOTCfgIndexSetsLimit        = 2                             /*    last value, no comma*/
  };
  
  struct CfgSetsStruct {
      UInt32                          fFlags;
      UInt32                          fTimes[2];
  };
  typedef struct CfgSetsStruct            CfgSetsStruct;
  
  struct CfgSetsElement {
      CfgEntityRef                    fEntityRef;
      CfgEntityInfo                   fEntityInfo;
  };
  typedef struct CfgSetsElement           CfgSetsElement;
  
  struct CfgSetsVector {
      UInt32                          fCount;
      CfgSetsElement                  fElements[1];
  };
  typedef struct CfgSetsVector            CfgSetsVector;
  /*  Common  */
  enum {
                                                                  /*    connection */
      kOTCfgTypeConfigName        = FOUR_CHAR_CODE('cnam'),
      kOTCfgTypeConfigSelected    = FOUR_CHAR_CODE('ccfg'),       /*    transport options  */
      kOTCfgTypeUserLevel         = FOUR_CHAR_CODE('ulvl'),
      kOTCfgTypeWindowPosition    = FOUR_CHAR_CODE('wpos')
  };
  
  /*  AppleTalk   */
  enum {
                                                                  /*    connection */
      kOTCfgTypeAppleTalkPrefs    = FOUR_CHAR_CODE('atpf'),
      kOTCfgTypeAppleTalkVersion  = FOUR_CHAR_CODE('cvrs'),
      kOTCfgTypeAppleTalkLocks    = FOUR_CHAR_CODE('lcks'),
      kOTCfgTypeAppleTalkPort     = FOUR_CHAR_CODE('port'),
      kOTCfgTypeAppleTalkProtocol = FOUR_CHAR_CODE('prot'),
      kOTCfgTypeAppleTalkPassword = FOUR_CHAR_CODE('pwrd'),
      kOTCfgTypeAppleTalkPortFamily = FOUR_CHAR_CODE('ptfm')      /*    transport options  */
  };
  
  enum {
      kOTCfgIndexAppleTalkAARP    = 0,
      kOTCfgIndexAppleTalkDDP     = 1,
      kOTCfgIndexAppleTalkNBP     = 2,
      kOTCfgIndexAppleTalkZIP     = 3,
      kOTCfgIndexAppleTalkATP     = 4,
      kOTCfgIndexAppleTalkADSP    = 5,
      kOTCfgIndexAppleTalkPAP     = 6,
      kOTCfgIndexAppleTalkASP     = 7,
      kOTCfgIndexAppleTalkLast    = 7
  };
  
  struct OTCfgAppleTalkPrefs {
      UInt16                          fVersion;
      UInt16                          fNumPrefs;
      OTPortRef                       fPort;
      void *                          fLink;
      void *                          fPrefs[8];
  };
  typedef struct OTCfgAppleTalkPrefs      OTCfgAppleTalkPrefs;
  
  struct OTCfgAARPPrefs {
      UInt16                          fVersion;
      UInt16                          fSize;
      UInt32                          fAgingCount;
      UInt32                          fAgingInterval;
      OTByteCount                     fProtAddrLen;
      OTByteCount                     fHWAddrLen;
      UInt32                          fMaxEntries;
      OTByteCount                     fProbeInterval;
      OTByteCount                     fProbeRetryCount;
      OTByteCount                     fRequestInterval;
      OTByteCount                     fRequestRetryCount;
  };
  typedef struct OTCfgAARPPrefs           OTCfgAARPPrefs;
  
  struct OTCfgDDPPrefs {
      UInt16                          fVersion;
      UInt16                          fSize;
      UInt32                          fTSDUSize;
      UInt8                           fLoadType;
      UInt8                           fNode;
      UInt16                          fNetwork;
      UInt16                          fRTMPRequestLimit;
      UInt16                          fRTMPRequestInterval;
      UInt32                          fAddressGenLimit;
      UInt32                          fBRCAgingInterval;
      UInt32                          fRTMPAgingInterval;
      UInt32                          fMaxAddrTries;
      Boolean                         fDefaultChecksum;
      Boolean                         fIsFixedNode;
      UInt8                           fMyZone[33];
  };
  typedef struct OTCfgDDPPrefs            OTCfgDDPPrefs;
  
  struct OTCfgATPFPrefs {
      OTCfgAppleTalkPrefs             fAT;
      OTCfgAARPPrefs                  fAARP;
      OTCfgDDPPrefs                   fDDP;
      char                            fFill[122];
  };
  typedef struct OTCfgATPFPrefs           OTCfgATPFPrefs;
  /*  Infrared    */
  enum {
      kOTCfgTypeInfraredPrefs     = FOUR_CHAR_CODE('atpf'),
      kOTCfgTypeInfraredGlobal    = FOUR_CHAR_CODE('irgo')
  };
  
  struct OTCfgIRPrefs {
      CfgPrefsHeader                  fHdr;
      OTPortRef                       fPort;                      /*    OT port id*/
      OTCfgIRPortSetting              fPortSetting;               /*    Ir protocol,  irda or irtalk*/
      Boolean                         fNotifyOnDisconnect;        /*    notify user on irda disconnect?*/
      Boolean                         fDisplayIRControlStrip;     /*    show ir control strip?*/
      Point                           fWindowPosition;            /*    The position of the editor window*/
  };
  typedef struct OTCfgIRPrefs             OTCfgIRPrefs;
  
  struct OTCfgIRGlobal {
      CfgPrefsHeader                  fHdr;                       /* standard prefererences header*/
      UInt32                          fOptions;                   /* options bitmask*/
      UInt32                          fNotifyMask;                /* Notification options.*/
      UInt32                          fUnloadTimeout;             /* Unload timeout (in milliseconds)*/
  };
  typedef struct OTCfgIRGlobal            OTCfgIRGlobal;
  /*  TCP/IP v4   */
  enum {
                                                                  /*    connection */
      kOTCfgTypeTCPalis           = FOUR_CHAR_CODE('alis'),
      kOTCfgTypeTCPcvrs           = FOUR_CHAR_CODE('cvrs'),
      kOTCfgTypeTCPdcid           = FOUR_CHAR_CODE('dcid'),
      kOTCfgTypeTCPdclt           = FOUR_CHAR_CODE('dclt'),
      kOTCfgTypeTCPdtyp           = FOUR_CHAR_CODE('dtyp'),
      kOTCfgTypeTCPidns           = FOUR_CHAR_CODE('idns'),
      kOTCfgTypeTCPihst           = FOUR_CHAR_CODE('ihst'),
      kOTCfgTypeTCPiitf           = FOUR_CHAR_CODE('iitf'),
      kOTCfgTypeTCPara            = FOUR_CHAR_CODE('ipcp'),
      kOTCfgTypeTCPirte           = FOUR_CHAR_CODE('irte'),
      kOTCfgTypeTCPisdm           = FOUR_CHAR_CODE('isdm'),
      kOTCfgTypeTCPstng           = FOUR_CHAR_CODE('stng'),
      kOTCfgTypeTCPunld           = FOUR_CHAR_CODE('unld'),
      kOTCfgTypeTCPVersion        = FOUR_CHAR_CODE('cvrs'),       /*    Version */
      kOTCfgTypeTCPDevType        = FOUR_CHAR_CODE('dvty'),
      kOTCfgTypeTCPPrefs          = FOUR_CHAR_CODE('iitf'),
      kOTCfgTypeTCPServersList    = FOUR_CHAR_CODE('idns'),
      kOTCfgTypeTCPSearchList     = FOUR_CHAR_CODE('ihst'),
      kOTCfgTypeTCPRoutersList    = FOUR_CHAR_CODE('irte'),
      kOTCfgTypeTCPDomainsList    = FOUR_CHAR_CODE('isdm'),
      kOTCfgTypeTCPPort           = FOUR_CHAR_CODE('port'),       /*    Ports */
      kOTCfgTypeTCPProtocol       = FOUR_CHAR_CODE('prot'),
      kOTCfgTypeTCPPassword       = FOUR_CHAR_CODE('pwrd'),       /*    Password */
      kOTCfgTypeTCPLocks          = FOUR_CHAR_CODE('stng'),       /*    locks */
      kOTCfgTypeTCPUnloadType     = FOUR_CHAR_CODE('unld')        /*    transport options  */
  };
  
  struct OTCfgIDNSPrefs {
      short                           fCount;
      InetHost                        fAddressesList;
  };
  typedef struct OTCfgIDNSPrefs           OTCfgIDNSPrefs;
  
  struct OTCfgHSTFPrefs {
      char                            fPrimaryInterfaceIndex;     /*    always 1 in OT 1.0 / 1.1*/
                                                                  /*    this structure IS packed!*/
      UInt8                           fLocalDomainName[256];
                                                                  /*    followed by */
      UInt8                           admindomain[256];
  };
  typedef struct OTCfgHSTFPrefs           OTCfgHSTFPrefs;
  /*  This is your worst case, a fixed size structure, tacked on after a variable length string.*/
  /*  Use the macro to help access the movable beast. */
  
  define kIITFPartP( h ) ( (OTCfgIITFPrefsPart*) &( (**( (OTCfgIITFPrefs**) h )).fAppleTalkZone[ (**( (OTCfgIITFPrefs**) h )).fAppleTalkZone[0] + 1 ] ) )
  
  /*
      This structure also contains an IP address and subnet mask that are not aligned on a four byte boundary.  
      In order to avoid compiler warnings, and the possibility of code that won't work, 
      these fields are defined here as four character arrays.  
      It is suggested that BlockMoveData be used to copy to and from a field of type InetHost.  
  */
  
  struct OTCfgIITFPrefsPart {
      char                            path[36];
      char                            module[32];
      unsigned long                   framing;
  };
  typedef struct OTCfgIITFPrefsPart       OTCfgIITFPrefsPart;
  
  struct OTCfgIITFPrefs {
      short                           fCount;
      UInt8                           fConfigMethod;
                                                                  /*    this structure IS packed!*/
                                                                  /*    Followed by:*/
      UInt8                           fIPAddress[4];
      UInt8                           fSubnetMask[4];
      UInt8                           fAppleTalkZone[256];
                                                                  /*    this structure IS packed!*/
      UInt8                           fFiller;
      OTCfgIITFPrefsPart              part;
  };
  typedef struct OTCfgIITFPrefs           OTCfgIITFPrefs;
  
  struct OTCfgIRTEEntry {
      InetHost                        fToHost;                    /*    always 0;*/
      InetHost                        fViaHost;                   /*    router address;*/
      short                           fLocal;                     /*    always 0*/
      short                           fHost;                      /*    always 0*/
  };
  typedef struct OTCfgIRTEEntry           OTCfgIRTEEntry;
  
  struct OTCfgIRTEPrefs {
      short                           fCount;
      OTCfgIRTEEntry                  fList[1];
  };
  typedef struct OTCfgIRTEPrefs           OTCfgIRTEPrefs;
  
  struct OTCfgISDMPrefs {
      short                           fCount;
      Str255                          fDomainsList;
  };
  typedef struct OTCfgISDMPrefs           OTCfgISDMPrefs;
  
  struct OTCfgDHCPRecord {
      InetHost                        ipIPAddr;
      InetHost                        ipConfigServer;
      UInt32                          ipLeaseGrantTime;
      UInt32                          ipLeaseExpirationTime;
  };
  typedef struct OTCfgDHCPRecord          OTCfgDHCPRecord;
  /*  DNS */
  enum {
                                                                  /*    connection */
      kOTCfgTypeDNSidns           = FOUR_CHAR_CODE('idns'),
      kOTCfgTypeDNSisdm           = FOUR_CHAR_CODE('isdm'),
      kOTCfgTypeDNSihst           = FOUR_CHAR_CODE('ihst'),
      kOTCfgTypeDNSstng           = FOUR_CHAR_CODE('stng'),
      kOTCfgTypeDNSPassword       = FOUR_CHAR_CODE('pwrd')        /*    transport options  */
  };
  
  /*  Modem   */
  enum {
                                                                  /*    connection */
      kOTCfgTypeModemModem        = FOUR_CHAR_CODE('ccl '),       /*    Type for Modem configuration resource*/
      kOTCfgTypeModemLocks        = FOUR_CHAR_CODE('lkmd'),       /*    Types for lock resources*/
      kOTCfgTypeModemAdminPswd    = FOUR_CHAR_CODE('mdpw'),       /*    Password*/
                                                                  /*    transport options  */
      kOTCfgTypeModemApp          = FOUR_CHAR_CODE('mapt')
  };
  
  struct OTCfgRemoteConfigModem {
      UInt32                          version;
      Boolean                         useModemScript;
      char                            pad00;                      /*    this structure is NOT packed!*/
      FSSpec                          modemScript;
      Boolean                         modemSpeakerOn;
      Boolean                         modemPulseDial;
      UInt32                          modemDialToneMode;
      SInt8                           lowerLayerName[36];
  };
  typedef struct OTCfgRemoteConfigModem   OTCfgRemoteConfigModem;
  
  struct OTCfgModemLocks {
      UInt32                          version;
      UInt32                          port;
      UInt32                          script;
      UInt32                          speaker;
      UInt32                          dialing;
  };
  typedef struct OTCfgModemLocks          OTCfgModemLocks;
  
  struct OTCfgModemAppPrefs {
      UInt32                          version;
      Point                           windowPos;
      SInt32                          userMode;
  };
  typedef struct OTCfgModemAppPrefs       OTCfgModemAppPrefs;
  /*  Remote Access   */
  enum {
                                                                  /*    connection */
      kOTCfgTypeRemoteARAP        = FOUR_CHAR_CODE('arap'),
      kOTCfgTypeRemoteAddress     = FOUR_CHAR_CODE('cadr'),
      kOTCfgTypeRemoteChat        = FOUR_CHAR_CODE('ccha'),
      kOTCfgTypeRemoteDialing     = FOUR_CHAR_CODE('cdia'),
      kOTCfgTypeRemoteExtAddress  = FOUR_CHAR_CODE('cead'),
      kOTCfgTypeRemoteClientLocks = FOUR_CHAR_CODE('clks'),
      kOTCfgTypeRemoteClientMisc  = FOUR_CHAR_CODE('cmsc'),
      kOTCfgTypeRemoteConnect     = FOUR_CHAR_CODE('conn'),
      kOTCfgTypeRemoteUser        = FOUR_CHAR_CODE('cusr'),
      kOTCfgTypeRemoteDialAssist  = FOUR_CHAR_CODE('dass'),
      kOTCfgTypeRemoteIPCP        = FOUR_CHAR_CODE('ipcp'),
      kOTCfgTypeRemoteLCP         = FOUR_CHAR_CODE('lcp '),       /* trailing space is important! */
      kOTCfgTypeRemoteLogOptions  = FOUR_CHAR_CODE('logo'),
      kOTCfgTypeRemotePassword    = FOUR_CHAR_CODE('pass'),
      kOTCfgTypeRemotePort        = FOUR_CHAR_CODE('port'),
      kOTCfgTypeRemoteServerLocks = FOUR_CHAR_CODE('slks'),
      kOTCfgTypeRemoteServer      = FOUR_CHAR_CODE('srvr'),
      kOTCfgTypeRemoteUserMode    = FOUR_CHAR_CODE('usmd'),
      kOTCfgTypeRemoteX25         = FOUR_CHAR_CODE('x25 '),       /* trailing space is important! */
                                                                  /*    transport options  */
      kOTCfgTypeRemoteApp         = FOUR_CHAR_CODE('capt')
  };
  
  
***************************************************************************** OTCfgRemoteLogOptions This structure is appended to OTCfgRemoteConnect records in the OTCfgRemoteConnect::additional list. NOTE All OTCfgRemoteConnect::additional structures MUST have the same fields up to the "additional" field. See OTCfgRemoteX25Info. ******************************************************************************

  
  
  struct OTCfgRemoteLogOptions {
      UInt32                          version;
      UInt32                          fType;                      /*    kRAConnectAdditionalLogOptions*/
      void *                          additional;
      UInt32                          logLevel;                   /*    values defined above.*/
      UInt32                          reserved[4];                /*    for later use.*/
  };
  typedef struct OTCfgRemoteLogOptions    OTCfgRemoteLogOptions;
  
***************************************************************************** New structures for dialing mode, phone numbers, and configuration stats. ******************************************************************************

  
  enum {
      kOTCfgRemoteMaxAddressSize  = (255 + 1)
  };
  
  struct OTCfgRemoteAddress {
      struct OTCfgRemoteAddress *     next;
      UInt8                           address[256];
  };
  typedef struct OTCfgRemoteAddress       OTCfgRemoteAddress;
  
***************************************************************************** OTCfgRemoteDialing This structure is appended to OTCfgRemoteConnect records in the OTCfgRemoteConnect::additional list. NOTE All OTCfgRemoteConnect::additional structures MUST have the same fields up to the "additional" field. See OTCfgRemoteX25Info. ******************************************************************************

  
  
  struct OTCfgRemoteDialing {
      UInt32                          version;
      UInt32                          fType;                      /*    kRAConnectAdditionalDialing*/
      void *                          additional;
      UInt32                          dialMode;                   /*    values defined above.*/
      SInt32                          redialTries;
      UInt32                          redialDelay;                /*    in seconds.*/
      OTCfgRemoteAddress *            addresses;
  };
  typedef struct OTCfgRemoteDialing       OTCfgRemoteDialing;
  
***************************************************************************** OTCfgRemoteScript This is appended to OTCfgRemoteConnect records in the "additional" list. It is currently only used for passing in a modem script to override the default script. Connect scripts have their own field in OTCfgRemoteConnect. NOTE All OTCfgRemoteConnect::additional structures MUST have the same fields up to the "additional" field. See OTCfgRemoteX25Info and OTCfgRemoteDialing. ******************************************************************************

  
  
  struct OTCfgRemoteScript {
      UInt32                          version;
      UInt32                          fType;                      /*    kRAConnectAdditionalScript*/
      void *                          additional;
      UInt32                          scriptType;
      UInt32                          scriptLength;
      UInt8 *                         scriptData;
  };
  typedef struct OTCfgRemoteScript        OTCfgRemoteScript;
  
***************************************************************************** Miscellaneous limits The size limits for strings include a 1 byte for the string length or a terminating NULL character. ******************************************************************************

  
  enum {
      kOTCfgRemoteMaxPasswordLength = 255,
      kOTCfgRemoteMaxPasswordSize = (255 + 1),
      kOTCfgRemoteMaxUserNameLength = 255,
      kOTCfgRemoteMaxUserNameSize = (255 + 1),
      kOTCfgRemoteMaxAddressLength = 255,                         /*    kOTCfgRemoteMaxAddressSize           = (255 + 1),*/
      kOTCfgRemoteMaxServerNameLength = 32,
      kOTCfgRemoteMaxServerNameSize = (32 + 1),
      kOTCfgRemoteMaxMessageLength = 255,
      kOTCfgRemoteMaxMessageSize  = (255 + 1),
      kOTCfgRemoteMaxX25ClosedUserGroupLength = 4,
      kOTCfgRemoteInfiniteSeconds = (long)0xFFFFFFFF,
      kOTCfgRemoteMinReminderMinutes = 1,
      kOTCfgRemoteChatScriptFileCreator = FOUR_CHAR_CODE('ttxt'),
      kOTCfgRemoteChatScriptFileType = FOUR_CHAR_CODE('TEXT'),
      kOTCfgRemoteMaxChatScriptLength = 0x8000
  };
  
  
***************************************************************************** X.25 connection information, added to OTCfgRemoteConnect's additional info list. NOTE All OTCfgRemoteConnect::additional structures MUST have the same fields up to the "additional" field. See OTCfgRemoteScript & OTCfgRemoteDialing. ******************************************************************************

  
  
  struct OTCfgRemoteX25Info {
      UInt32                          version;
      UInt32                          fType;                      /*    kRAConnectAdditionalX25*/
      void *                          additional;                 /*    Ptr to additional connect info*/
      FSSpec                          script;                     /*    PAD's CCL script*/
      UInt8                           address[256];               /*    address of server*/
      UInt8                           userName[256];
                                                                  /*    network user ID*/
      UInt8                           closedUserGroup[5];
                                                                  /*    closed user group*/
      Boolean                         reverseCharge;              /*    request reverse charging*/
  };
  typedef struct OTCfgRemoteX25Info       OTCfgRemoteX25Info;
  
***************************************************************************** OTCfgRemoteDisconnect Use this structure to terminate Remote Access connections. ******************************************************************************

  
  
  struct OTCfgRemoteDisconnect {
      UInt32                          whenSeconds;                /*    Number of seconds until disconnect*/
      UInt32                          showStatus;                 /*    Show disconnect status window*/
  };
  typedef struct OTCfgRemoteDisconnect    OTCfgRemoteDisconnect;
  
***************************************************************************** OTCfgRemoteIsRemote Use this structure to find out if an AppleTalk address is on the remote side of the current ARA link. The "isRemote" field is set to "true" if the address is remote. ******************************************************************************

  
  
  struct OTCfgRemoteIsRemote {
      UInt32                          net;                        /*    AppleTalk network number*/
      UInt32                          node;                       /*    AppleTalk node number*/
      UInt32                          isRemote;                   /*    returned.*/
  };
  typedef struct OTCfgRemoteIsRemote      OTCfgRemoteIsRemote;
  
***************************************************************************** OTCfgRemoteConnect Use this structure to initiate Remote Access connections. ******************************************************************************

  
  
  struct OTCfgRemoteConnect {
      UInt32                          version;
      UInt32                          fType;                      /*    RAConnectType defined above.*/
      UInt32                          isGuest;                    /*    (boolean) True for guest login*/
      UInt32                          canInteract;                /*    (boolean) True if dialogs can be displayed*/
      UInt32                          showStatus;                 /*    (boolean) Display (dis)connection status dialogs?*/
      UInt32                          passwordSaved;              /*    (boolean) "Save Password" checked in doc.*/
      UInt32                          flashConnectedIcon;         /*    (boolean) Flash icon in menu bar*/
      UInt32                          issueConnectedReminders;    /*    (boolean) Use Notification Manager reminders*/
      SInt32                          reminderMinutes;            /*    How long between each reminder?*/
      UInt32                          connectManually;            /*    (boolean) True if we are connecting manually*/
      UInt32                          allowModemDataCompression;  /*    (boolean) currently, only for kSerialProtoPPP*/
      UInt32                          chatMode;                   /*    Flags defined above*/
      UInt32                          serialProtocolMode;         /*    Flags defined above*/
  
      UInt8 *                         password;
      UInt8 *                         userName;
      UInt32                          addressLength;              /*    Length of phone number or other address*/
      UInt8 *                         address;                    /*    Phone number or address data*/
      Str63                           chatScriptName;             /*    Name of imported chat script (informational only)*/
      UInt32                          chatScriptLength;           /*    Length of Chat script*/
      UInt8 *                         chatScript;                 /*    Chat script data*/
  
      void *                          additional;                 /*    Ptr to additional connect info,*/
                                                                  /*    such as OTCfgRemoteX25Info*/
  
      UInt32                          useSecurityModule;          /*    (boolean) use line-level security module ?*/
      OSType                          securitySignature;          /*    signature of security module file*/
      UInt32                          securityDataLength;         /*    0..kSecurityMaxConfigData*/
      UInt8 *                         securityData;               /*    Ptr to data of size securityDataLength*/
  };
  typedef struct OTCfgRemoteConnect       OTCfgRemoteConnect;
  
***************************************************************************** OTCfgRemoteConnectInfo If requestCode = kRAGetConnectInfo, "connectInfo" returns a pointer to a new OTCfgRemoteConnect block that describes the current connection. If requestCode = kRADisposeConnectInfo, the memory pointed to by "connectInfo" is released for reuse. "connectInfo" must point to a valid OTCfgRemoteConnect structure previously returned by kRAGetConnectInfo. ******************************************************************************

  
  
  struct OTCfgRemoteConnectInfo {
      OTCfgRemoteConnect *            connectInfo;                /*    Returned or disposed, depending on requestCode*/
  };
  typedef struct OTCfgRemoteConnectInfo   OTCfgRemoteConnectInfo;
  
***************************************************************************** OTCfgRemoteStatus Use this structure to get the status of Remote Access connections. ******************************************************************************

  
  enum {
      kOTCfgRemoteStatusIdle      = 1,
      kOTCfgRemoteStatusConnecting = 2,
      kOTCfgRemoteStatusConnected = 3,
      kOTCfgRemoteStatusDisconnecting = 4
  };
  
  struct OTCfgRemoteStatus {
      UInt32                          status;                     /*    values defined above*/
      Boolean                         answerEnabled;
      char                            pad00;                      /*    This structure is NOT packed*/
      UInt32                          secondsConnected;
      UInt32                          secondsRemaining;
      UInt8                           userName[256];              /*    Pascal format*/
      UInt8                           serverName[33];             /*    Pascal format*/
      char                            pad01;                      /*    This structure is NOT packed*/
      UInt32                          messageIndex;
      UInt8                           message[256];               /*    Pascal format*/
      UInt32                          serialProtocolMode;         /*    Flags defined above.*/
      UInt8                           baudMessage[256];           /*    Pascal format*/
      Boolean                         isServer;
      char                            pad02;                      /*    This structure is NOT packed*/
      UInt32                          bytesIn;
      UInt32                          bytesOut;
      UInt32                          linkSpeed;
      UInt32                          localIPAddress;
      UInt32                          remoteIPAddress;
  };
  typedef struct OTCfgRemoteStatus        OTCfgRemoteStatus;
  
***************************************************************************** OTCfgRemoteUserMessage Use this structure when converting result codes into user messages. ******************************************************************************

  
  
  struct OTCfgRemoteUserMessage {
      UInt32                          version;
      SInt32                          messageID;
      UInt8                           userMessage[256];
      UInt8                           userDiagnostic[256];
  };
  typedef struct OTCfgRemoteUserMessage   OTCfgRemoteUserMessage;
  
***************************************************************************** OTCfgRemoteNotifier Use this structure to install a procedure to receive asynchronous Remote Access notifications. ******************************************************************************

  
  
  typedef UInt32                          OTCfgRemoteEventCode;
  typedef CALLBACK_API_C( void , RANotifyProcPtr )(void *contextPtr, OTCfgRemoteEventCode code, OSStatus result, void *cookie);
  
  struct OTCfgRemoteNotifier {
      RANotifyProcPtr                 procPtr;
      void *                          contextPtr;
  };
  typedef struct OTCfgRemoteNotifier      OTCfgRemoteNotifier;
  
***************************************************************************** OTCfgRemoteRequest All Remote Access API calls must pass a pointer to an OTCfgRemoteRequest structure. ******************************************************************************

  
  
  struct OTCfgRemoteRequest {
      SInt8                           reserved1[16];              /*    Do not use. */
      OSErr                           result;                     /*    <--*/
      SInt8                           reserved2[8];               /*    Do not use.*/
      SInt16                          requestCode;                /*     -->*/
      SInt16                          portId;                     /*    <-->*/
      union {
          OTCfgRemoteNotifier             Notifier;
          OTCfgRemoteConnect              Connect;
          OTCfgRemoteDisconnect           Disconnect;
          OTCfgRemoteStatus               Status;
          OTCfgRemoteIsRemote             IsRemote;
          OTCfgRemoteConnectInfo          ConnectInfo;
      }                                 fType;
  };
  typedef struct OTCfgRemoteRequest       OTCfgRemoteRequest;
  
  struct OTCfgRemoteConfigCAPT {
      UInt32                          fWord1;
      Point                           fWindowPosition;
      UInt32                          fWord3;
      UInt32                          fUserLevel;
      UInt32                          fSetupVisible;
  };
  typedef struct OTCfgRemoteConfigCAPT    OTCfgRemoteConfigCAPT;
  endif  /* CALL_NOT_IN_CARBON */
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __NETWORKSETUP__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.