1/*
2 * session.c - PPP session control.
3 *
4 * Copyright (c) 2007 Diego Rivera. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 *
13 * 2. The name(s) of the authors of this software must not be used to
14 *    endorse or promote products derived from this software without
15 *    prior written permission.
16 *
17 * 3. Redistributions of any form whatsoever must retain the following
18 *    acknowledgment:
19 *    "This product includes software developed by Paul Mackerras
20 *     <paulus@samba.org>".
21 *
22 * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
23 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
24 * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
25 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
26 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
27 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
28 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
29 */
30
31#ifndef __SESSION_H
32#define __SESSION_H
33
34#define SESS_AUTH  1	/* Check User Authentication */
35#define SESS_ACCT  2	/* Check Account Validity */
36
37/* Convenience parameter to do the whole enchilada */
38#define SESS_ALL   (SESS_AUTH | SESS_ACCT)
39
40/*
41 * int session_start(...)
42 *
43 * Start a session, performing any necessary validations.
44 *
45 * Parameters:
46 * 	const int flags :
47 * 		Any combination of the SESS_XXX flags, to indicate what the function
48 *		should do as part of its checks
49 *
50 *	const char* user :
51 *		The username to validate.  May safely be null.
52 *
53 *	const char* passwd :
54 *		The password to validate the user with. May safely be null.
55 *
56 *	const char* tty :
57 *		The TTY the user is connected on. May safely be null.
58 *
59 *	char** msg :
60 *		A char* to return an error or success message.  This message will be returned
61 *		regardless of the result.  May safely be null.
62 *
63 * Return Value:
64 * 	Zero value for failure, non-zero value for successful session verification.
65 */
66int
67session_start(const int flags, const char* user, const char* passwd, const char* tty, char** msg);
68
69/* Added these macros for convenience... */
70#define session_auth(user, pass, tty, msg) \
71	session_start(SESS_AUTH, user, pass, tty, msg)
72
73#define session_check(user, pass, tty, msg) \
74	session_start(SESS_ACCT, user, pass, tty, msg)
75
76#define session_full(user, pass, tty, msg) \
77	session_start(SESS_ALL, user, pass, tty, msg)
78
79/*
80 * void session_end(...)
81 *
82 * End a previously-started session.
83 *
84 * Parameters:
85 *	const char* tty :
86 *		The TTY the user is connected on. May safely be null.
87 */
88void
89session_end(const char* tty);
90
91#endif
92