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