1 /* 2 * ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd) 3 * 4 * Copyright (c) 2000-2021 ircd-hybrid development team 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 19 * USA 20 */ 21 22 /*! \file modules.h 23 * \brief A header for the modules functions. 24 * \version $Id: modules.h 9858 2021-01-01 04:43:42Z michael $ 25 */ 26 27 #ifndef INCLUDED_modules_h 28 #define INCLUDED_modules_h 29 30 struct module 31 { 32 dlink_node node; 33 char *name; 34 const char *version; 35 void *handle; 36 void (*modinit)(void); 37 void (*modexit)(void); 38 bool is_resident; 39 bool is_core; 40 }; 41 42 struct module_path 43 { 44 dlink_node node; 45 char *path; 46 }; 47 48 extern dlink_list *modules_get_list(void); 49 /* add a path */ 50 extern void mod_add_path(const char *); 51 extern void modules_conf_clear(void); 52 53 /* load all modules */ 54 extern void load_all_modules(bool); 55 56 /* load core modules */ 57 extern void load_core_modules(bool); 58 59 /* Add this module to list of modules to be loaded from conf */ 60 extern void add_conf_module(const char *); 61 /* load all modules listed in conf */ 62 extern void load_conf_modules(void); 63 extern void modules_init(void); 64 65 extern bool unload_one_module(const char *, bool); 66 extern bool modules_valid_suffix(const char *); 67 extern bool load_one_module(const char *); 68 extern bool load_a_module(const char *, bool); 69 extern struct module *findmodule_byname(const char *); 70 #endif /* INCLUDED_modules_h */ 71