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