summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sup/lib/supmsg.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/sup/lib/supmsg.c')
-rw-r--r--usr.sbin/sup/lib/supmsg.c640
1 files changed, 0 insertions, 640 deletions
diff --git a/usr.sbin/sup/lib/supmsg.c b/usr.sbin/sup/lib/supmsg.c
deleted file mode 100644
index b12c945..0000000
--- a/usr.sbin/sup/lib/supmsg.c
+++ /dev/null
@@ -1,640 +0,0 @@
-/*
- * 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.
- */
-/*
- **********************************************************************
- * HISTORY
- *
- * 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: supmsg.c,v $
- * Revision 1.1.1.1 1995/12/26 04:54:47 peter
- * Import the unmodified version of the sup that we are using.
- * The heritage of this version is not clear. It appears to be NetBSD
- * derived from some time ago.
- *
- * Revision 1.1.1.1 1993/08/21 00:46:35 jkh
- * Current sup with compression support.
- *
- * Revision 1.1.1.1 1993/05/21 14:52:19 cgd
- * initial import of CMU's SUP to NetBSD
- *
- * Revision 2.4 92/09/09 22:05:17 mrt
- * Moved PFI definition under __STDC__ conditional since it
- * is already defined in libc.h in this case.
- * [92/09/01 mrt]
- *
- * Revision 2.3 92/08/11 12:08:12 mrt
- * Added copyright
- * [92/08/10 mrt]
- * Brad's changes: Delinted, Incorporated updated variable
- * argument list usage from old msgxfer.c
- * [92/07/24 mrt]
- *
- * Revision 2.2 89/08/23 15:02:56 gm0w
- * Created from separate message modules.
- * [89/08/14 gm0w]
- *
- **********************************************************************
- */
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#if __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <libc.h>
-#include <c.h>
-#include "sup.h"
-#define MSGSUBR
-#define MSGFILE
-#include "supmsg.h"
-
-/*
- * signon message
- */
-extern int pgmver; /* program version of partner */
-extern int pgmversion; /* my program version */
-extern char *scmver; /* scm version of partner */
-extern int fspid; /* process id of fileserver */
-
-int msgsignon ()
-{
- register int x;
-
- if (server) {
- x = readmsg (MSGSIGNON);
- if (x == SCMOK) x = readint (&protver);
- if (x == SCMOK) x = readint (&pgmver);
- if (x == SCMOK) x = readstring (&scmver);
- if (x == SCMOK) x = readmend ();
- } else {
- x = writemsg (MSGSIGNON);
- if (x == SCMOK) x = writeint (PROTOVERSION);
- if (x == SCMOK) x = writeint (pgmversion);
- if (x == SCMOK) x = writestring (scmversion);
- if (x == SCMOK) x = writemend ();
- }
- return (x);
-}
-
-int msgsignonack ()
-{
- register int x;
-
- if (server) {
- x = writemsg (MSGSIGNONACK);
- if (x == SCMOK) x = writeint (PROTOVERSION);
- if (x == SCMOK) x = writeint (pgmversion);
- if (x == SCMOK) x = writestring (scmversion);
- if (x == SCMOK) x = writeint (fspid);
- if (x == SCMOK) x = writemend ();
- } else {
- x = readmsg (MSGSIGNONACK);
- if (x == SCMOK) x = readint (&protver);
- if (x == SCMOK) x = readint (&pgmver);
- if (x == SCMOK) x = readstring (&scmver);
- if (x == SCMOK) x = readint (&fspid);
- if (x == SCMOK) x = readmend ();
- }
- return (x);
-}
-
-/*
- * setup message
- */
-extern int xpatch; /* setup crosspatch to a new client */
-extern char *xuser; /* user,group,acct for crosspatch */
-extern char *collname; /* base directory */
-extern char *basedir; /* base directory */
-extern int basedev; /* base directory device */
-extern int baseino; /* base directory inode */
-extern long lasttime; /* time of last upgrade */
-extern int listonly; /* only listing files, no data xfer */
-extern int newonly; /* only send new files */
-extern char *release; /* release name */
-extern int setupack; /* ack return value for setup */
-
-int msgsetup ()
-{
- register int x;
-
- if (server) {
- x = readmsg (MSGSETUP);
- if (x != SCMOK) return (x);
- if (protver >= 7) {
- x = readint (&xpatch);
- if (x != SCMOK) return (x);
- } else
- xpatch = FALSE;
- if (xpatch) {
- x = readstring (&xuser);
- if (x != SCMOK) return (x);
- return (readmend ());
- }
- x = readstring (&collname);
- if (x == SCMOK) x = readint ((int *)&lasttime);
- if (x == SCMOK) x = readstring (&basedir);
- if (x == SCMOK) x = readint (&basedev);
- if (x == SCMOK) x = readint (&baseino);
- if (x == SCMOK) x = readint (&listonly);
- if (x == SCMOK) x = readint (&newonly);
- if (x == SCMOK)
- if (protver < 6)
- release = (char *)NULL;
- else
- x = readstring (&release);
- if (x == SCMOK) x = readmend ();
- } else {
- x = writemsg (MSGSETUP);
- if (x != SCMOK) return (x);
- if (protver >= 7) {
- x = writeint (xpatch);
- if (x != SCMOK) return (x);
- }
- if (xpatch) {
- x = writestring (xuser);
- if (x != SCMOK) return (x);
- return (writemend ());
- }
- if (x == SCMOK) x = writestring (collname);
- if (x == SCMOK) x = writeint ((int)lasttime);
- if (x == SCMOK) x = writestring (basedir);
- if (x == SCMOK) x = writeint (basedev);
- if (x == SCMOK) x = writeint (baseino);
- if (x == SCMOK) x = writeint (listonly);
- if (x == SCMOK) x = writeint (newonly);
- if (x == SCMOK && protver >= 6) x = writestring (release);
- if (x == SCMOK) x = writemend ();
- }
- return (x);
-}
-
-int msgsetupack ()
-{
- if (server)
- return (writemint (MSGSETUPACK,setupack));
- return (readmint (MSGSETUPACK,&setupack));
-}
-
-/*
- * crypt test message
- */
-extern char *crypttest; /* encryption test string */
-
-int msgcrypt ()
-{
- if (server)
- return (readmstr (MSGCRYPT,&crypttest));
- return (writemstr (MSGCRYPT,crypttest));
-}
-
-int msgcryptok ()
-{
- if (server)
- return (writemnull (MSGCRYPTOK));
- return (readmnull (MSGCRYPTOK));
-}
-
-/*
- * login message
- */
-extern char *logcrypt; /* login encryption test */
-extern char *loguser; /* login username */
-extern char *logpswd; /* password for login */
-extern int logack; /* login ack status */
-extern char *logerror; /* error from login */
-
-int msglogin ()
-{
- register int x;
- if (server) {
- x = readmsg (MSGLOGIN);
- if (x == SCMOK) x = readstring (&logcrypt);
- if (x == SCMOK) x = readstring (&loguser);
- if (x == SCMOK) x = readstring (&logpswd);
- if (x == SCMOK) x = readmend ();
- } else {
- x = writemsg (MSGLOGIN);
- if (x == SCMOK) x = writestring (logcrypt);
- if (x == SCMOK) x = writestring (loguser);
- if (x == SCMOK) x = writestring (logpswd);
- if (x == SCMOK) x = writemend ();
- }
- return (x);
-}
-
-int msglogack ()
-{
- register int x;
- if (server) {
- x = writemsg (MSGLOGACK);
- if (x == SCMOK) x = writeint (logack);
- if (x == SCMOK) x = writestring (logerror);
- if (x == SCMOK) x = writemend ();
- } else {
- x = readmsg (MSGLOGACK);
- if (x == SCMOK) x = readint (&logack);
- if (x == SCMOK) x = readstring (&logerror);
- if (x == SCMOK) x = readmend ();
- }
- return (x);
-}
-
-/*
- * refuse list message
- */
-extern TREE *refuseT; /* tree of files to refuse */
-
-static int refuseone (t)
-register TREE *t;
-{
- return (writestring (t->Tname));
-}
-
-int msgrefuse ()
-{
- register int x;
- if (server) {
- char *name;
- x = readmsg (MSGREFUSE);
- if (x == SCMOK) x = readstring (&name);
- while (x == SCMOK) {
- if (name == NULL) break;
- (void) Tinsert (&refuseT,name,FALSE);
- free (name);
- x = readstring (&name);
- }
- if (x == SCMOK) x = readmend ();
- } else {
- x = writemsg (MSGREFUSE);
- if (x == SCMOK) x = Tprocess (refuseT,refuseone);
- if (x == SCMOK) x = writestring ((char *)NULL);
- if (x == SCMOK) x = writemend ();
- }
- return (x);
-}
-
-/*
- * list files message
- */
-extern TREE *listT; /* tree of files to list */
-extern TREE *renameT; /* tree of rename target files */
-extern long scantime; /* time that collection was scanned */
-
-static int listone (t)
-register TREE *t;
-{
- register int x;
-
- x = writestring (t->Tname);
- if ( protver > 8 )
- if (x == SCMOK) x = writestring (t->Tnewname);
- if (x == SCMOK) x = writeint ((int)t->Tmode);
- if (x == SCMOK) x = writeint ((int)t->Tflags);
- if (x == SCMOK) x = writeint (t->Tmtime);
- return (x);
-}
-
-int msglist ()
-{
- register int x;
- if (server) {
- x = writemsg (MSGLIST);
- if (x == SCMOK) x = Tprocess (listT,listone);
- if (x == SCMOK) x = writestring ((char *)NULL);
- if (x == SCMOK) x = writeint ((int)scantime);
- if (x == SCMOK) x = writemend ();
- } else {
- char *name, *newname = NULL;
- int mode,flags,mtime;
- register TREE *t;
- x = readmsg (MSGLIST);
- if (x == SCMOK) x = readstring (&name);
- while (x == SCMOK) {
- if (name == NULL) break;
- if (protver > 8){
- x = readstring (&newname);
- if (x == SCMOK) x = readint (&mode);
- }
- else
- x = readint (&mode);
- if (x == SCMOK) x = readint (&flags);
- if (x == SCMOK) x = readint (&mtime);
- if (x != SCMOK) break;
- t = Tinsert (&listT,name,TRUE);
- free (name);
- t->Tnewname = newname;
- t->Tmode = mode;
- t->Tflags = flags;
- t->Tmtime = mtime;
- x = readstring (&name);
- }
- if (x == SCMOK) x = readint ((int *)&scantime);
- if (x == SCMOK) x = readmend ();
- }
- return (x);
-}
-
-/*
- * files needed message
- */
-extern TREE *needT; /* tree of files to need */
-
-static int needone (t)
-register TREE *t;
-{
- register int x;
- x = writestring (t->Tname);
- if (x == SCMOK) x = writeint ((t->Tflags&FUPDATE) != 0);
- return (x);
-}
-
-int msgneed ()
-{
- register int x;
- if (server) {
- char *name;
- int update;
- register TREE *t;
- x = readmsg (MSGNEED);
- if (x == SCMOK) x = readstring (&name);
- while (x == SCMOK) {
- if (name == NULL) break;
- x = readint (&update);
- if (x != SCMOK) break;
- t = Tinsert (&needT,name,TRUE);
- free (name);
- if (update) t->Tflags |= FUPDATE;
- x = readstring (&name);
- }
- if (x == SCMOK) x = readmend ();
- } else {
- x = writemsg (MSGNEED);
- if (x == SCMOK) x = Tprocess (needT,needone);
- if (x == SCMOK) x = writestring ((char *)NULL);
- if (x == SCMOK) x = writemend ();
- }
- return (x);
-}
-
-/*
- * files denied message
- */
-extern TREE *denyT; /* tree of files to deny */
-
-static int denyone (t)
-register TREE *t;
-{
- return (writestring (t->Tname));
-}
-
-int msgdeny ()
-{
- register int x;
- if (server) {
- x = writemsg (MSGDENY);
- if (x == SCMOK) x = Tprocess (denyT,denyone);
- if (x == SCMOK) x = writestring ((char *)NULL);
- if (x == SCMOK) x = writemend ();
- } else {
- char *name;
- x = readmsg (MSGDENY);
- if (x == SCMOK) x = readstring (&name);
- while (x == SCMOK) {
- if (name == NULL) break;
- (void) Tinsert (&denyT,name,FALSE);
- free (name);
- x = readstring (&name);
- }
- if (x == SCMOK) x = readmend ();
- }
- return (x);
-}
-
-/*
- * send file message
- */
-int msgsend ()
-{
- if (server)
- return (readmnull (MSGSEND));
- return (writemnull (MSGSEND));
-}
-
-/*
- * receive file message
- */
-extern TREE *upgradeT; /* pointer to file being upgraded */
-
-static int writeone (t)
-register TREE *t;
-{
- return (writestring (t->Tname));
-}
-
-
-#if __STDC__
-int msgrecv (PFI xferfile,...)
-#else
-/*VARARGS*//*ARGSUSED*/
-int msgrecv (va_alist)
-va_dcl
-#endif
-{
-#if !__STDC__
- typedef int (*PFI)();
- PFI xferfile;
-#endif
- va_list args;
- register int x;
- register TREE *t = upgradeT;
-#if __STDC__
- va_start(args,xferfile);
-#else
- va_start(args);
- xferfile = va_arg(args, PFI);
-#endif
- if (server) {
- x = writemsg (MSGRECV);
- if (t == NULL) {
- if (x == SCMOK) x = writestring ((char *)NULL);
- if (x == SCMOK) x = writemend ();
- return (x);
- }
- if (x == SCMOK) x = writestring (t->Tname);
- if (protver > 8)
- if (x == SCMOK) x = writestring (t->Tnewname);
- if (x == SCMOK) x = writeint (t->Tmode);
- if (t->Tmode == 0) {
- if (x == SCMOK) x = writemend ();
- return (x);
- }
- if (x == SCMOK) x = writeint (t->Tflags);
- if (x == SCMOK) x = writestring (t->Tuser);
- if (x == SCMOK) x = writestring (t->Tgroup);
- if (x == SCMOK) x = writeint (t->Tmtime);
- if (x == SCMOK) x = Tprocess (t->Tlink,writeone);
- if (x == SCMOK) x = writestring ((char *)NULL);
- if (x == SCMOK) x = Tprocess (t->Texec,writeone);
- if (x == SCMOK) x = writestring ((char *)NULL);
- if (x == SCMOK) x = (*xferfile) (t,args);
- if (x == SCMOK) x = writemend ();
- } else {
- char *linkname,*execcmd;
- if (t == NULL) return (SCMERR);
- x = readmsg (MSGRECV);
- if (x == SCMOK) x = readstring (&t->Tname);
- if (x == SCMOK && t->Tname == NULL) {
- x = readmend ();
- if (x == SCMOK) x = (*xferfile) (NULL,args);
- return (x);
- }
- if (protver > 8)
- if (x == SCMOK) x = readstring (&t->Tnewname);
- if (x == SCMOK) x = readint (&t->Tmode);
- if (t->Tmode == 0) {
- x = readmend ();
- if (x == SCMOK) x = (*xferfile) (t,args);
- return (x);
- }
- if (x == SCMOK) x = readint (&t->Tflags);
- if (x == SCMOK) x = readstring (&t->Tuser);
- if (x == SCMOK) x = readstring (&t->Tgroup);
- if (x == SCMOK) x = readint (&t->Tmtime);
- t->Tlink = NULL;
- if (x == SCMOK) x = readstring (&linkname);
- while (x == SCMOK) {
- if (linkname == NULL) break;
- (void) Tinsert (&t->Tlink,linkname,FALSE);
- free (linkname);
- x = readstring (&linkname);
- }
- t->Texec = NULL;
- if (x == SCMOK) x = readstring (&execcmd);
- while (x == SCMOK) {
- if (execcmd == NULL) break;
- (void) Tinsert (&t->Texec,execcmd,FALSE);
- free (execcmd);
- x = readstring (&execcmd);
- }
- if (x == SCMOK) x = (*xferfile) (t,args);
- if (x == SCMOK) x = readmend ();
- }
- va_end(args);
- return (x);
-}
-
-/*
- * protocol done message
- */
-extern int doneack;
-extern char *donereason;
-
-int msgdone ()
-{
- register int x;
-
- if (protver < 6) {
- printf ("Error, msgdone should not have been called.");
- return (SCMERR);
- }
- if (server) {
- x = readmsg (MSGDONE);
- if (x == SCMOK) x = readint (&doneack);
- if (x == SCMOK) x = readstring (&donereason);
- if (x == SCMOK) x = readmend ();
- } else {
- x = writemsg (MSGDONE);
- if (x == SCMOK) x = writeint (doneack);
- if (x == SCMOK) x = writestring (donereason);
- if (x == SCMOK) x = writemend ();
- }
- return (x);
-}
-
-/*
- * go away message
- */
-extern char *goawayreason; /* reason for goaway */
-
-int msggoaway ()
-{
- return (writemstr (MSGGOAWAY,goawayreason));
-}
-
-/*
- * cross-patch protocol message
- */
-extern int xargc; /* arg count for crosspatch */
-extern char **xargv; /* arg array for crosspatch */
-
-int msgxpatch ()
-{
- register int x;
- register int i;
-
- if (server) {
- x = readmsg (MSGXPATCH);
- if (x != SCMOK) return (x);
- x = readint (&xargc);
- if (x != SCMOK) return (x);
- xargc += 2;
- xargv = (char **)calloc (sizeof (char *),(unsigned)xargc+1);
- if (xargv == NULL)
- return (SCMERR);
- for (i = 2; i < xargc; i++) {
- x = readstring (&xargv[i]);
- if (x != SCMOK) return (x);
- }
- x = readmend ();
- } else {
- x = writemsg (MSGXPATCH);
- if (x != SCMOK) return (x);
- x = writeint (xargc);
- if (x != SCMOK) return (x);
- for (i = 0; i < xargc; i++) {
- x = writestring (xargv[i]);
- if (x != SCMOK) return (x);
- }
- x = writemend ();
- }
- return (x);
-}
-
-/*
- * Compression check protocol message
- */
-extern int docompress; /* Compress file before sending? */
-
-int msgcompress ()
-{
- if (server)
- return (readmint (MSGCOMPRESS,&docompress));
- return (writemint (MSGCOMPRESS, docompress));
-}
OpenPOWER on IntegriCloud