1*fb5c4ebcSDaniel P. Berrangé /* 2*fb5c4ebcSDaniel P. Berrangé * QEMU simple authorization driver 3*fb5c4ebcSDaniel P. Berrangé * 4*fb5c4ebcSDaniel P. Berrangé * Copyright (c) 2018 Red Hat, Inc. 5*fb5c4ebcSDaniel P. Berrangé * 6*fb5c4ebcSDaniel P. Berrangé * This library is free software; you can redistribute it and/or 7*fb5c4ebcSDaniel P. Berrangé * modify it under the terms of the GNU Lesser General Public 8*fb5c4ebcSDaniel P. Berrangé * License as published by the Free Software Foundation; either 9*fb5c4ebcSDaniel P. Berrangé * version 2 of the License, or (at your option) any later version. 10*fb5c4ebcSDaniel P. Berrangé * 11*fb5c4ebcSDaniel P. Berrangé * This library is distributed in the hope that it will be useful, 12*fb5c4ebcSDaniel P. Berrangé * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*fb5c4ebcSDaniel P. Berrangé * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*fb5c4ebcSDaniel P. Berrangé * Lesser General Public License for more details. 15*fb5c4ebcSDaniel P. Berrangé * 16*fb5c4ebcSDaniel P. Berrangé * You should have received a copy of the GNU Lesser General Public 17*fb5c4ebcSDaniel P. Berrangé * License along with this library; if not, see <http://www.gnu.org/licenses/>. 18*fb5c4ebcSDaniel P. Berrangé * 19*fb5c4ebcSDaniel P. Berrangé */ 20*fb5c4ebcSDaniel P. Berrangé 21*fb5c4ebcSDaniel P. Berrangé #ifndef QAUTHZ_SIMPLE_H__ 22*fb5c4ebcSDaniel P. Berrangé #define QAUTHZ_SIMPLE_H__ 23*fb5c4ebcSDaniel P. Berrangé 24*fb5c4ebcSDaniel P. Berrangé #include "authz/base.h" 25*fb5c4ebcSDaniel P. Berrangé 26*fb5c4ebcSDaniel P. Berrangé #define TYPE_QAUTHZ_SIMPLE "authz-simple" 27*fb5c4ebcSDaniel P. Berrangé 28*fb5c4ebcSDaniel P. Berrangé #define QAUTHZ_SIMPLE_CLASS(klass) \ 29*fb5c4ebcSDaniel P. Berrangé OBJECT_CLASS_CHECK(QAuthZSimpleClass, (klass), \ 30*fb5c4ebcSDaniel P. Berrangé TYPE_QAUTHZ_SIMPLE) 31*fb5c4ebcSDaniel P. Berrangé #define QAUTHZ_SIMPLE_GET_CLASS(obj) \ 32*fb5c4ebcSDaniel P. Berrangé OBJECT_GET_CLASS(QAuthZSimpleClass, (obj), \ 33*fb5c4ebcSDaniel P. Berrangé TYPE_QAUTHZ_SIMPLE) 34*fb5c4ebcSDaniel P. Berrangé #define QAUTHZ_SIMPLE(obj) \ 35*fb5c4ebcSDaniel P. Berrangé INTERFACE_CHECK(QAuthZSimple, (obj), \ 36*fb5c4ebcSDaniel P. Berrangé TYPE_QAUTHZ_SIMPLE) 37*fb5c4ebcSDaniel P. Berrangé 38*fb5c4ebcSDaniel P. Berrangé typedef struct QAuthZSimple QAuthZSimple; 39*fb5c4ebcSDaniel P. Berrangé typedef struct QAuthZSimpleClass QAuthZSimpleClass; 40*fb5c4ebcSDaniel P. Berrangé 41*fb5c4ebcSDaniel P. Berrangé 42*fb5c4ebcSDaniel P. Berrangé /** 43*fb5c4ebcSDaniel P. Berrangé * QAuthZSimple: 44*fb5c4ebcSDaniel P. Berrangé * 45*fb5c4ebcSDaniel P. Berrangé * This authorization driver provides a simple mechanism 46*fb5c4ebcSDaniel P. Berrangé * for granting access based on an exact matched username. 47*fb5c4ebcSDaniel P. Berrangé * 48*fb5c4ebcSDaniel P. Berrangé * To create an instance of this class via QMP: 49*fb5c4ebcSDaniel P. Berrangé * 50*fb5c4ebcSDaniel P. Berrangé * { 51*fb5c4ebcSDaniel P. Berrangé * "execute": "object-add", 52*fb5c4ebcSDaniel P. Berrangé * "arguments": { 53*fb5c4ebcSDaniel P. Berrangé * "qom-type": "authz-simple", 54*fb5c4ebcSDaniel P. Berrangé * "id": "authz0", 55*fb5c4ebcSDaniel P. Berrangé * "props": { 56*fb5c4ebcSDaniel P. Berrangé * "identity": "fred" 57*fb5c4ebcSDaniel P. Berrangé * } 58*fb5c4ebcSDaniel P. Berrangé * } 59*fb5c4ebcSDaniel P. Berrangé * } 60*fb5c4ebcSDaniel P. Berrangé * 61*fb5c4ebcSDaniel P. Berrangé * Or via the command line 62*fb5c4ebcSDaniel P. Berrangé * 63*fb5c4ebcSDaniel P. Berrangé * -object authz-simple,id=authz0,identity=fred 64*fb5c4ebcSDaniel P. Berrangé * 65*fb5c4ebcSDaniel P. Berrangé */ 66*fb5c4ebcSDaniel P. Berrangé struct QAuthZSimple { 67*fb5c4ebcSDaniel P. Berrangé QAuthZ parent_obj; 68*fb5c4ebcSDaniel P. Berrangé 69*fb5c4ebcSDaniel P. Berrangé char *identity; 70*fb5c4ebcSDaniel P. Berrangé }; 71*fb5c4ebcSDaniel P. Berrangé 72*fb5c4ebcSDaniel P. Berrangé 73*fb5c4ebcSDaniel P. Berrangé struct QAuthZSimpleClass { 74*fb5c4ebcSDaniel P. Berrangé QAuthZClass parent_class; 75*fb5c4ebcSDaniel P. Berrangé }; 76*fb5c4ebcSDaniel P. Berrangé 77*fb5c4ebcSDaniel P. Berrangé 78*fb5c4ebcSDaniel P. Berrangé QAuthZSimple *qauthz_simple_new(const char *id, 79*fb5c4ebcSDaniel P. Berrangé const char *identity, 80*fb5c4ebcSDaniel P. Berrangé Error **errp); 81*fb5c4ebcSDaniel P. Berrangé 82*fb5c4ebcSDaniel P. Berrangé 83*fb5c4ebcSDaniel P. Berrangé #endif /* QAUTHZ_SIMPLE_H__ */ 84*fb5c4ebcSDaniel P. Berrangé 85