xref: /aosp_15_r20/external/selinux/libsemanage/src/database_join.h (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker /* Copyright (C) 2005 Red Hat, Inc. */
2*2d543d20SAndroid Build Coastguard Worker 
3*2d543d20SAndroid Build Coastguard Worker #ifndef _SEMANAGE_DATABASE_JOIN_INTERNAL_H_
4*2d543d20SAndroid Build Coastguard Worker #define _SEMANAGE_DATABASE_JOIN_INTERNAL_H_
5*2d543d20SAndroid Build Coastguard Worker 
6*2d543d20SAndroid Build Coastguard Worker #include "database.h"
7*2d543d20SAndroid Build Coastguard Worker #include "handle.h"
8*2d543d20SAndroid Build Coastguard Worker 
9*2d543d20SAndroid Build Coastguard Worker #ifndef DBASE_RECORD_JOIN_DEFINED
10*2d543d20SAndroid Build Coastguard Worker typedef void *record1_t;
11*2d543d20SAndroid Build Coastguard Worker typedef void *record2_t;
12*2d543d20SAndroid Build Coastguard Worker #define DBASE_RECORD_JOIN_DEFINED
13*2d543d20SAndroid Build Coastguard Worker #endif
14*2d543d20SAndroid Build Coastguard Worker 
15*2d543d20SAndroid Build Coastguard Worker struct dbase_join;
16*2d543d20SAndroid Build Coastguard Worker typedef struct dbase_join dbase_join_t;
17*2d543d20SAndroid Build Coastguard Worker 
18*2d543d20SAndroid Build Coastguard Worker /* JOIN extension to RECORD interface - method table */
19*2d543d20SAndroid Build Coastguard Worker typedef struct record_join_table {
20*2d543d20SAndroid Build Coastguard Worker 
21*2d543d20SAndroid Build Coastguard Worker 	/* Join two records together.
22*2d543d20SAndroid Build Coastguard Worker 	 * One of the provided records could be NULL */
23*2d543d20SAndroid Build Coastguard Worker 	int (*join) (semanage_handle_t * handle,
24*2d543d20SAndroid Build Coastguard Worker 		     const record1_t * record1,
25*2d543d20SAndroid Build Coastguard Worker 		     const record2_t * record2, record_t ** result);
26*2d543d20SAndroid Build Coastguard Worker 
27*2d543d20SAndroid Build Coastguard Worker 	/* Splits a record into two */
28*2d543d20SAndroid Build Coastguard Worker 	int (*split) (semanage_handle_t * handle,
29*2d543d20SAndroid Build Coastguard Worker 		      const record_t * record,
30*2d543d20SAndroid Build Coastguard Worker 		      record1_t ** split1, record2_t ** split2);
31*2d543d20SAndroid Build Coastguard Worker 
32*2d543d20SAndroid Build Coastguard Worker } record_join_table_t;
33*2d543d20SAndroid Build Coastguard Worker 
34*2d543d20SAndroid Build Coastguard Worker /* JOIN - initialization */
35*2d543d20SAndroid Build Coastguard Worker extern int dbase_join_init(semanage_handle_t * handle,
36*2d543d20SAndroid Build Coastguard Worker 			   record_table_t * rtable,
37*2d543d20SAndroid Build Coastguard Worker 			   record_join_table_t * rjtable,
38*2d543d20SAndroid Build Coastguard Worker 			   dbase_config_t * join1,
39*2d543d20SAndroid Build Coastguard Worker 			   dbase_config_t * join2, dbase_join_t ** dbase);
40*2d543d20SAndroid Build Coastguard Worker 
41*2d543d20SAndroid Build Coastguard Worker /* FILE - release */
42*2d543d20SAndroid Build Coastguard Worker extern void dbase_join_release(dbase_join_t * dbase);
43*2d543d20SAndroid Build Coastguard Worker 
44*2d543d20SAndroid Build Coastguard Worker /* JOIN - method table implementation */
45*2d543d20SAndroid Build Coastguard Worker extern dbase_table_t SEMANAGE_JOIN_DTABLE;
46*2d543d20SAndroid Build Coastguard Worker 
47*2d543d20SAndroid Build Coastguard Worker #endif
48