summaryrefslogtreecommitdiffstats
path: root/libqpol/swig/qpol.i
diff options
context:
space:
mode:
Diffstat (limited to 'libqpol/swig/qpol.i')
-rw-r--r--libqpol/swig/qpol.i2879
1 files changed, 2879 insertions, 0 deletions
diff --git a/libqpol/swig/qpol.i b/libqpol/swig/qpol.i
new file mode 100644
index 0000000..45a2403
--- /dev/null
+++ b/libqpol/swig/qpol.i
@@ -0,0 +1,2879 @@
+/**
+ * SWIG declarations for libqpol.
+ *
+ * @author Jeremy A. Mowery jmowery@tresys.com
+ * @author Jason Tang jtang@tresys.com
+ *
+ * Copyright (C) 2006-2008 Tresys Technology, LLC
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+%module qpol
+
+%{
+#include "../include/qpol/avrule_query.h"
+#include "../include/qpol/bool_query.h"
+#include "../include/qpol/class_perm_query.h"
+#include "../include/qpol/cond_query.h"
+#include "../include/qpol/constraint_query.h"
+#include "../include/qpol/context_query.h"
+#include "../include/qpol/fs_use_query.h"
+#include "../include/qpol/genfscon_query.h"
+#include "../include/qpol/isid_query.h"
+#include "../include/qpol/iterator.h"
+#include "../include/qpol/mls_query.h"
+#include "../include/qpol/mlsrule_query.h"
+#include "../include/qpol/module.h"
+#include "../include/qpol/netifcon_query.h"
+#include "../include/qpol/nodecon_query.h"
+#include "../include/qpol/policy.h"
+#include "../include/qpol/policy_extend.h"
+#include "../include/qpol/portcon_query.h"
+#include "../include/qpol/rbacrule_query.h"
+#include "../include/qpol/role_query.h"
+#include "../include/qpol/syn_rule_query.h"
+#include "../include/qpol/terule_query.h"
+#include "../include/qpol/type_query.h"
+#include "../include/qpol/user_query.h"
+#include "../include/qpol/util.h"
+
+/* Provide hooks so that language-specific modules can define the
+ * callback function, used by the handler in
+ * qpol_policy_open_from_file().
+ */
+SWIGEXPORT qpol_callback_fn_t qpol_swig_message_callback = NULL;
+SWIGEXPORT void * qpol_swig_message_callback_arg = NULL;
+
+%}
+
+#ifdef SWIGJAVA
+%javaconst(1);
+/* get the java environment so we can throw exceptions */
+%{
+ static JNIEnv *qpol_global_jenv;
+ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
+ (*vm)->AttachCurrentThread(vm, (void **)&qpol_global_jenv, NULL);
+ return JNI_VERSION_1_2;
+ }
+%}
+#endif
+
+%include exception.i
+%include stdint.i
+
+%{
+#undef BEGIN_EXCEPTION
+#undef END_EXCEPTION
+%}
+
+#ifdef SWIGJAVA
+
+%exception {
+ qpol_global_jenv = jenv;
+ $action
+}
+
+%{
+#define BEGIN_EXCEPTION JNIEnv *local_jenv = qpol_global_jenv; {
+#define END_EXCEPTION }
+%}
+
+/* handle size_t correctly in java as architecture independent */
+%typemap(jni) size_t "jlong"
+%typemap(jtype) size_t "long"
+%typemap(jstype) size_t "long"
+%typemap(javabody) SWIGTYPE, void* %{
+ private long swigCPtr;
+ protected boolean swigCMemOwn;
+
+ public $javaclassname(long cPtr, boolean cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = cPtr;
+ }
+
+ public static long getCPtr($javaclassname obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+%}
+%pragma(java) jniclasscode=%{
+ static {
+ try
+ {
+ libqpol_get_version();
+ }
+ catch (UnsatisfiedLinkError ule)
+ {
+ System.loadLibrary("jqpol");
+ }
+ }
+%}
+
+#else
+/* not in java so handle size_t as architecture dependent */
+#ifdef SWIGWORDSIZE64
+typedef uint64_t size_t;
+#else
+typedef uint32_t size_t;
+#endif
+%{
+#define BEGIN_EXCEPTION
+#define END_EXCEPTION
+%}
+#endif
+
+/* utility functions */
+const char *libqpol_get_version(void);
+
+%rename(qpol_default_policy_find) wrap_qpol_default_policy_find;
+%newobject wrap_qpol_default_policy_find();
+
+/* if java, pass the new exception macro to C not just SWIG */
+#ifdef SWIGJAVA
+#undef SWIG_exception
+#define SWIG_exception(code, msg) {SWIG_JavaException(local_jenv, code, msg); goto fail;}
+%inline %{
+#undef SWIG_exception
+#define SWIG_exception(code, msg) {SWIG_JavaException(local_jenv, code, msg); goto fail;}
+%}
+#endif
+
+#ifdef SWIGTCL
+/* implement a custom non thread-safe error handler */
+%{
+static char *message = NULL;
+static void tcl_clear_error(void)
+{
+ free(message);
+ message = NULL;
+}
+static void tcl_throw_error(const char *s)
+{
+ free(message);
+ message = strdup(s);
+}
+static char *tcl_get_error(void)
+{
+ return message;
+}
+#undef SWIG_exception
+#define SWIG_exception(code, msg) {tcl_throw_error(msg); goto fail;}
+%}
+
+%wrapper %{
+/* Tcl module's initialization routine is expected to be named
+ * Qpol_Init(), but the output file will be called libtqpol.so instead
+ * of libqpol.so. Therefore add an alias from Tqpol_Init() to the
+ * real Qpol_Init().
+ */
+SWIGEXPORT int Tqpol_Init(Tcl_Interp *interp) {
+ return SWIG_init(interp);
+}
+%}
+
+%exception {
+ char *err;
+ tcl_clear_error();
+ $action
+ if ((err = tcl_get_error()) != NULL) {
+ Tcl_Obj *obj = Tcl_NewStringObj(message, -1);
+ Tcl_ResetResult(interp);
+ Tcl_SetObjResult(interp, obj);
+ goto fail;
+ }
+}
+#undef SWIG_exception
+#define SWIG_exception(code, msg) {tcl_throw_error(msg); goto fail;}
+#endif
+
+%inline %{
+ /* cast void * to char * as it can't have a constructor */
+ const char * to_str(void *x) {
+ return (const char *)x;
+ }
+
+ char * wrap_qpol_default_policy_find() {
+ char *path;
+ int retv;
+ BEGIN_EXCEPTION
+ retv = qpol_default_policy_find(&path);
+ if (retv < 0) {
+ SWIG_exception(SWIG_IOError, "Error searching for default policy");
+ } else if (retv > 0) {
+ SWIG_exception(SWIG_RuntimeError, "Could not find default policy");
+ } else {
+ return path;
+ }
+ END_EXCEPTION
+ fail: /* SWIG_exception calls goto fail */
+ return NULL;
+ }
+%}
+
+/* qpol_module */
+#define QPOL_MODULE_UNKNOWN 0
+#define QPOL_MODULE_BASE 1
+#define QPOL_MODULE_OTHER 2
+typedef struct qpol_module {} qpol_module_t;
+%extend qpol_module_t {
+ qpol_module_t(const char *path) {
+ qpol_module_t *m;
+ BEGIN_EXCEPTION
+ if (qpol_module_create_from_file(path, &m)) {
+ SWIG_exception(SWIG_IOError, "Error opening module");
+ }
+ return m;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_module_t() {
+ qpol_module_destroy(&self);
+ };
+ const char *get_path() {
+ const char *p;
+ BEGIN_EXCEPTION
+ if (qpol_module_get_path(self, &p)) {
+ SWIG_exception(SWIG_ValueError,"Could not get module path");
+ }
+ return p;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ const char *get_name() {
+ const char *n;
+ BEGIN_EXCEPTION
+ if (qpol_module_get_name(self, &n)) {
+ SWIG_exception(SWIG_ValueError,"Could not get module name");
+ }
+ return n;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ const char *get_version() {
+ const char *v;
+ BEGIN_EXCEPTION
+ if (qpol_module_get_version(self, &v)) {
+ SWIG_exception(SWIG_ValueError,"Could not get module version");
+ }
+ return v;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ int get_type() {
+ int t;
+ BEGIN_EXCEPTION
+ if (qpol_module_get_type(self, &t)) {
+ SWIG_exception(SWIG_ValueError,"Could not get module type");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ int get_enabled() {
+ int e;
+ BEGIN_EXCEPTION
+ if (qpol_module_get_enabled(self, &e)) {
+ SWIG_exception(SWIG_ValueError,"Could not get module state");
+ }
+ END_EXCEPTION
+ fail:
+ return e;
+ };
+ void set_enabled(int state) {
+ BEGIN_EXCEPTION
+ if (qpol_module_set_enabled(self, state)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not set module state");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+};
+
+/* qpol_policy */
+#define QPOL_POLICY_OPTION_NO_NEVERALLOWS 0x00000001
+#define QPOL_POLICY_OPTION_NO_RULES 0x00000002
+#define QPOL_POLICY_OPTION_MATCH_SYSTEM 0x00000004
+typedef struct qpol_policy {} qpol_policy_t;
+typedef void (*qpol_callback_fn_t) (void *varg, struct qpol_policy * policy, int level, const char *fmt, va_list va_args);
+#define QPOL_POLICY_UNKNOWN -1
+#define QPOL_POLICY_KERNEL_SOURCE 0
+#define QPOL_POLICY_KERNEL_BINARY 1
+#define QPOL_POLICY_MODULE_BINARY 2
+typedef enum qpol_capability
+{
+ QPOL_CAP_ATTRIB_NAMES,
+ QPOL_CAP_SYN_RULES,
+ QPOL_CAP_LINE_NUMBERS,
+ QPOL_CAP_CONDITIONALS,
+ QPOL_CAP_MLS,
+ QPOL_CAP_MODULES,
+ QPOL_CAP_RULES_LOADED,
+ QPOL_CAP_SOURCE,
+ QPOL_CAP_NEVERALLOW
+} qpol_capability_e;
+
+%extend qpol_policy_t {
+ qpol_policy_t(const char *path, const int options) {
+ qpol_policy_t *p;
+ BEGIN_EXCEPTION
+ if (qpol_policy_open_from_file(path, &p, qpol_swig_message_callback, qpol_swig_message_callback_arg, options) < 0) {
+ SWIG_exception(SWIG_IOError, "Error opening policy");
+ }
+ END_EXCEPTION
+ return p;
+ fail:
+ return NULL;
+ }
+ ~qpol_policy_t() {
+ qpol_policy_destroy(&self);
+ };
+ void reevaluate_conds() {
+ BEGIN_EXCEPTION
+ if (qpol_policy_reevaluate_conds(self)) {
+ SWIG_exception(SWIG_ValueError, "Error evaluating conditional expressions");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+ void append_module(qpol_module_t *mod) {
+ BEGIN_EXCEPTION
+ if (qpol_policy_append_module(self, mod)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+ void rebuild (const int options) {
+ BEGIN_EXCEPTION
+ if (qpol_policy_rebuild(self, options)) {
+ SWIG_exception(SWIG_RuntimeError, "Failed rebuilding policy");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+ int get_version () {
+ unsigned int v;
+ (void)qpol_policy_get_policy_version(self, &v); /* only error is on null parameters neither can be here */
+ return (int) v;
+ };
+ int get_type () {
+ int t;
+ (void)qpol_policy_get_type(self, &t); /* only error is on null parameters neither can be here */
+ return t;
+ };
+ int has_capability (qpol_capability_e cap) {
+ return qpol_policy_has_capability(self, cap);
+ };
+ void build_syn_rule_table() {
+ BEGIN_EXCEPTION
+ if (qpol_policy_build_syn_rule_table(self)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+ %newobject get_module_iter();
+ qpol_iterator_t *get_module_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_module_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_type_iter();
+ qpol_iterator_t *get_type_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_type_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_role_iter();
+ qpol_iterator_t *get_role_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_role_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_level_iter();
+ qpol_iterator_t *get_level_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_level_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_cat_iter();
+ qpol_iterator_t *get_cat_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_cat_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_user_iter();
+ qpol_iterator_t *get_user_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_user_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_bool_iter();
+ qpol_iterator_t *get_bool_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_bool_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_class_iter(char*);
+ qpol_iterator_t *get_class_iter(char *perm=NULL) {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (perm) {
+ if (qpol_perm_get_class_iter(self, perm, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get class iterator");
+ }
+ } else {
+ if (qpol_policy_get_class_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_common_iter(char*);
+ qpol_iterator_t *get_common_iter(char *perm=NULL) {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (perm) {
+ if (qpol_perm_get_common_iter(self, perm, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get common iterator");
+ }
+ } else {
+ if (qpol_policy_get_common_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_fs_use_iter();
+ qpol_iterator_t *get_fs_use_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_fs_use_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_genfscon_iter();
+ qpol_iterator_t *get_genfscon_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_genfscon_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_isid_iter();
+ qpol_iterator_t *get_isid_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_isid_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_netifcon_iter();
+ qpol_iterator_t *get_netifcon_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_netifcon_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_nodecon_iter();
+ qpol_iterator_t *get_nodecon_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_nodecon_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_portcon_iter();
+ qpol_iterator_t *get_portcon_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_portcon_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_constraint_iter();
+ qpol_iterator_t *get_constraint_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_constraint_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_validatetrans_iter();
+ qpol_iterator_t *get_validatetrans_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_validatetrans_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_role_allow_iter();
+ qpol_iterator_t *get_role_allow_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_role_allow_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_role_trans_iter();
+ qpol_iterator_t *get_role_trans_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_role_trans_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_range_trans_iter();
+ qpol_iterator_t *get_range_trans_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_range_trans_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_avrule_iter(int);
+ qpol_iterator_t *get_avrule_iter(int rule_types) {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_avrule_iter(self, rule_types, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_terule_iter(int);
+ qpol_iterator_t *get_terule_iter(int rule_types) {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_terule_iter(self, rule_types, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ %newobject get_cond_iter();
+ qpol_iterator_t *get_cond_iter() {
+ BEGIN_EXCEPTION
+ qpol_iterator_t *iter;
+ if (qpol_policy_get_cond_iter(self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ return iter;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+};
+
+/* qpol iterator */
+typedef struct qpol_iterator {} qpol_iterator_t;
+%extend qpol_iterator_t {
+ /* user never directly creates, but SWIG expects a constructor */
+ qpol_iterator_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_TypeError, "User may not create iterators difectly");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_iterator_t() {
+ qpol_iterator_destroy(&self);
+ };
+ void *get_item() {
+ BEGIN_EXCEPTION
+ void *i;
+ if (qpol_iterator_get_item(self, &i)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get item");
+ }
+ return i;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ void next() {
+ BEGIN_EXCEPTION
+ if (qpol_iterator_next(self)) {
+ SWIG_exception(SWIG_RuntimeError, "Error advancing iterator");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+ int end() {
+ return qpol_iterator_end(self);
+ };
+ size_t get_size() {
+ BEGIN_EXCEPTION
+ size_t s;
+ if (qpol_iterator_get_size(self, &s)) {
+ SWIG_exception(SWIG_ValueError, "Could not get iterator size");
+ }
+ return s;
+ END_EXCEPTION
+ fail:
+ return 0;
+ };
+};
+
+/* qpol type */
+typedef struct qpol_type {} qpol_type_t;
+%extend qpol_type_t {
+ qpol_type_t(qpol_policy_t *p, const char *name) {
+ BEGIN_EXCEPTION
+ const qpol_type_t *t;
+ if (qpol_policy_get_type_by_name(p, name, &t)) {
+ SWIG_exception(SWIG_RuntimeError, "Type does not exist");
+ }
+ return (qpol_type_t*)t;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_type_t() {
+ /* no op */
+ return;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ BEGIN_EXCEPTION
+ const char *name;
+ if (qpol_type_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get type name");
+ }
+ return name;
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ int get_value(qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_type_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get type value");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ int get_isalias(qpol_policy_t *p) {
+ unsigned char i;
+ BEGIN_EXCEPTION
+ if (qpol_type_get_isalias(p, self, &i)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine whether type is an alias");
+ }
+ END_EXCEPTION
+ fail:
+ return (int)i;
+ };
+ int get_isattr(qpol_policy_t *p) {
+ unsigned char i;
+ BEGIN_EXCEPTION
+ if (qpol_type_get_isattr(p, self, &i)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine whether type is an attribute");
+ }
+ END_EXCEPTION
+ fail:
+ return (int)i;
+ };
+ int get_ispermissive(qpol_policy_t *p) {
+ unsigned char i;
+ BEGIN_EXCEPTION
+ if (qpol_type_get_ispermissive(p, self, &i)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine whether type is permissive");
+ }
+ END_EXCEPTION
+ fail:
+ return (int)i;
+ };
+ %newobject get_type_iter(qpol_policy_t*);
+ qpol_iterator_t *get_type_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ int retv = qpol_type_get_type_iter(p, self, &iter);
+ if (retv < 0) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get attribute types");
+ } else if (retv > 0) {
+ SWIG_exception(SWIG_TypeError, "Type is not an attribute");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_attr_iter(qpol_policy_t*);
+ qpol_iterator_t *get_attr_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ int retv = qpol_type_get_attr_iter(p, self, &iter);
+ if (retv < 0) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get type attributes");
+ } else if (retv > 0) {
+ SWIG_exception(SWIG_TypeError, "Type is an attribute");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_alias_iter(qpol_policy_t*);
+ qpol_iterator_t *get_alias_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_type_get_alias_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get type aliases");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ };
+%inline %{
+ qpol_type_t *qpol_type_from_void(void *x) {
+ return (qpol_type_t*)x;
+ };
+%}
+
+/* qpol role */
+typedef struct qpol_role {} qpol_role_t;
+%extend qpol_role_t {
+ qpol_role_t(qpol_policy_t *p, const char *name) {
+ const qpol_role_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_role_by_name(p, name, &r)) {
+ SWIG_exception(SWIG_RuntimeError, "Role does not exist");
+ }
+ END_EXCEPTION
+ return (qpol_role_t*)r;
+ fail:
+ return NULL;
+ };
+ ~qpol_role_t() {
+ /* no op */
+ return;
+ };
+ int get_value (qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_role_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get role value");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_role_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get role name");
+ }
+ END_EXCEPTION
+ return name;
+ fail:
+ return NULL;
+ };
+ %newobject get_type_iter(qpol_policy_t*);
+ qpol_iterator_t *get_type_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_role_get_type_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get role types");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_dominate_iter(qpol_policy_t*);
+ qpol_iterator_t *get_dominate_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_role_get_dominate_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get dominated roles");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_role_t *qpol_role_from_void(void *x) {
+ return (qpol_role_t*)x;
+ };
+%}
+
+/* qpol level */
+typedef struct qpol_level {} qpol_level_t;
+%extend qpol_level_t {
+ qpol_level_t(qpol_policy_t *p, const char *name) {
+ const qpol_level_t *l;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_level_by_name(p, name, &l)) {
+ SWIG_exception(SWIG_RuntimeError, "Level does not exist");
+ }
+ END_EXCEPTION
+ return (qpol_level_t*)l;
+ fail:
+ return NULL;
+ };
+ ~qpol_level_t() {
+ /* no op */
+ return;
+ };
+ int get_isalias(qpol_policy_t *p) {
+ unsigned char i;
+ BEGIN_EXCEPTION
+ if (qpol_level_get_isalias(p, self, &i)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine whether level is an alias");
+ }
+ END_EXCEPTION
+ fail:
+ return (int)i;
+ };
+ int get_value(qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_level_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get level sensitivity value");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_level_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get level sensitivity name");
+ }
+ END_EXCEPTION
+ return name;
+ fail:
+ return NULL;
+ };
+ %newobject get_cat_iter(qpol_policy_t*);
+ qpol_iterator_t *get_cat_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_level_get_cat_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get level categories");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_alias_iter(qpol_policy_t*);
+ qpol_iterator_t *get_alias_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_level_get_alias_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get level aliases");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_level_t *qpol_level_from_void(void *x) {
+ return (qpol_level_t*)x;
+ };
+%}
+
+/* qpol cat */
+typedef struct qpol_cat {} qpol_cat_t;
+%extend qpol_cat_t {
+ qpol_cat_t(qpol_policy_t *p, const char *name) {
+ const qpol_cat_t *c;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_cat_by_name(p, name, &c)) {
+ SWIG_exception(SWIG_RuntimeError, "Category does not exist");
+ }
+ END_EXCEPTION
+ return (qpol_cat_t*)c;
+ fail:
+ return NULL;
+ };
+ ~qpol_cat_t() {
+ /* no op */
+ return;
+ };
+ int get_isalias(qpol_policy_t *p) {
+ unsigned char i;
+ BEGIN_EXCEPTION
+ if (qpol_cat_get_isalias(p, self, &i)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine whether category is an alias");
+ }
+ END_EXCEPTION
+ fail:
+ return (int)i;
+ };
+ int get_value(qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_cat_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get category value");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_cat_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get category name");
+ }
+ END_EXCEPTION
+ return name;
+ fail:
+ return NULL;
+ };
+ %newobject get_alias_iter(qpol_policy_t*);
+ qpol_iterator_t *get_alias_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_cat_get_alias_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get category aliases");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_cat_t *qpol_cat_from_void(void *x) {
+ return (qpol_cat_t*)x;
+ };
+%}
+
+/* qpol mls range */
+typedef struct qpol_mls_range {} qpol_mls_range_t;
+%extend qpol_mls_range_t {
+ qpol_mls_range_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_mls_range_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ }
+ ~qpol_mls_range_t() {
+ /* no op */
+ return;
+ };
+ const qpol_mls_level_t *get_high_level(qpol_policy_t *p) {
+ const qpol_mls_level_t *l;
+ BEGIN_EXCEPTION
+ if (qpol_mls_range_get_high_level(p, self, &l)) {
+ SWIG_exception(SWIG_ValueError, "Could not get range high levl");
+ }
+ END_EXCEPTION
+ fail:
+ return l;
+ };
+ const qpol_mls_level_t *get_low_level(qpol_policy_t *p) {
+ const qpol_mls_level_t *l;
+ BEGIN_EXCEPTION
+ if (qpol_mls_range_get_low_level(p, self, &l)) {
+ SWIG_exception(SWIG_ValueError, "Could not get range low levl");
+ }
+ END_EXCEPTION
+ fail:
+ return l;
+ };
+};
+%inline %{
+ qpol_mls_range_t *qpol_mls_range_from_void(void *x) {
+ return (qpol_mls_range_t*)x;
+ };
+%}
+
+/* qpol mls level */
+typedef struct qpol_mls_level {} qpol_mls_level_t;
+%extend qpol_mls_level_t {
+ qpol_mls_level_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_mls_level_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ }
+ ~qpol_mls_level_t() {
+ /* no op */
+ return;
+ };
+ const char *get_sens_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_mls_level_get_sens_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get level sensitivity name");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+ %newobject get_cat_iter(qpol_policy_t*);
+ qpol_iterator_t *get_cat_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_mls_level_get_cat_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get level categories");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_mls_level_t *qpol_mls_level_from_void(void *x) {
+ return (qpol_mls_level_t*)x;
+ };
+%}
+
+/* qpol user */
+typedef struct qpol_user {} qpol_user_t;
+%extend qpol_user_t {
+ qpol_user_t(qpol_policy_t *p, const char *name) {
+ const qpol_user_t *u;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_user_by_name(p, name, &u)) {
+ SWIG_exception(SWIG_RuntimeError, "User does not exist");
+ }
+ END_EXCEPTION
+ return (qpol_user_t*)u;
+ fail:
+ return NULL;
+ };
+ ~qpol_user_t() {
+ /* no op */
+ return;
+ };
+ int get_value(qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_user_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get user value");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ %newobject get_role_iter(qpol_policy_t*);
+ qpol_iterator_t *get_role_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_user_get_role_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of Memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ const qpol_mls_range_t *get_range(qpol_policy_t *p) {
+ const qpol_mls_range_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_user_get_range(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get user range");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_user_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get user name");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+ const qpol_mls_level_t *get_dfltlevel(qpol_policy_t *p) {
+ const qpol_mls_level_t *l;
+ BEGIN_EXCEPTION
+ if (qpol_user_get_dfltlevel(p, self, &l)) {
+ SWIG_exception(SWIG_ValueError, "Could not get user default level");
+ }
+ END_EXCEPTION
+ fail:
+ return l;
+ };
+};
+%inline %{
+ qpol_user_t *qpol_user_from_void(void *x) {
+ return (qpol_user_t*)x;
+ };
+%}
+
+/* qpol bool */
+typedef struct qpol_bool {} qpol_bool_t;
+%extend qpol_bool_t {
+ qpol_bool_t(qpol_policy_t *p, const char *name) {
+ qpol_bool_t *b;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_bool_by_name(p, name, &b)) {
+ SWIG_exception(SWIG_RuntimeError, "Boolean does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return b;
+ };
+ ~qpol_bool_t() {
+ /* no op */
+ return;
+ };
+ int get_value(qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_bool_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get boolean value");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ int get_state(qpol_policy_t *p) {
+ int s;
+ BEGIN_EXCEPTION
+ if (qpol_bool_get_state(p, self, &s)) {
+ SWIG_exception(SWIG_ValueError, "Could not get boolean state");
+ }
+ END_EXCEPTION
+ fail:
+ return s;
+ };
+ void set_state(qpol_policy_t *p, int state) {
+ BEGIN_EXCEPTION
+ if (qpol_bool_set_state(p, self, state)) {
+ SWIG_exception(SWIG_RuntimeError, "Error setting boolean state");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+ void set_state_no_eval(qpol_policy_t *p, int state) {
+ BEGIN_EXCEPTION
+ if (qpol_bool_set_state_no_eval(p, self, state)) {
+ SWIG_exception(SWIG_RuntimeError, "Error setting boolean state");
+ }
+ END_EXCEPTION
+ fail:
+ return;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_bool_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get boolean name");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+};
+%inline %{
+ qpol_bool_t *qpol_bool_from_void(void *x) {
+ return (qpol_bool_t*)x;
+ };
+%}
+
+/* qpol context */
+typedef struct qpol_context {} qpol_context_t;
+%extend qpol_context_t {
+ qpol_context_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_context_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_context_t() {
+ /* no op */
+ return;
+ };
+ const qpol_user_t *get_user(qpol_policy_t *p) {
+ const qpol_user_t *u;
+ BEGIN_EXCEPTION
+ if (qpol_context_get_user(p, self, &u)) {
+ SWIG_exception(SWIG_ValueError, "Could not get user from context");
+ }
+ END_EXCEPTION
+ fail:
+ return u;
+ };
+ const qpol_role_t *get_role(qpol_policy_t *p) {
+ const qpol_role_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_context_get_role(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get role from context");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+ const qpol_type_t *get_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_context_get_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get type from context");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_mls_range_t *get_range(qpol_policy_t *p) {
+ const qpol_mls_range_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_context_get_range(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get range from context");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+};
+%inline %{
+ qpol_context_t *qpol_context_from_void(void *x) {
+ return (qpol_context_t*)x;
+ };
+%}
+
+/* qpol class */
+typedef struct qpol_class {} qpol_class_t;
+%extend qpol_class_t {
+ qpol_class_t(qpol_policy_t *p, const char *name) {
+ const qpol_class_t *c;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_class_by_name(p, name, &c)) {
+ SWIG_exception(SWIG_RuntimeError, "Class does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return (qpol_class_t*)c;
+ };
+ ~qpol_class_t() {
+ /* no op */
+ return;
+ };
+ int get_value(qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_class_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get value for class");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ const qpol_common_t *get_common(qpol_policy_t *p) {
+ const qpol_common_t *c;
+ BEGIN_EXCEPTION
+ if(qpol_class_get_common(p, self, &c)) {
+ SWIG_exception(SWIG_ValueError, "Could not get common for class");
+ }
+ END_EXCEPTION
+ fail:
+ return c;
+ };
+ %newobject get_perm_iter(qpol_policy_t*);
+ qpol_iterator_t *get_perm_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if(qpol_class_get_perm_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get class permissions");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_constraint_iter(qpol_policy_t*);
+ qpol_iterator_t *get_constraint_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if(qpol_class_get_constraint_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get class constraints");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_validatetrans_iter(qpol_policy_t*);
+ qpol_iterator_t *get_validatetrans_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if(qpol_class_get_validatetrans_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get class validatetrans statements");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_class_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get class name");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+};
+%inline %{
+ qpol_class_t *qpol_class_from_void(void *x) {
+ return (qpol_class_t*)x;
+ };
+%}
+
+/* qpol common */
+typedef struct qpol_common {} qpol_common_t;
+%extend qpol_common_t {
+ qpol_common_t(qpol_policy_t *p, const char *name) {
+ const qpol_common_t *c;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_common_by_name(p, name, &c)) {
+ SWIG_exception(SWIG_RuntimeError, "Common does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return (qpol_common_t*)c;
+ };
+ ~qpol_common_t() {
+ /* no op */
+ return;
+ };
+ int get_value(qpol_policy_t *p) {
+ uint32_t v;
+ BEGIN_EXCEPTION
+ if (qpol_common_get_value(p, self, &v)) {
+ SWIG_exception(SWIG_ValueError, "Could not get value for common");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) v;
+ };
+ %newobject get_perm_iter(qpol_policy_t*);
+ qpol_iterator_t *get_perm_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if(qpol_common_get_perm_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get common permissions");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_common_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get common name");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+};
+%inline %{
+ qpol_common_t *qpol_common_from_void(void *x) {
+ return (qpol_common_t*)x;
+ };
+%}
+
+/* qpol fs_use */
+/* The defines QPOL_FS_USE_XATTR through QPOL_FS_USE_NONE are
+ * copied from sepol/policydb/services.h.
+ * QPOL_FS_USE_PSID is an extension to support v12 policies. */
+#ifdef SWIGJAVA /* java does not understand unsigned constants */
+#define QPOL_FS_USE_XATTR 1
+#define QPOL_FS_USE_TRANS 2
+#define QPOL_FS_USE_TASK 3
+#define QPOL_FS_USE_GENFS 4
+#define QPOL_FS_USE_NONE 5
+#define QPOL_FS_USE_PSID 6
+#else
+#define QPOL_FS_USE_XATTR 1U
+#define QPOL_FS_USE_TRANS 2U
+#define QPOL_FS_USE_TASK 3U
+#define QPOL_FS_USE_GENFS 4U
+#define QPOL_FS_USE_NONE 5U
+#define QPOL_FS_USE_PSID 6U
+#endif
+typedef struct qpol_fs_use {} qpol_fs_use_t;
+%extend qpol_fs_use_t {
+ qpol_fs_use_t(qpol_policy_t *p, const char *name) {
+ const qpol_fs_use_t *f;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_fs_use_by_name(p, name, &f)) {
+ SWIG_exception(SWIG_RuntimeError, "FS Use Statement does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return (qpol_fs_use_t*)f;
+ };
+ ~qpol_fs_use_t() {
+ /* no op */
+ return;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_fs_use_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get file system name");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+ int get_behavior(qpol_policy_t *p) {
+ uint32_t behav;
+ BEGIN_EXCEPTION
+ if (qpol_fs_use_get_behavior(p, self, &behav)) {
+ SWIG_exception(SWIG_ValueError, "Could not get file system labeling behavior");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) behav;
+ };
+ const qpol_context_t *get_context(qpol_policy_t *p) {
+ uint32_t behav;
+ const qpol_context_t *ctx = NULL;
+ BEGIN_EXCEPTION
+ qpol_fs_use_get_behavior(p, self, &behav);
+ if (behav == QPOL_FS_USE_PSID) {
+ SWIG_exception(SWIG_TypeError, "Cannot get context for fs_use_psid statements");
+ } else if (qpol_fs_use_get_context(p, self, &ctx)) {
+ SWIG_exception(SWIG_ValueError, "Could not get file system context");
+ }
+ END_EXCEPTION
+ fail:
+ return ctx;
+ };
+};
+%inline %{
+ qpol_fs_use_t *qpol_fs_use_from_void(void *x) {
+ return (qpol_fs_use_t*)x;
+ };
+%}
+
+/* qpol genfscon */
+/* values from flask do not change */
+#ifdef SWIGJAVA /* java does not understand unsigned constants */
+#define QPOL_CLASS_ALL 0
+#define QPOL_CLASS_BLK_FILE 11
+#define QPOL_CLASS_CHR_FILE 10
+#define QPOL_CLASS_DIR 7
+#define QPOL_CLASS_FIFO_FILE 13
+#define QPOL_CLASS_FILE 6
+#define QPOL_CLASS_LNK_FILE 9
+#define QPOL_CLASS_SOCK_FILE 12
+#else
+#define QPOL_CLASS_ALL 0U
+#define QPOL_CLASS_BLK_FILE 11U
+#define QPOL_CLASS_CHR_FILE 10U
+#define QPOL_CLASS_DIR 7U
+#define QPOL_CLASS_FIFO_FILE 13U
+#define QPOL_CLASS_FILE 6U
+#define QPOL_CLASS_LNK_FILE 9U
+#define QPOL_CLASS_SOCK_FILE 12U
+#endif
+typedef struct qpol_genfscon {} qpol_genfscon_t;
+%extend qpol_genfscon_t {
+ qpol_genfscon_t(qpol_policy_t *p, const char *name, const char *path) {
+ qpol_genfscon_t *g;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_genfscon_by_name(p, name, path, &g)) {
+ SWIG_exception(SWIG_RuntimeError, "Genfscon statement does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return g;
+ };
+ ~qpol_genfscon_t() {
+ free(self);
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_genfscon_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get file system name");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+ const char *get_path(qpol_policy_t *p) {
+ const char *path;
+ BEGIN_EXCEPTION
+ if (qpol_genfscon_get_path(p, self, &path)) {
+ SWIG_exception(SWIG_ValueError, "Could not get file system path");
+ }
+ END_EXCEPTION
+ fail:
+ return path;
+ };
+ int get_class(qpol_policy_t *p) {
+ uint32_t cls;
+ BEGIN_EXCEPTION
+ if (qpol_genfscon_get_class(p, self, &cls)) {
+ SWIG_exception(SWIG_ValueError, "Could not get genfscon statement class");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) cls;
+ };
+ const qpol_context_t *get_context(qpol_policy_t *p) {
+ const qpol_context_t *ctx;
+ BEGIN_EXCEPTION
+ if (qpol_genfscon_get_context(p, self, &ctx)) {
+ SWIG_exception(SWIG_ValueError, "Could not get context for genfscon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return ctx;
+ };
+};
+%inline %{
+ qpol_genfscon_t *qpol_genfscon_from_void(void *x) {
+ return (qpol_genfscon_t*)x;
+ };
+%}
+
+/* qpol isid */
+typedef struct qpol_isid {} qpol_isid_t;
+%extend qpol_isid_t {
+ qpol_isid_t(qpol_policy_t *p, const char *name) {
+ const qpol_isid_t *i;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_isid_by_name(p, name, &i)) {
+ SWIG_exception(SWIG_RuntimeError, "Isid does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return (qpol_isid_t*)i;
+ };
+ ~qpol_isid_t() {
+ /* no op */
+ return;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_isid_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get name for initial sid");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+ const qpol_context_t *get_context(qpol_policy_t *p) {
+ const qpol_context_t *ctx;
+ BEGIN_EXCEPTION
+ if (qpol_isid_get_context(p, self, &ctx)) {
+ SWIG_exception(SWIG_ValueError, "Could not get context for initial sid");
+ }
+ END_EXCEPTION
+ fail:
+ return ctx;
+ };
+};
+%inline %{
+ qpol_isid_t *qpol_isid_from_void(void *x) {
+ return (qpol_isid_t*)x;
+ };
+%}
+
+/* qpol netifcon */
+typedef struct qpol_netifcon {} qpol_netifcon_t;
+%extend qpol_netifcon_t {
+ qpol_netifcon_t(qpol_policy_t *p, const char *name) {
+ const qpol_netifcon_t *n;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_netifcon_by_name(p, name, &n)) {
+ SWIG_exception(SWIG_RuntimeError, "Netifcon statement does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return (qpol_netifcon_t*)n;
+ };
+ ~qpol_netifcon_t() {
+ /* no op */
+ return;
+ };
+ const char *get_name(qpol_policy_t *p) {
+ const char *name;
+ BEGIN_EXCEPTION
+ if (qpol_netifcon_get_name(p, self, &name)) {
+ SWIG_exception(SWIG_ValueError, "Could not get name for netifcon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return name;
+ };
+ const qpol_context_t *get_msg_con(qpol_policy_t *p) {
+ const qpol_context_t *ctx;
+ BEGIN_EXCEPTION
+ if (qpol_netifcon_get_msg_con(p, self, &ctx)) {
+ SWIG_exception(SWIG_ValueError, "Could not get message context for netifcon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return ctx;
+ };
+ const qpol_context_t *get_if_con(qpol_policy_t *p) {
+ const qpol_context_t *ctx;
+ BEGIN_EXCEPTION
+ if (qpol_netifcon_get_if_con(p, self, &ctx)) {
+ SWIG_exception(SWIG_ValueError, "Could not get interface context for netifcon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return ctx;
+ };
+};
+%inline %{
+ qpol_netifcon_t *qpol_netifcon_from_void(void *x) {
+ return (qpol_netifcon_t*)x;
+ };
+%}
+
+/* qpol nodecon */
+#define QPOL_IPV4 0
+#define QPOL_IPV6 1
+typedef struct qpol_nodecon {} qpol_nodecon_t;
+%extend qpol_nodecon_t {
+ qpol_nodecon_t(qpol_policy_t *p, int addr[4], int mask[4], int protocol) {
+ uint32_t a[4], m[4];
+ qpol_nodecon_t *n;
+ BEGIN_EXCEPTION
+ a[0] = (uint32_t) addr[0]; a[1] = (uint32_t) addr[1];
+ a[2] = (uint32_t) addr[2]; a[3] = (uint32_t) addr[3];
+ m[0] = (uint32_t) mask[0]; m[1] = (uint32_t) mask[1];
+ m[2] = (uint32_t) mask[2]; m[3] = (uint32_t) mask[3];
+ if (qpol_policy_get_nodecon_by_node(p, a, m, protocol, &n)) {
+ SWIG_exception(SWIG_RuntimeError, "Nodecon statement does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return n;
+ }
+ ~qpol_nodecon_t() {
+ free(self);
+ };
+ uint32_t *get_addr(qpol_policy_t *p) {
+ uint32_t *a;
+ BEGIN_EXCEPTION
+ unsigned char proto; /* currently dropped; stores the protocol - call get_protocol() */
+ if (qpol_nodecon_get_addr(p, self, &a, &proto)) {
+ SWIG_exception(SWIG_ValueError, "Could not get address of nodecon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return a;
+ };
+ uint32_t *get_mask(qpol_policy_t *p) {
+ uint32_t *m;
+ BEGIN_EXCEPTION
+ unsigned char proto; /* currently dropped; stores the protocol - call get_protocol() */
+ if (qpol_nodecon_get_mask(p, self, &m, &proto)) {
+ SWIG_exception(SWIG_ValueError, "Could not get mask of nodecon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return m;
+ };
+ int get_protocol(qpol_policy_t *p) {
+ unsigned char proto;
+ BEGIN_EXCEPTION
+ if (qpol_nodecon_get_protocol(p, self, &proto)) {
+ SWIG_exception(SWIG_ValueError, "Could not get protocol for nodecon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return proto;
+ };
+ const qpol_context_t *get_context(qpol_policy_t *p) {
+ const qpol_context_t *ctx;
+ BEGIN_EXCEPTION
+ if (qpol_nodecon_get_context(p, self, &ctx)) {
+ SWIG_exception(SWIG_ValueError, "Could not get context for nodecon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return ctx;
+ };
+};
+%inline %{
+ qpol_nodecon_t *qpol_nodecon_from_void(void *x) {
+ return (qpol_nodecon_t*)x;
+ };
+%}
+
+/* qpol portcon */
+/* from netinet/in.h */
+#define IPPROTO_TCP 6
+#define IPPROTO_UDP 17
+typedef struct qpol_portcon {} qpol_portcon_t;
+%extend qpol_portcon_t {
+ qpol_portcon_t(qpol_policy_t *p, uint16_t low, uint16_t high, uint8_t protocol) {
+ const qpol_portcon_t *qp;
+ BEGIN_EXCEPTION
+ if (qpol_policy_get_portcon_by_port(p, low, high, protocol, &qp)) {
+ SWIG_exception(SWIG_RuntimeError, "Portcon statement does not exist");
+ }
+ END_EXCEPTION
+ fail:
+ return (qpol_portcon_t*)qp;
+ };
+ ~qpol_portcon_t() {
+ /* no op */
+ return;
+ };
+ uint16_t get_low_port(qpol_policy_t *p) {
+ uint16_t port = 0;
+ BEGIN_EXCEPTION
+ if(qpol_portcon_get_low_port(p, self, &port)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get low port for portcon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return port;
+ };
+ uint16_t get_high_port(qpol_policy_t *p) {
+ uint16_t port = 0;
+ BEGIN_EXCEPTION
+ if(qpol_portcon_get_high_port(p, self, &port)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get high port for portcon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return port;
+ };
+ uint8_t get_protocol(qpol_policy_t *p) {
+ uint8_t proto = 0;
+ BEGIN_EXCEPTION
+ if (qpol_portcon_get_protocol(p, self, &proto)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not get protocol for portcon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return proto;
+ };
+ const qpol_context_t *get_context(qpol_policy_t *p) {
+ const qpol_context_t *ctx;
+ BEGIN_EXCEPTION
+ if (qpol_portcon_get_context(p, self, &ctx)) {
+ SWIG_exception(SWIG_ValueError, "Could not get context for portcon statement");
+ }
+ END_EXCEPTION
+ fail:
+ return ctx;
+ };
+}
+%inline %{
+ qpol_portcon_t *qpol_portcon_from_void(void *x) {
+ return (qpol_portcon_t*)x;
+ };
+%}
+
+/* qpol constraint */
+typedef struct qpol_constraint {} qpol_constraint_t;
+%extend qpol_constraint_t {
+ qpol_constraint_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_constraint_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_constraint_t() {
+ free(self);
+ };
+ const qpol_class_t *get_class(qpol_policy_t *p) {
+ const qpol_class_t *cls;
+ BEGIN_EXCEPTION
+ if (qpol_constraint_get_class(p, self, &cls)) {
+ SWIG_exception(SWIG_ValueError, "Could not get class for constraint");
+ }
+ END_EXCEPTION
+ fail:
+ return cls;
+ };
+ %newobject get_perm_iter(qpol_policy_t*);
+ qpol_iterator_t *get_perm_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_constraint_get_perm_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_expr_iter(qpol_policy_t*);
+ qpol_iterator_t *get_expr_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_constraint_get_expr_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_constraint_t *qpol_constraint_from_void(void *x) {
+ return (qpol_constraint_t*)x;
+ };
+%}
+
+/* qpol validatetrans */
+typedef struct qpol_validatetrans {} qpol_validatetrans_t;
+%extend qpol_validatetrans_t {
+ qpol_validatetrans_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_validatetrans_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_validatetrans_t() {
+ free(self);
+ };
+ const qpol_class_t *get_class(qpol_policy_t *p) {
+ const qpol_class_t *cls;
+ BEGIN_EXCEPTION
+ if (qpol_validatetrans_get_class(p, self, &cls)) {
+ SWIG_exception(SWIG_ValueError, "Could not get class for validatetrans");
+ }
+ END_EXCEPTION
+ fail:
+ return cls;
+ };
+ %newobject get_expr_iter(qpol_policy_t*);
+ qpol_iterator_t *get_expr_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_validatetrans_get_expr_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_validatetrans_t *qpol_validatetrans_from_void(void *x) {
+ return (qpol_validatetrans_t*)x;
+ };
+%}
+
+/* qpol constraint expression node */
+/* expr_type values */
+#define QPOL_CEXPR_TYPE_NOT 1
+#define QPOL_CEXPR_TYPE_AND 2
+#define QPOL_CEXPR_TYPE_OR 3
+#define QPOL_CEXPR_TYPE_ATTR 4
+#define QPOL_CEXPR_TYPE_NAMES 5
+/* symbol type values */
+#define QPOL_CEXPR_SYM_USER 1
+#define QPOL_CEXPR_SYM_ROLE 2
+#define QPOL_CEXPR_SYM_TYPE 4
+#define QPOL_CEXPR_SYM_TARGET 8
+#define QPOL_CEXPR_SYM_XTARGET 16
+#define QPOL_CEXPR_SYM_L1L2 32
+#define QPOL_CEXPR_SYM_L1H2 64
+#define QPOL_CEXPR_SYM_H1L2 128
+#define QPOL_CEXPR_SYM_H1H2 256
+#define QPOL_CEXPR_SYM_L1H1 512
+#define QPOL_CEXPR_SYM_L2H2 1024
+/* op values */
+#define QPOL_CEXPR_OP_EQ 1
+#define QPOL_CEXPR_OP_NEQ 2
+#define QPOL_CEXPR_OP_DOM 3
+#define QPOL_CEXPR_OP_DOMBY 4
+#define QPOL_CEXPR_OP_INCOMP 5
+typedef struct qpol_constraint_expr_node {} qpol_constraint_expr_node_t;
+%extend qpol_constraint_expr_node_t {
+ qpol_constraint_expr_node_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_constraint_expr_node_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_constraint_expr_node_t() {
+ /* no op */
+ return;
+ };
+ int get_expr_type(qpol_policy_t *p) {
+ uint32_t et;
+ BEGIN_EXCEPTION
+ if (qpol_constraint_expr_node_get_expr_type(p, self, &et)) {
+ SWIG_exception(SWIG_ValueError, "Could not get expression type for node");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) et;
+ };
+ int get_sym_type(qpol_policy_t *p) {
+ uint32_t st;
+ BEGIN_EXCEPTION
+ if (qpol_constraint_expr_node_get_sym_type(p, self, &st)) {
+ SWIG_exception(SWIG_ValueError, "Could not get symbol type for node");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) st;
+ };
+ int get_op(qpol_policy_t *p) {
+ uint32_t op;
+ BEGIN_EXCEPTION
+ if (qpol_constraint_expr_node_get_op(p, self, &op)) {
+ SWIG_exception(SWIG_ValueError, "Could not get operator for node");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) op;
+ };
+ %newobject get_names_iter(qpol_policy_t*);
+ qpol_iterator_t *get_names_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_constraint_expr_node_get_names_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_constraint_expr_node_t *qpol_constraint_expr_node_from_void(void *x) {
+ return (qpol_constraint_expr_node_t*)x;
+ };
+%}
+
+/* qpol role allow */
+typedef struct qpol_role_allow {} qpol_role_allow_t;
+%extend qpol_role_allow_t {
+ qpol_role_allow_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_role_allow_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_role_allow_t() {
+ /* no op */
+ return;
+ };
+ const qpol_role_t *get_source_role(qpol_policy_t *p) {
+ const qpol_role_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_role_allow_get_source_role(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get source for role allow rule");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+ const qpol_role_t *get_target_role(qpol_policy_t *p) {
+ const qpol_role_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_role_allow_get_target_role(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get target for role allow rule");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+};
+%inline %{
+ qpol_role_allow_t *qpol_role_allow_from_void(void *x) {
+ return (qpol_role_allow_t*)x;
+ };
+%}
+
+/* qpol role trans */
+typedef struct qpol_role_trans {} qpol_role_trans_t;
+%extend qpol_role_trans_t {
+ qpol_role_trans_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_role_trans_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_role_trans_t() {
+ /* no op */
+ return;
+ };
+ const qpol_role_t *get_source_role(qpol_policy_t *p) {
+ const qpol_role_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_role_trans_get_source_role(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get source for role_transition rule");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+ const qpol_type_t *get_target_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_role_trans_get_target_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get target for role_transition rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_role_t *get_default_role(qpol_policy_t *p) {
+ const qpol_role_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_role_trans_get_default_role(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get default for role_transition rule");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+};
+%inline %{
+ qpol_role_trans_t *qpol_role_trans_from_void(void *x) {
+ return (qpol_role_trans_t*)x;
+ };
+%}
+
+/* qpol range trans */
+typedef struct qpol_range_trans {} qpol_range_trans_t;
+%extend qpol_range_trans_t {
+ qpol_range_trans_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_range_trans_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_range_trans_t() {
+ /* no op */
+ return;
+ };
+ const qpol_type_t *get_source_type (qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_range_trans_get_source_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get source for range_transition rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_type_t *get_target_type (qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_range_trans_get_target_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get target for range_transition rule"); }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_class_t *get_target_class(qpol_policy_t *p) {
+ const qpol_class_t *cls;
+ BEGIN_EXCEPTION
+ if (qpol_range_trans_get_target_class(p, self, &cls)) {
+ SWIG_exception(SWIG_ValueError, "Could not get class for range_transition rule"); }
+ END_EXCEPTION
+ fail:
+ return cls;
+ };
+ const qpol_mls_range_t *get_range(qpol_policy_t *p) {
+ const qpol_mls_range_t *r;
+ BEGIN_EXCEPTION
+ if (qpol_range_trans_get_range(p, self, &r)) {
+ SWIG_exception(SWIG_ValueError, "Could not get range for range_transition rule");
+ }
+ END_EXCEPTION
+ fail:
+ return r;
+ };
+};
+%inline %{
+ qpol_range_trans_t *qpol_range_trans_from_void(void *x) {
+ return (qpol_range_trans_t*)x;
+ };
+%}
+
+/* qpol av rule */
+#define QPOL_RULE_ALLOW 1
+#define QPOL_RULE_NEVERALLOW 128
+#define QPOL_RULE_AUDITALLOW 2
+#define QPOL_RULE_DONTAUDIT 4
+typedef struct qpol_avrule {} qpol_avrule_t;
+%extend qpol_avrule_t {
+ qpol_avrule_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_avrule_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_avrule_t() {
+ /* no op */
+ return;
+ };
+ int get_rule_type(qpol_policy_t *p) {
+ uint32_t rt;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_rule_type(p, self, &rt)) {
+ SWIG_exception(SWIG_ValueError, "Could not get rule type for av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) rt;
+ };
+ const qpol_type_t *get_source_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_source_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get source for av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_type_t *get_target_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_target_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get target for av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_class_t *get_object_class(qpol_policy_t *p) {
+ const qpol_class_t *cls;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_object_class(p, self, &cls)) {
+ SWIG_exception(SWIG_ValueError, "Could not get class for av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return cls;
+ };
+ %newobject get_perm_iter(qpol_policy_t *p);
+ qpol_iterator_t *get_perm_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_perm_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ const qpol_cond_t *get_cond(qpol_policy_t *p) {
+ const qpol_cond_t *c;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_cond(p, self, &c)) {
+ SWIG_exception(SWIG_ValueError, "Could not get conditional for av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return c;
+ };
+ int get_is_enabled(qpol_policy_t *p) {
+ uint32_t e;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_is_enabled(p, self, &e)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine if av rule is enabled");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) e;
+ };
+ int get_which_list(qpol_policy_t *p) {
+ const qpol_cond_t *c;
+ uint32_t which = 0;
+ BEGIN_EXCEPTION
+ qpol_avrule_get_cond(p, self, &c);
+ if (c == NULL) {
+ SWIG_exception(SWIG_TypeError, "Rule is not conditional");
+ } else if (qpol_avrule_get_which_list(p, self, &which)) {
+ SWIG_exception(SWIG_ValueError, "Could not get conditional list for av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) which;
+ };
+ %newobject get_syn_avrule_iter(qpol_policy_t*);
+ qpol_iterator_t *get_syn_avrule_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_avrule_get_syn_avrule_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_avrule_t *qpol_avrule_from_void(void *x) {
+ return (qpol_avrule_t*)x;
+ };
+%}
+
+/* qpol te rule */
+#define QPOL_RULE_TYPE_TRANS 16
+#define QPOL_RULE_TYPE_CHANGE 64
+#define QPOL_RULE_TYPE_MEMBER 32
+typedef struct qpol_terule {} qpol_terule_t;
+%extend qpol_terule_t {
+ qpol_terule_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_terule_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_terule_t() {
+ /* no op */
+ return;
+ };
+ int get_rule_type(qpol_policy_t *p) {
+ uint32_t rt;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_rule_type(p, self, &rt)) {
+ SWIG_exception(SWIG_ValueError, "Could not get rule type for te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) rt;
+ };
+ const qpol_type_t *get_source_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_source_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get source for te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_type_t *get_target_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_target_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get target for te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_class_t *get_object_class(qpol_policy_t *p) {
+ const qpol_class_t *cls;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_object_class(p, self, &cls)) {
+ SWIG_exception(SWIG_ValueError, "Could not get class for te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return cls;
+ };
+ const qpol_type_t *get_default_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_default_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get default for te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ const qpol_cond_t *get_cond(qpol_policy_t *p) {
+ const qpol_cond_t *c;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_cond(p, self, &c)) {
+ SWIG_exception(SWIG_ValueError, "Could not get conditional for te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return c;
+ };
+ int get_is_enabled(qpol_policy_t *p) {
+ uint32_t e;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_is_enabled(p, self, &e)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine if te rule is enabled");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) e;
+ };
+ int get_which_list(qpol_policy_t *p) {
+ const qpol_cond_t *c;
+ uint32_t which = 0;
+ BEGIN_EXCEPTION
+ qpol_terule_get_cond(p, self, &c);
+ if (c == NULL) {
+ SWIG_exception(SWIG_TypeError, "Rule is not conditional");
+ } else if (qpol_terule_get_which_list(p, self, &which)) {
+ SWIG_exception(SWIG_ValueError, "Could not get conditional list for te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) which;
+ };
+ %newobject get_syn_terule_iter(qpol_policy_t*);
+ qpol_iterator_t *get_syn_terule_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_terule_get_syn_terule_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+};
+%inline %{
+ qpol_terule_t *qpol_terule_from_void(void *x) {
+ return (qpol_terule_t*)x;
+ };
+%}
+
+/* qpol conditional */
+typedef struct qpol_cond {} qpol_cond_t;
+%extend qpol_cond_t {
+ qpol_cond_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_cond_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_cond_t() {
+ /* no op */
+ return;
+ };
+ %newobject get_expr_node_iter(qpol_policy_t*);
+ qpol_iterator_t *get_expr_node_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_cond_get_expr_node_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_av_true_iter(qpol_policy_t*, int);
+ qpol_iterator_t *get_av_true_iter(qpol_policy_t *p, int rule_types) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_cond_get_av_true_iter(p, self, rule_types, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_av_false_iter(qpol_policy_t*, int);
+ qpol_iterator_t *get_av_false_iter(qpol_policy_t *p, int rule_types) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_cond_get_av_false_iter(p, self, rule_types, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_te_true_iter(qpol_policy_t*, int);
+ qpol_iterator_t *get_te_true_iter(qpol_policy_t *p, int rule_types) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_cond_get_te_true_iter(p, self, rule_types, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_te_false_iter(qpol_policy_t*, int);
+ qpol_iterator_t *get_te_false_iter(qpol_policy_t *p, int rule_types) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_cond_get_te_false_iter(p, self, rule_types, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ int eval(qpol_policy_t *p) {
+ uint32_t e;
+ BEGIN_EXCEPTION
+ if (qpol_cond_eval(p, self, &e)) {
+ SWIG_exception(SWIG_RuntimeError, "Could not evaluate conditional");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) e;
+ };
+};
+%inline %{
+ qpol_cond_t *qpol_cond_from_void(void *x) {
+ return (qpol_cond_t*)x;
+ };
+%}
+
+/* qpol conditional expression node */
+#define QPOL_COND_EXPR_BOOL 1 /* plain bool */
+#define QPOL_COND_EXPR_NOT 2 /* !bool */
+#define QPOL_COND_EXPR_OR 3 /* bool || bool */
+#define QPOL_COND_EXPR_AND 4 /* bool && bool */
+#define QPOL_COND_EXPR_XOR 5 /* bool ^ bool */
+#define QPOL_COND_EXPR_EQ 6 /* bool == bool */
+#define QPOL_COND_EXPR_NEQ 7 /* bool != bool */
+typedef struct qpol_cond_expr_node {} qpol_cond_expr_node_t;
+%extend qpol_cond_expr_node_t {
+ qpol_cond_expr_node_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_cond_expr_node_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_cond_expr_node_t() {
+ /* no op */
+ return;
+ };
+ int get_expr_type(qpol_policy_t *p) {
+ uint32_t et;
+ BEGIN_EXCEPTION
+ if (qpol_cond_expr_node_get_expr_type(p, self, &et)) {
+ SWIG_exception(SWIG_ValueError, "Could not get node expression type");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) et;
+ };
+ qpol_bool_t *get_bool(qpol_policy_t *p) {
+ uint32_t et;
+ qpol_bool_t *b = NULL;
+ BEGIN_EXCEPTION
+ qpol_cond_expr_node_get_expr_type(p, self, &et);
+ if (et != QPOL_COND_EXPR_BOOL) {
+ SWIG_exception(SWIG_TypeError, "Node does not contain a boolean");
+ } else if (qpol_cond_expr_node_get_bool(p, self, &b)) {
+ SWIG_exception(SWIG_ValueError, "Could not get boolean for node");
+ }
+ END_EXCEPTION
+ fail:
+ return b;
+ };
+};
+%inline %{
+ qpol_cond_expr_node_t *qpol_cond_expr_node_from_void(void *x) {
+ return (qpol_cond_expr_node_t*)x;
+ };
+%}
+
+/* qpol type set */
+typedef struct qpol_type_set {} qpol_type_set_t;
+%extend qpol_type_set_t {
+ qpol_type_set_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_type_set_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_type_set_t() {
+ /* no op */
+ return;
+ };
+ %newobject get_included_types_iter(qpol_policy_t*);
+ qpol_iterator_t *get_included_types_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_type_set_get_included_types_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_subtracted_types_iter(qpol_policy_t*);
+ qpol_iterator_t *get_subtracted_types_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_type_set_get_subtracted_types_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ int get_is_star(qpol_policy_t *p) {
+ uint32_t s;
+ BEGIN_EXCEPTION
+ if (qpol_type_set_get_is_star(p, self, &s)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine if type set contains star");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) s;
+ };
+ int get_is_comp(qpol_policy_t *p) {
+ uint32_t c;
+ BEGIN_EXCEPTION
+ if (qpol_type_set_get_is_comp(p, self, &c)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine if type set is complemented");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) c;
+ };
+};
+%inline %{
+ qpol_type_set_t *qpol_type_set_from_void(void *x) {
+ return (qpol_type_set_t*)x;
+ };
+%}
+
+/* qpol syn av rule */
+typedef struct qpol_syn_avrule {} qpol_syn_avrule_t;
+%extend qpol_syn_avrule_t {
+ qpol_syn_avrule_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_syn_avrule_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_syn_avrule_t() {
+ /* no op */
+ return;
+ };
+ int get_rule_type(qpol_policy_t *p) {
+ uint32_t rt;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_rule_type(p, self, &rt)) {
+ SWIG_exception(SWIG_ValueError, "Could not get rule type for syn av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) rt;
+ };
+ const qpol_type_set_t *get_source_type_set(qpol_policy_t *p) {
+ const qpol_type_set_t *ts;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_source_type_set(p, self, &ts)) {
+ SWIG_exception(SWIG_ValueError, "Could not get source type set for syn av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return ts;
+ };
+ const qpol_type_set_t *get_target_type_set(qpol_policy_t *p) {
+ const qpol_type_set_t *ts;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_target_type_set(p, self, &ts)) {
+ SWIG_exception(SWIG_ValueError, "Could not get target type set for syn av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return ts;
+ };
+ int get_is_target_self(qpol_policy_t *p) {
+ uint32_t i;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_is_target_self(p, self, &i)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine if target is self for syn av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) i;
+ };
+ %newobject get_class_iter(qpol_policy_t*);
+ qpol_iterator_t *get_class_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_class_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ %newobject get_perm_iter(qpol_policy_t*);
+ qpol_iterator_t *get_perm_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_perm_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ long get_lineno(qpol_policy_t *p) {
+ unsigned long l;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_lineno(p, self, &l)) {
+ SWIG_exception(SWIG_ValueError, "Could not get line number for syn av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (long)l;
+ };
+ const qpol_cond_t *get_cond(qpol_policy_t *p) {
+ const qpol_cond_t *c;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_cond(p, self, &c)) {
+ SWIG_exception(SWIG_ValueError, "Could not get conditional for syn av rule");
+ }
+ END_EXCEPTION
+ fail:
+ return c;
+ };
+ int get_is_enabled(qpol_policy_t *p) {
+ uint32_t e;
+ BEGIN_EXCEPTION
+ if (qpol_syn_avrule_get_is_enabled(p, self, &e)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine if syn av rule is enabled");
+ }
+ END_EXCEPTION
+ fail:
+ return e;
+ };
+};
+%inline %{
+ qpol_syn_avrule_t *qpol_syn_avrule_from_void(void *x) {
+ return (qpol_syn_avrule_t*)x;
+ };
+%}
+
+/* qpol syn te rule */
+typedef struct qpol_syn_terule {} qpol_syn_terule_t;
+%extend qpol_syn_terule_t {
+ qpol_syn_terule_t() {
+ BEGIN_EXCEPTION
+ SWIG_exception(SWIG_RuntimeError, "Cannot directly create qpol_syn_terule_t objects");
+ END_EXCEPTION
+ fail:
+ return NULL;
+ };
+ ~qpol_syn_terule_t() {
+ /* no op */
+ return;
+ };
+ int get_rule_type(qpol_policy_t *p) {
+ uint32_t rt;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_rule_type(p, self, &rt)) {
+ SWIG_exception(SWIG_ValueError, "Could not get rule type for syn te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return rt;
+ };
+ const qpol_type_set_t *get_source_type_set(qpol_policy_t *p) {
+ const qpol_type_set_t *ts;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_source_type_set(p, self, &ts)) {
+ SWIG_exception(SWIG_ValueError, "Could not get source type set for syn te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return ts;
+ };
+ const qpol_type_set_t *get_target_type_set(qpol_policy_t *p) {
+ const qpol_type_set_t *ts;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_target_type_set(p, self, &ts)) {
+ SWIG_exception(SWIG_ValueError, "Could not get target type set for syn te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return ts;
+ };
+ %newobject get_class_iter(qpol_policy_t*);
+ qpol_iterator_t *get_class_iter(qpol_policy_t *p) {
+ qpol_iterator_t *iter;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_class_iter(p, self, &iter)) {
+ SWIG_exception(SWIG_MemoryError, "Out of memory");
+ }
+ END_EXCEPTION
+ fail:
+ return iter;
+ };
+ const qpol_type_t *get_default_type(qpol_policy_t *p) {
+ const qpol_type_t *t;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_default_type(p, self, &t)) {
+ SWIG_exception(SWIG_ValueError, "Could not get default type for syn te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return t;
+ };
+ long get_lineno(qpol_policy_t *p) {
+ unsigned long l;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_lineno(p, self, &l)) {
+ SWIG_exception(SWIG_ValueError, "Could not get line number for syn te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return (long)l;
+ };
+ const qpol_cond_t *get_cond(qpol_policy_t *p) {
+ const qpol_cond_t *c;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_cond(p, self, &c)) {
+ SWIG_exception(SWIG_ValueError, "Could not get conditional for syn te rule");
+ }
+ END_EXCEPTION
+ fail:
+ return c;
+ };
+ int get_is_enabled(qpol_policy_t *p) {
+ uint32_t e;
+ BEGIN_EXCEPTION
+ if (qpol_syn_terule_get_is_enabled(p, self, &e)) {
+ SWIG_exception(SWIG_ValueError, "Could not determine if syn te rule is enabled");
+ }
+ END_EXCEPTION
+ fail:
+ return (int) e;
+ };
+};
+%inline %{
+ qpol_syn_terule_t *qpol_syn_terule_from_void(void *x) {
+ return (qpol_syn_terule_t*)x;
+ };
+%}
+// vim:ft=c noexpandtab