xref: /openbsd-src/usr.sbin/radiusd/radiusd_ipcp.h (revision cfa11a856bfd857ec9c04b8a9d83f77619610e49)
1 /*	$OpenBSD: radiusd_ipcp.h,v 1.3 2024/09/15 05:29:11 yasuoka Exp $	*/
2 
3 /*
4  * Copyright (c) 2024 Internet Initiative Japan Inc.
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef RADIUSD_IPCP_H
20 #define RADIUSD_IPCP_H 1
21 
22 #include <netinet/in.h>
23 #include <stdint.h>
24 
25 #include "radiusd.h"
26 
27 #define	RADIUSD_IPCP_DAE_MAX_INFLIGHT	64
28 
29 enum imsg_module_ipcp_type {
30 	IMSG_RADIUSD_MODULE_IPCP_DUMP = IMSG_RADIUSD_MODULE_MIN,
31 	IMSG_RADIUSD_MODULE_IPCP_MONITOR,
32 	IMSG_RADIUSD_MODULE_IPCP_DUMP_AND_MONITOR,
33 	IMSG_RADIUSD_MODULE_IPCP_START,
34 	IMSG_RADIUSD_MODULE_IPCP_STOP,
35 	IMSG_RADIUSD_MODULE_IPCP_DELETE,
36 	IMSG_RADIUSD_MODULE_IPCP_DISCONNECT
37 };
38 
39 #define _PATH_RADIUSD_IPCP_DB	"/var/run/radiusd_ipcp.db"
40 
41 struct radiusd_ipcp_db_record {
42 	unsigned			seq;
43 	char				session_id[256];
44 	char				auth_method[16];
45 	char				username[256];
46 	struct timespec			start;	/* Start time in boottime */
47 	struct timespec			timeout;/* Timeout time in boottime */
48 	struct in_addr			nas_ipv4;
49 	struct in6_addr			nas_ipv6;
50 	char				nas_id[256];
51 	char				tun_type[8];
52 	union {
53 		struct sockaddr_in	sin4;
54 		struct sockaddr_in6	sin6;
55 	}				tun_client;
56 };
57 
58 struct radiusd_ipcp_db_dump {
59 	int				 islast;
60 	struct {
61 		int			 af;
62 		union {
63 			struct in_addr	 ipv4;
64 			struct in6_addr	 ipv6;
65 		}			 addr;
66 		struct radiusd_ipcp_db_record
67 					 rec;
68 	}				 records[0];
69 };
70 
71 struct radiusd_ipcp_statistics {
72 	uint32_t			 ipackets;
73 	uint32_t			 opackets;
74 	uint64_t			 ibytes;
75 	uint64_t			 obytes;
76 	char				 cause[80];
77 };
78 #endif
79