113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/*
213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle * Copyright (C) 2006 Tresys Technology, LLC
313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *
413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  This library is free software; you can redistribute it and/or
513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  modify it under the terms of the GNU Lesser General Public
613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  License as published by the Free Software Foundation; either
713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  version 2.1 of the License, or (at your option) any later version.
813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *
913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  This library is distributed in the hope that it will be useful,
1013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  but WITHOUT ANY WARRANTY; without even the implied warranty of
1113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  Lesser General Public License for more details.
1313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *
1413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  You should have received a copy of the GNU Lesser General Public
1513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  License along with this library; if not, write to the Free Software
1613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
1713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle */
1813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/* Copyright (C) 2005 Red Hat, Inc. */
1913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
2013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlestruct semanage_node;
2113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlestruct semanage_node_key;
2213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindletypedef struct semanage_node record_t;
2313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindletypedef struct semanage_node_key record_key_t;
2413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#define DBASE_RECORD_DEFINED
2513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
2613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlestruct dbase_policydb;
2713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindletypedef struct dbase_policydb dbase_t;
2813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#define DBASE_DEFINED
2913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
3013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <sepol/nodes.h>
3113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include <semanage/handle.h>
3213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include "node_internal.h"
3313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include "debug.h"
3413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#include "database_policydb.h"
35e37fa2f63be89afab9b5f5ddfedbd589d0676c4eCaleb Case#include "semanage_store.h"
3613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
3713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle/* NODE RECORD (SEPOL): POLICYDB extension : method table */
3813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlerecord_policydb_table_t SEMANAGE_NODE_POLICYDB_RTABLE = {
3913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	.add = NULL,
4013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	.modify = (record_policydb_table_modify_t) sepol_node_modify,
4113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	.set = NULL,
4213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	.query = (record_policydb_table_query_t) sepol_node_query,
4313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	.count = (record_policydb_table_count_t) sepol_node_count,
4413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	.exists = (record_policydb_table_exists_t) sepol_node_exists,
4513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	.iterate = (record_policydb_table_iterate_t) sepol_node_iterate,
4613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle};
4713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
4813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindleint node_policydb_dbase_init(semanage_handle_t * handle,
4913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle			     dbase_config_t * dconfig)
5013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle{
5113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
5213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	if (dbase_policydb_init(handle,
539638af24a1e890d673549f0b25d854458e07032eYuli Khodorkovskiy				semanage_path(SEMANAGE_ACTIVE, SEMANAGE_STORE_KERNEL),
549638af24a1e890d673549f0b25d854458e07032eYuli Khodorkovskiy				semanage_path(SEMANAGE_TMP, SEMANAGE_STORE_KERNEL),
5513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle				&SEMANAGE_NODE_RTABLE,
5613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle				&SEMANAGE_NODE_POLICYDB_RTABLE,
5713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle				&dconfig->dbase) < 0)
5813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle		return STATUS_ERR;
5913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
6013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	dconfig->dtable = &SEMANAGE_POLICYDB_DTABLE;
6113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
6213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	return STATUS_SUCCESS;
6313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle}
6413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
6513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindlevoid node_policydb_dbase_release(dbase_config_t * dconfig)
6613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle{
6713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
6813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle	dbase_policydb_release(dconfig->dbase);
6913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle}
70