1 1.5 riastrad /* $NetBSD: secmodel.h,v 1.5 2020/02/14 04:36:33 riastradh Exp $ */ 2 1.1 elad /*- 3 1.4 jym * Copyright (c) 2006, 2011 Elad Efrat <elad (at) NetBSD.org> 4 1.1 elad * All rights reserved. 5 1.1 elad * 6 1.1 elad * Redistribution and use in source and binary forms, with or without 7 1.1 elad * modification, are permitted provided that the following conditions 8 1.1 elad * are met: 9 1.1 elad * 1. Redistributions of source code must retain the above copyright 10 1.1 elad * notice, this list of conditions and the following disclaimer. 11 1.1 elad * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 elad * notice, this list of conditions and the following disclaimer in the 13 1.1 elad * documentation and/or other materials provided with the distribution. 14 1.2 elad * 3. The name of the author may not be used to endorse or promote products 15 1.1 elad * derived from this software without specific prior written permission. 16 1.1 elad * 17 1.1 elad * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 1.1 elad * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 1.1 elad * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 1.1 elad * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 1.1 elad * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 1.1 elad * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 1.1 elad * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 1.1 elad * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 1.1 elad * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 1.1 elad * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 1.1 elad */ 28 1.1 elad 29 1.1 elad #ifndef _SECMODEL_SECMODEL_H_ 30 1.1 elad #define _SECMODEL_SECMODEL_H_ 31 1.1 elad 32 1.5 riastrad #include <sys/queue.h> 33 1.5 riastrad 34 1.4 jym #include <prop/proplib.h> 35 1.1 elad 36 1.4 jym void secmodel_init(void); 37 1.4 jym 38 1.4 jym /* 39 1.4 jym * Functions used for inter-secmodel communication, allowing evaluation 40 1.4 jym * or setting information. 41 1.4 jym */ 42 1.4 jym typedef int (*secmodel_eval_t)(const char *, void *, void *); 43 1.4 jym typedef int (*secmodel_setinfo_t)(void *); /* XXX TODO */ 44 1.4 jym 45 1.4 jym /* 46 1.4 jym * Secmodel entry. 47 1.4 jym */ 48 1.4 jym struct secmodel_descr { 49 1.4 jym LIST_ENTRY(secmodel_descr) sm_list; 50 1.4 jym const char *sm_id; 51 1.4 jym const char *sm_name; 52 1.4 jym prop_dictionary_t sm_behavior; 53 1.4 jym secmodel_eval_t sm_eval; 54 1.4 jym secmodel_setinfo_t sm_setinfo; 55 1.4 jym }; 56 1.4 jym typedef struct secmodel_descr *secmodel_t; 57 1.4 jym 58 1.4 jym int secmodel_register(secmodel_t *, const char *, const char *, 59 1.4 jym prop_dictionary_t, secmodel_eval_t, secmodel_setinfo_t); 60 1.4 jym int secmodel_deregister(secmodel_t); 61 1.4 jym int secmodel_nsecmodels(void); 62 1.4 jym 63 1.4 jym int secmodel_eval(const char *, const char *, void *, void *); 64 1.4 jym int secmodel_setinfo(const char *, void *, int *); /* XXX TODO */ 65 1.1 elad #endif /* !_SECMODEL_SECMODEL_H_ */ 66