|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 7246 (0x1c4e)
Types: TextFile
Names: »retcode.h«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/h/retcode.h«
/* retcode.h: reply & status codes used throughout pp */
/*
* @(#) $Header: /cs/research/pp/hubris/pp-beta/h/RCS/retcode.h,v 5.0 90/09/20 16:51:05 pp Exp Locker: pp $
*
* $Log: retcode.h,v $
* Revision 5.0 90/09/20 16:51:05 pp
* rcsforce : 5.0 public release
*
*
*/
#ifndef _H_RETCODE
#define _H_RETCODE
/*
------------------------------------------------------------------------------
Reply Codes for PP
Based on: "Revised FTP Reply Codes", by Jon Postel & Nancy Neigus Arpanet
RFC 640 / NIC 30843, in the "Arpanet Protocol Handbook", E. Feinler
and J. Postel (eds.), NIC 7104, Network Information Center, SRI
International: Menlo Park, CA. (NTIS AD-A0038901)
Basic format:
0yz: positive completion; entire action done
1yz: positive intermediate; only part done
2yz: Transient negative completion; may work later
3yz: Permanent negative completion; you lose forever
x0z: syntax
x1z: general; doesn't fit any other category
x2z: connections; truly transfer-related
x3z: user/authentication/account
x4x: mail
x5z: file system
3-bit z field is unique to the reply. In the following,
the RP_xVAL defines are available for masking to obtain a field.
------------------------------------------------------------------------------
*/
/*\f
++++++++++++++ Field Definitions & Basic Values +++++++++++++++++++++ */
/*
Field 1: Basic degree of success (2-bits)
*/
#define RP_BTYP 0200 /* good vs. bad; on => bad */
#define RP_BVAL 0300 /* basic degree of success */
#define RP_BOK 0000 /* went fine; all done */
#define RP_BPOK 0100 /* only the first part got done */
#define RP_BTNO 0200 /* temporary failure; try later */
#define RP_BNO 0300 /* not now, nor never; you lose */
/*
Field 2: Basic domain of discourse (3-bits)
*/
#define RP_CVAL 0070 /* basic category (domain) of reply */
#define RP_CSYN 0000 /* purely a matter of form */
#define RP_CGEN 0010 /* couldn't find place for it */
#define RP_CCON 0020 /* data-transfer-related issue */
#define RP_CUSR 0030 /* pertaining to the user */
#define RP_CMAI 0040 /* specific to mail semantics */
#define RP_CFIL 0050 /* file system */
#define RP_CLIO 0060 /* local i/o system */
/*
Field 3: Specific value for this reply (3-bits)
*/
#define RP_SVAL 0007 /* specific value of reply */
/*\f
++++++++++++++++++++ Specific Success Values ++++++++++++++++++++++++ */
/*
Complete Success
*/
#define RP_DONE (RP_BOK | RP_CGEN | 0000)
/* done (e.g., w/transaction) */
#define RP_OK (RP_BOK | RP_CGEN | 0001)
/* general-purpose OK */
#define RP_MOK (RP_BOK | RP_CMAI | 0000)
/* message is accepted (w/text) */
#define RP_DOK (RP_BOK | RP_CGEN | 0003)
/* accepted for the delayed submission channel */
/*
Partial Success
*/
#define RP_MAST (RP_BPOK| RP_CGEN | 0000)
/* you are the requestor */
#define RP_SLAV (RP_BPOK| RP_CGEN | 0001)
/* you are the requestee */
#define RP_AOK (RP_BPOK| RP_CMAI | 0000)
/* message address is accepted */
#define RP_HOK (RP_BPOK| RP_CMAI | 0001)
/* host processing completed */
/*\f
++++++++++++++++++++ Specific Failure Values ++++++++++++++++++++++++ */
/*
Partial Failure
*/
#define RP_AGN (RP_BTNO | RP_CGEN | 0000)
/* not now; maybe later */
#define RP_TIME (RP_BTNO | RP_CGEN | 0001)
/* timeout */
#define RP_NOOP (RP_BTNO | RP_CGEN | 0002)
/* no-op; nothing done, this time */
#define RP_EOF (RP_BTNO | RP_CGEN | 0003)
/* encountered an end of file */
#define RP_NET (RP_BTNO | RP_CCON | 0000)
/* channel went bad */
#define RP_BHST (RP_BTNO | RP_CCON | 0001)
/* foreign host screwed up */
#define RP_DHST (RP_BTNO | RP_CCON | 0002)
/* host went away */
#define RP_NIO (RP_BTNO | RP_CCON | 0004)
/* general net i/o problem */
#define RP_NS (RP_BTNO | RP_CCON | 0005)
/* temporary nameserver failure */
#define RP_FIO (RP_BTNO | RP_CFIL | 0000)
/* error reading/writing file */
#define RP_FCRT (RP_BTNO | RP_CFIL | 0001)
/* unable to create file */
#define RP_FOPN (RP_BTNO | RP_CFIL | 0002)
/* unable to open file */
#define RP_LIO (RP_BTNO | RP_CLIO | 0000)
/* general local i/o problem */
#define RP_LOCK (RP_BTNO | RP_CLIO | 0001)
/* resource currently locked */
/*
Complete Failure
*/
#define RP_MECH (RP_BNO | RP_CGEN | 0000)
/* bad mechanism/path; try alternate? */
#define RP_NO (RP_BNO | RP_CGEN | 0001)
/* general-purpose NO */
#define RP_BAD (RP_BNO | RP_CGEN | 0002)
/* another general purpose NO */
#define RP_PROT (RP_BNO | RP_CCON | 0000)
/* general prototocol error */
#define RP_RPLY (RP_BNO | RP_CCON | 0001)
/* bad reply code (PERMANENT ERROR) */
#define RP_NAUTH (RP_BNO | RP_CUSR | 0001)
/* bad authorisation */
/* SEK this will be used for user checks*/
#define RP_NDEL (RP_BNO | RP_CMAI | 0000)
/* couldn't deliver */
#define RP_HUH (RP_BNO | RP_CSYN | 0000)
/* couldn't parse the request */
#define RP_NCMD (RP_BNO | RP_CSYN | 0001)
/* no such command defined */
#define RP_PARM (RP_BNO | RP_CSYN | 0002)
/* bad parameter */
#define RP_UCMD (RP_BNO | RP_CSYN | 0003)
/* command not implemented */
#define RP_PARSE (RP_BNO| RP_CSYN | 0004)
/* address parse error */
#define RP_USER (RP_BNO | RP_CUSR | 0000)
/* unknown user */
/*
Structure of a Reply String
*/
struct rp_construct /* for constant reply conditions */
{
unsigned char rp_cval;
char rp_cline[50];
};
struct rp_bufstruct /* for reading reply strings */
{
unsigned char rp_val;
char rp_line[256];
};
typedef struct rp_bufstruct RP_Buf;
#define rp_conlen(bufnam) (strlen (bufnam.rp_cline) + sizeof (bufnam.rp_cval))
/*
Pseudo-functions to access reply info
*/
#define rp_gval(val) ((val) & 0377)
/* get the value of the return code */
/*
The next three give the field's bits, within the whole value
*/
#define rp_gbval(val) ((val) & RP_BVAL)
/* get the basic part of return value */
#define rp_gcval(val) ((val) & RP_CVAL)
/* get the domain part of value */
#define rp_gsval(val) ((val) & RP_SVAL)
/* get the specific part of value */
/*
The next three give the numeric value withing the field
*/
#define rp_gbbit(val) (((val) >> 6) & 03)
/* get the basic part right-shifted */
#define rp_gcbit(val) (((val) >> 3 ) & 07)
/* get the domain part right-shifted */
#define rp_gsbit(val) ((val) & 07)
/* get the specific part right-shifted */
#define rp_isgood(val) (! rp_isbad(val))
/* is return value positive? */
#define rp_isbad(val) ((val) & 0200)
/* is return value negative? */
extern char *rp_valstr ();
#endif