1 /*
2  * upap.h - User/Password Authentication Protocol definitions.
3  *
4  * Copyright (c) 2000 by Sun Microsystems, Inc.
5  * All rights reserved.
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation is hereby granted, provided that the above copyright
9  * notice appears in all copies.
10  *
11  * SUN MAKES NO REPRESENTATION OR WARRANTIES ABOUT THE SUITABILITY OF
12  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
13  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
14  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT.  SUN SHALL NOT BE LIABLE FOR
15  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
16  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES
17  *
18  * Copyright (c) 1989 Carnegie Mellon University.
19  * All rights reserved.
20  *
21  * Redistribution and use in source and binary forms are permitted
22  * provided that the above copyright notice and this paragraph are
23  * duplicated in all such forms and that any documentation,
24  * advertising materials, and other materials related to such
25  * distribution and use acknowledge that the software was developed
26  * by Carnegie Mellon University.  The name of the
27  * University may not be used to endorse or promote products derived
28  * from this software without specific prior written permission.
29  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
30  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
31  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
32  *
33  * $Id: upap.h,v 1.7 1999/11/15 01:51:54 paulus Exp $
34  */
35 
36 #ifndef __UPAP_H__
37 #define __UPAP_H__
38 
39 #ifdef	__cplusplus
40 extern "C" {
41 #endif
42 
43 /*
44  * Packet header = Code, id, length.
45  */
46 #define UPAP_HEADERLEN	4
47 
48 
49 /*
50  * UPAP codes.
51  */
52 #define UPAP_AUTHREQ	1	/* Authenticate-Request */
53 #define UPAP_AUTHACK	2	/* Authenticate-Ack */
54 #define UPAP_AUTHNAK	3	/* Authenticate-Nak */
55 
56 
57 /*
58  * Each interface is described by upap structure.
59  */
60 typedef struct upap_state {
61     int us_unit;		/* Interface unit number */
62     char *us_user;		/* User */
63     int us_userlen;		/* User length */
64     char *us_passwd;		/* Password */
65     int us_clientstate;		/* Client state */
66     int us_serverstate;		/* Server state */
67     u_char us_id;		/* Current id */
68     int us_timeouttime;		/* Timeout (seconds) for auth-req retrans. */
69     int us_transmits;		/* Number of auth-reqs sent */
70     int us_maxtransmits;	/* Maximum number of auth-reqs to send */
71     int us_receives;		/* Number of auth-reqs received */
72     int us_maxreceives;		/* Maximum number of auth-reqs allowed */
73     int us_reqtimeout;		/* Time to wait for auth-req from peer */
74     char *us_msg;		/* Authentication response message */
75     int us_msglen;		/*   and its length */
76 } upap_state;
77 
78 
79 /*
80  * Client states.
81  */
82 #define UPAPCS_INITIAL	0	/* Connection down */
83 #define UPAPCS_CLOSED	1	/* Connection up, haven't requested auth */
84 #define UPAPCS_PENDING	2	/* Connection down, have requested auth */
85 #define UPAPCS_AUTHREQ	3	/* We've sent an Authenticate-Request */
86 #define UPAPCS_OPEN	4	/* We've received an Ack */
87 #define UPAPCS_BADAUTH	5	/* We've received a Nak */
88 
89 #define	UPAPCS__NAMES	\
90 	"CliInitial", "CliClosed", "CliPending", "CliAuthReq", "CliOpen", \
91 	"CliBadAuth"
92 
93 /*
94  * Server states.
95  */
96 #define UPAPSS_INITIAL	0	/* Connection down */
97 #define UPAPSS_CLOSED	1	/* Connection up, haven't requested auth */
98 #define UPAPSS_PENDING	2	/* Connection down, have requested auth */
99 #define UPAPSS_LISTEN	3	/* Listening for an Authenticate */
100 #define UPAPSS_OPEN	4	/* We've sent an Ack */
101 #define UPAPSS_BADAUTH	5	/* We've sent a Nak */
102 
103 #define	UPAPSS__NAMES	\
104 	"SrvInitial", "SrvClosed", "SrvPending", "SrvListen", "SrvOpen", \
105 	"SrvBadAuth"
106 
107 /*
108  * Timeouts.
109  */
110 #define UPAP_DEFTIMEOUT	3	/* Timeout (seconds) for retransmitting req */
111 #define UPAP_DEFREQTIME	30	/* Time to wait for auth-req from peer */
112 
113 extern upap_state upap[];
114 
115 void upap_authwithpeer __P((int, char *, char *));
116 void upap_authpeer __P((int));
117 
118 extern struct protent pap_protent;
119 
120 #ifdef	__cplusplus
121 }
122 #endif
123 
124 #endif /* __UPAP_H__ */
125