NetBSD/usr.sbin/sup/source/sup.h
christos a6d86f0535 Changes to write ascii timestamps in the when files.
Looked into making it 64 bit clean, but it is hopeless.
Added little program to convert from the old timestamp files
into the new ones.
1995-06-03 21:21:48 +00:00

266 lines
8.9 KiB
C

/*
* Copyright (c) 1992 Carnegie Mellon University
* All Rights Reserved.
*
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
*
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
*
* Carnegie Mellon requests users of this software to return to
*
* Software Distribution Coordinator or Software_Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
*
* any improvements or extensions that they make and grant Carnegie Mellon
* the rights to redistribute these changes.
*/
/* sup.h -- declarations for sup, supnamesrv, supfilesrv
*
* VERSION NUMBER for any program is given by: a.b (c)
* where a = PROTOVERSION is the protocol version #
* b = PGMVERSION is program # within protocol
* c = scmversion is communication module version
* (i.e. operating system for which scm is configured)
**********************************************************************
* HISTORY
* 13-Sep-92 Mary Thompson (mrt) at Carnegie-Mellon University
* Changed name of DEFDIR from /usr/cs to /usr.
*
* 7-July-93 Nate Williams at Montana State University
* Modified SUP to use gzip based compression when sending files
* across the network to save BandWidth
*
* $Log: sup.h,v $
* Revision 1.3 1995/06/03 21:21:54 christos
* Changes to write ascii timestamps in the when files.
* Looked into making it 64 bit clean, but it is hopeless.
* Added little program to convert from the old timestamp files
* into the new ones.
*
* Revision 1.2 1993/08/04 17:46:15 brezak
* Changes from nate for gzip'ed sup
*
* Revision 1.1.1.1 1993/05/21 14:52:18 cgd
* initial import of CMU's SUP to NetBSD
*
* Revision 1.10 92/08/11 12:06:42 mrt
* Added definition for DEBUGFPORTNUM, the debugging port number.
* Changed so that last and when file names could include
* the relase name if any.
* [92/07/23 mrt]
*
* Revision 1.9 91/04/29 14:39:03 mja
* Reduce MAXCHILDREN from 8 to 3.
*
* Revision 1.8 89/08/23 14:55:30 gm0w
* Moved coll.dir from supservers to supfiles.
* [89/08/23 gm0w]
*
* 18-Mar-88 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Added host=<hostfile> support to releases file.
*
* 27-Dec-87 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Added crosspatch support. Removed nameserver support.
*
* 27-Jun-87 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Added TREELIST and other changes for "release" support.
*
* 25-May-87 Doug Philips (dwp) at Carnegie-Mellon University
* Version 6 of the network protocol, better support to reflect errors
* back to server logfile.
*
* 21-May-87 Chriss Stephens (chriss) at Carnegie Mellon University
* Merged divergent CS and EE versions.
*
* 19-Sep-86 Mike Accetta (mja) at Carnegie-Mellon University
* Added FILESUPTDEFAULT definition.
*
* 07-Jun-86 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Removed FILESRVBUSYWAIT. Now uses exponential backoff.
*
* 30-May-86 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Added numeric port numbers to use when port names are not in the
* host table.
*
* 04-Jan-86 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Update protocol version to 5 for name server protocol change to
* allow multiple repositories per collection. Added FILESRVBUSYWAIT
* of 5 minutes. Added FILELOCK file to indicate collections that
* should be exclusively locked when upgraded.
*
* 22-Sep-85 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Merged 4.1 and 4.2 versions together.
*
* 04-Jun-85 Steven Shafer (sas) at Carnegie-Mellon University
* Created for 4.2 BSD.
*
**********************************************************************
*/
/* PGMVERSION is defined separately in each program */
extern char scmversion[]; /* string version of scm */
#define PROTOVERSION 8 /* version of network protocol */
#define SCANVERSION 2 /* version of scan file format */
/* TCP servers for name server and file server */
#define FILEPORT "supfilesrv"
#define FILEPORTNUM 871
#define DEBUGFPORT "supfiledbg"
#define DEBUGFPORTNUM 1127
/* Data files used in scan.c */
#define FILELIST "sup/%s/%s"
#define FILESCAN "sup/%s/%s"
#define FILEHOST "sup/%s/%s"
#define FILELISTDEF "list"
#define FILESCANDEF "scan"
#define FILEHOSTDEF "host"
#define DEFRELEASE "default"
/* Data files used in sup.c */
#define FILEBASEDEFAULT "/usr/%s" /* also supfilesrv and supscan */
#ifdef EE_XXX
#define FILESUPDEFAULT "%s/supfiles/coll.list"
#define FILESUPTDEFAULT "%s/supfiles/coll.what"
#define FILEHOSTS "%s/supfiles/coll.host"
#else EE_XXX
#define FILESUPDEFAULT "%s/lib/supfiles/coll.list"
#define FILESUPTDEFAULT "%s/lib/supfiles/coll.what"
#define FILEHOSTS "%s/lib/supfiles/coll.host"
#endif EE_XXX
#define FILEBKDIR "%s/BACKUP"
#define FILEBACKUP "%s/BACKUP/%s"
#define FILELAST "sup/%s/last%s"
#define FILELASTTEMP "sup/%s/last.temp"
#define FILELOCK "sup/%s/lock" /* also supfilesrv */
#define FILEREFUSE "sup/%s/refuse"
#define FILEWHEN "sup/%s/when%s"
/* Data files used in supfilesrv.c */
#define FILEXPATCH "%s/sup/xpatch.host"
#ifdef EE_XXX
#define FILEDIRS "%s/supfiles/coll.dir" /* also supscan */
#else EE_XXX
#define FILEDIRS "%s/lib/supfiles/coll.dir" /* also supscan */
#endif EE_XXX
#define FILECRYPT "sup/%s/crypt"
#define FILELOGFILE "sup/%s/logfile"
#define FILEPREFIX "sup/%s/prefix" /* also supscan */
#define FILERELEASES "sup/%s/releases" /* also supscan */
/* String length */
#define STRINGLENGTH 2000
/* Password transmission encryption key */
#define PSWDCRYPT "SuperMan"
/* Test string for encryption */
#define CRYPTTEST "Hello there, Sailor Boy!"
/* Default directory for system sup information */
#ifndef DEFDIR
#ifdef EE_XXX
#define DEFDIR "/etc"
#else EE_XXX
#define DEFDIR "/usr"
#endif EE_XXX
#endif DEFDIR
/* Default login account for file server */
#ifndef DEFUSER
#define DEFUSER "anon"
#endif DEFUSER
/* subroutine return codes */
#define SCMOK (1) /* routine performed correctly */
#define SCMEOF (0) /* read EOF on network connection */
#define SCMERR (-1) /* error occurred during routine */
/* data structure for describing a file being upgraded */
struct treestruct {
/* fields for file information */
char *Tname; /* path component name */
int Tflags; /* flags of file */
int Tmode; /* st_mode of file */
char *Tuser; /* owner of file */
int Tuid; /* owner id of file */
char *Tgroup; /* group of file */
int Tgid; /* group id of file */
int Tctime; /* inode modification time */
int Tmtime; /* data modification time */
struct treestruct *Tlink; /* tree of link names */
struct treestruct *Texec; /* tree of execute commands */
/* fields for sibling AVL tree */
int Tbf; /* balance factor */
struct treestruct *Tlo,*Thi; /* ordered sibling tree */
};
typedef struct treestruct TREE;
/* data structure to represent a list of trees to upgrade */
struct tliststruct {
struct tliststruct *TLnext; /* next entry in tree list */
/* fields for tree information */
char *TLname; /* release name for tree */
char *TLprefix; /* prefix of tree */
char *TLlist; /* name of list file */
char *TLscan; /* name of scan file */
char *TLhost; /* name of host file */
TREE *TLtree; /* tree of files to upgrade */
};
typedef struct tliststruct TREELIST;
/* bitfield not defined in stat.h */
#define S_IMODE 07777 /* part of st_mode that chmod sets */
/* flag bits for files */
#define FNEW 01 /* ctime of file has changed */
#define FBACKUP 02 /* backup of file is allowed */
#define FNOACCT 04 /* don't set file information */
#define FUPDATE 010 /* only set file information */
#define FNEEDED 0100000 /* file needed for upgrade */
/* version 3 compatability */
#define FCOMPAT 0010000 /* Added to detect execute commands to send */
/* message types now obsolete */
#define MSGFEXECQ (115)
#define MSGFEXECNAMES (116)
/* flag bits for files in list of all files */
#define ALLNEW 01
#define ALLBACKUP 02
#define ALLEND 04
#define ALLDIR 010
#define ALLNOACCT 020
#define ALLSLINK 0100
/* flag bits for file mode word */
#define MODELINK 010000
#define MODEDIR 040000
#define MODESYM 0100000
#define MODENOACCT 0200000
#define MODEUPDATE 01000000
/* blocking factor for filenames in list of all file names */
#define BLOCKALL 32
/* end version 3 compatability */
#define MAXCHILDREN 3 /* maximum number of children allowed
to sup at the same time */
/* scm and stree external declarations */
char *remotehost();
TREE *Tinsert(),*Tsearch(),*Tlookup();
long getwhen();
int putwhen();