xref: /openbsd/usr.sbin/radiusd/radiusd.h (revision 3bef86f7)
1 /*	$OpenBSD: radiusd.h,v 1.6 2024/01/08 04:16:48 yasuoka Exp $	*/
2 
3 #ifndef	RADIUSD_H
4 #define	RADIUSD_H 1
5 /*
6  * Copyright (c) 2013 Internet Initiative Japan Inc.
7  *
8  * Permission to use, copy, modify, and distribute this software for any
9  * purpose with or without fee is hereby granted, provided that the above
10  * copyright notice and this permission notice appear in all copies.
11  *
12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19  */
20 #include <sys/types.h>
21 #include <stdint.h>
22 #include <stdbool.h>
23 
24 #define	RADIUSD_MODULE_NAME_LEN		32
25 #define	RADIUSD_SECRET_MAX		128
26 #define	RADIUSD_USER			"_radiusd"
27 
28 enum imsg_type {
29 	IMSG_NONE = 0,
30 	IMSG_OK,
31 	IMSG_NG,
32 	IMSG_RADIUSD_MODULE_LOAD,
33 	IMSG_RADIUSD_MODULE_SET_CONFIG,
34 	IMSG_RADIUSD_MODULE_START,
35 	IMSG_RADIUSD_MODULE_NOTIFY_SECRET,
36 	IMSG_RADIUSD_MODULE_USERPASS,
37 	IMSG_RADIUSD_MODULE_USERPASS_OK,
38 	IMSG_RADIUSD_MODULE_USERPASS_FAIL,
39 	IMSG_RADIUSD_MODULE_ACCSREQ,
40 	/* Check the response's authenticator if the module doesn't */
41 	IMSG_RADIUSD_MODULE_ACCSREQ_ANSWER,
42 	IMSG_RADIUSD_MODULE_ACCSREQ_ABORTED,
43 	IMSG_RADIUSD_MODULE_REQDECO,
44 	IMSG_RADIUSD_MODULE_REQDECO_DONE,
45 	IMSG_RADIUSD_MODULE_RESDECO0_REQ, /* request pkt for RESDECO */
46 	IMSG_RADIUSD_MODULE_RESDECO,
47 	IMSG_RADIUSD_MODULE_RESDECO_DONE,
48 	IMSG_RADIUSD_MODULE_STOP
49 };
50 
51 /* Module sends LOAD when it becomes ready */
52 struct radiusd_module_load_arg {
53 	uint32_t	cap;	/* module capabity bits */
54 #define RADIUSD_MODULE_CAP_USERPASS	0x1
55 #define RADIUSD_MODULE_CAP_ACCSREQ	0x2
56 #define RADIUSD_MODULE_CAP_REQDECO	0x4
57 #define RADIUSD_MODULE_CAP_RESDECO	0x8
58 };
59 
60 struct radiusd_module_object {
61 	size_t	size;
62 };
63 
64 struct radiusd_module_set_arg {
65 	char	paramname[32];
66 	u_int	nparamval;
67 };
68 
69 struct radiusd_module_userpass_arg {
70 	u_int	q_id;
71 	bool	has_pass;
72 	char	user[256];
73 	char	pass[256];
74 };
75 
76 struct radiusd_module_radpkt_arg {
77 	u_int	q_id;
78 	bool	final;
79 	int	pktlen;		/* total length of radpkt */
80 };
81 
82 #endif
83