xref: /openbsd/usr.sbin/radiusd/radiusd.h (revision ed1dc925)
1 /*	$OpenBSD: radiusd.h,v 1.9 2024/07/14 15:27:57 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_SOCK			"/var/run/radiusd.sock"
27 #define	RADIUSD_USER			"_radiusd"
28 
29 enum imsg_type {
30 	IMSG_NONE = 0,
31 	IMSG_OK,
32 	IMSG_NG,
33 	IMSG_RADIUSD_MODULE_LOAD,
34 	IMSG_RADIUSD_MODULE_SET_CONFIG,
35 	IMSG_RADIUSD_MODULE_START,
36 	IMSG_RADIUSD_MODULE_NOTIFY_SECRET,
37 	IMSG_RADIUSD_MODULE_USERPASS,
38 	IMSG_RADIUSD_MODULE_USERPASS_OK,
39 	IMSG_RADIUSD_MODULE_USERPASS_FAIL,
40 	IMSG_RADIUSD_MODULE_ACCSREQ,
41 	/* Check the response's authenticator if the module doesn't */
42 	IMSG_RADIUSD_MODULE_ACCSREQ_ANSWER,
43 	IMSG_RADIUSD_MODULE_ACCSREQ_ABORTED,
44 	IMSG_RADIUSD_MODULE_ACCSREQ_NEXT, /* fall through to the next auth */
45 	IMSG_RADIUSD_MODULE_NEXTRES,	  /* receive the respo from tht next */
46 	IMSG_RADIUSD_MODULE_REQDECO,
47 	IMSG_RADIUSD_MODULE_REQDECO_DONE,
48 	IMSG_RADIUSD_MODULE_RESDECO0_REQ, /* request pkt for RESDECO */
49 	IMSG_RADIUSD_MODULE_RESDECO,
50 	IMSG_RADIUSD_MODULE_RESDECO_DONE,
51 	IMSG_RADIUSD_MODULE_ACCTREQ,
52 	IMSG_RADIUSD_MODULE_CTRL_BIND,		/* request by module */
53 	IMSG_RADIUSD_MODULE_CTRL_UNBIND,	/* notice by control */
54 	IMSG_RADIUSD_MODULE_STOP,
55 	IMSG_RADIUSD_MODULE_MIN = 10000
56 };
57 
58 /* Module sends LOAD when it becomes ready */
59 struct radiusd_module_load_arg {
60 	uint32_t	cap;	/* module capability bits */
61 #define RADIUSD_MODULE_CAP_USERPASS	0x01
62 #define RADIUSD_MODULE_CAP_ACCSREQ	0x02
63 #define RADIUSD_MODULE_CAP_REQDECO	0x04
64 #define RADIUSD_MODULE_CAP_RESDECO	0x08
65 #define RADIUSD_MODULE_CAP_ACCTREQ	0x10
66 #define RADIUSD_MODULE_CAP_CONTROL	0x20
67 #define RADIUSD_MODULE_CAP_NEXTRES	0x40
68 };
69 
70 struct radiusd_module_object {
71 	size_t	size;
72 };
73 
74 struct radiusd_module_set_arg {
75 	char	paramname[32];
76 	u_int	nparamval;
77 };
78 
79 struct radiusd_module_userpass_arg {
80 	u_int	q_id;
81 	bool	has_pass;
82 	char	user[256];
83 	char	pass[256];
84 };
85 
86 struct radiusd_module_radpkt_arg {
87 	u_int	q_id;
88 	bool	final;
89 	int	pktlen;		/* total length of radpkt */
90 };
91 
92 #endif
93