/* * 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= 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();